2016/03/23

[nrf]SDK v11ではクロックの指定方法が変わった

nRF5 SDK v11.0で、今までのソースをビルドした。
うん、特に困らずビルドできた。

ただ、examples/bspを自分の環境向けに追加していたのだが、v10で動いていた設定をv11にコピーすると、コンパイルエラーが発生した。
見ると、クロックの指定が変わっていた。

今までは、

NRF_CLOCK_LFCLKSRC_XTAL_20_PPM

みたいなマクロを指定していたのだけど、これが構造体になったのだ。

#define NRF_CLOCK_LFCLKSRC  {.source = NRF_CLOCK_LF_SRC_XTAL,            \
                             .rc_ctiv = 0,                               \
                             .rc_temp_ctiv = 0,                          \
                             .xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_20_PPM}

 

構造体は、nrf_clock_lf_cfg_tという型名。
メンバのctivは、Calibration Timer InterValの略らしく、内蔵クロックの場合に使うそうだ。
以前の「4000MS_CALIBRATION」のような部分なのですかね。
単位は、1/4second、ということで、250msec。

temp_ctivは時間じゃなくて、温度を見に行く頻度を示すようだ。
以前の「TEMP_4000MS_CALIBRATION」などですかね。

 

BLEで使う水晶発振子って、どのくらいの精度を求められるんでしょうね?
以前のマクロ名からすると、内蔵の場合は250ppmくらいだから、そんなに高くなくていいのかな。
CentralとPeripheralがどうやって送受信タイミングを計っているのかよくわかってないのだ。
Centralはいざとなれば受信しっぱなしでもいいのかもしれないけど、Peripheralは寝るタイミングがあるはずだから、ある程度の同期はいると思うのですよ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。