Thread Low Power End Deviceは、MCUが低電力状態にあり、バッテリ寿命を維持するためにほとんどの時間無線がオフになるように事前構成されています。デバイスは定期的にウェイクアップし、親ルーターをポーリングして宛先のデータを取得するか、オプションで親ルーターを使用してネットワークへのデータ送信を開始します。
コネクティビティフレームワークの低電力モジュール (LPM) は、Kinetisベースのワイヤレスネットワークノードを低電力モードまたはスリープモードにするプロセスを簡素化します。MKW41Zには、6つの低電力モードがあります。
デフォルトでは、Thread Low Power End Deviceはディープスリープモード3を使用します。
ウェイクアップ ソースは次のとおりです。
LPTMRタイマは、MCUがディープスリープで過ごす時間を測定し、ウェイクアップ時に低電力タイマを同期させるためにも使用されます。スリープ ディープ モードの詳細については、Connectivity Framework リファレンス マニュアルと PWR_Configuration.h を参照してください。
ディープスリープモード3でポーリング時間を変更するには、2つのマクロを理解する必要があります。
1.\framework\LowPower\Interface\MKW41Z \ PWR_Configuration.h の cPWR_DeepSleepDurationMs マクロ
#ifndef cPWR_DeepSleepDurationMs
#define cPWR_DeepSleepDurationMs 3000
#endif
このマクロは、MCUが低電力モード(ディープスリープ)に移行する時間を決定します。最大値は 65535000 ミリ秒 (18.2 時間) です。
2. \source\config.h の THR_SED_POLLING_INTERVAL_MS マクロ。
/*! The default value for sleepy end device (SED) polling interval */
#ifndef THR_SED_POLLING_INTERVAL_MS
#define THR_SED_POLLING_INTERVAL_MS 3000 /* Milliseconds */
#endif
このマクロは、低電力エンド デバイスが親にポーリング メッセージを送信する頻度を決定します。
手記: この値は、MCUがウェイクアップする頻度を決定するものではありません。
ポーリング間隔は [ディープ スリープ期間] の値の倍数にする必要があり、そうでない場合は、ポーリングは次のディープ スリープ タイムアウトに送信されます。
例として、ポーリング間隔を 4000 ミリ秒に、ディープ スリープ時間を 3000 ミリ秒に設定したとします。MCUは3000ミリ秒ごとにウェイクアップしますが、MCUがウェイクアップするとタイマーが同期されるため、ポーリングメッセージは2ディープスリープタイムアウト= 6000ミリ秒ごとに送信されます。次の図は、この例の動作を示しています。
ポーリング間隔はディープスリープ時間と同じにして、MCUが不必要にウェイクアップしないようにすることをお勧めします。次の図は、この動作を示しています。
覚えておくべき別のマクロは、 app_thread_config.h の THR_SED_TIMEOUT_PERIOD_SEC です。
#ifndef THR_SED_TIMEOUT_PERIOD_SEC
#define THR_SED_TIMEOUT_PERIOD_SEC ((4*THR_SED_POLLING_INTERVAL_MS)/1000 + 3)
#endif
この値は、親がスリープ状態のエンドデバイス(SED)が切断されたと見なすために使用するタイムアウト期間です。デフォルトでは、この値はポーリング間隔の 4 倍 + 3 秒に設定されています。このマクロはそのままにしておくことをお勧めします。この値は、コミッショニング中に親ノードに送信されます。
ありがとう、指示は正しいです、それは私の間違いでした。THR_SED_POLLING_INTERVAL_MS is app_thread_config.h の定義を変更しました。
こんにちは、マシュー。
この 2 つのマクロだけが、プロジェクトに加えた変更だったのですか?私はちょうど両方のマクロを5000ミリ秒に変更してあなたのユースケースをテストしました、そしてポーリングは5秒ごとに正しく送信されます。
最新の MCUXpresso SDK では、 THR_SED_POLLING_INTERVAL_MS マクロは \source\config.h にあります。
よろしくお願いします。
Gerardo
frdmkw41z_wireless_examples_thread_low_power_end_device_freertos例のプロジェクトを使用して、デバイスをビルド、実行、およびハイブリッド ble スレッド ルーターに接続することに成功しました。次に、電流引き込みを測定して送信周波数を確認しましたが、予想どおり、デフォルトでは3000msに設定されています。次に、説明されているように 2 つの定義を変更し、5000 ミリ秒に変更しました。しかし、消費電力を再テストしたところ、予想していた5000msではなく、3000msごとに電流が急上昇し続けました。他に足りないものはありますか?