1120050_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1120050_zh-CN

1120050_zh-CN

更改线程低功耗终端设备 (KW41Z) 上的轮询时间<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Thread 低功耗终端设备已预先配置为 MCU 处于低功耗状态,并且无线电大部分时间处于关闭状态,以延长电池寿命。该设备定期唤醒并轮询其父路由器以获取发送给它的数据,或者可选地通过父路由器启动向网络发送数据。

连接框架中的低功耗模块 (LPM) 简化了将基于 Kinetis 的无线网络节点置于低功耗或睡眠模式的过程。对于MKW41Z ,有六种低功耗模式可用。

默认情况下,Thread 低功耗终端设备使用深度睡眠模式 3,其中:

  • MCU 处于 LLS3 模式。
  • 链路层保持空闲。
  • RAM 被保留。

唤醒源包括:

  • GPIO(按钮)。
  • DCDC 电源开关(降压模式)。
  • LPTMR以32kHz振荡器作为时钟源。

LPTMR 定时器还用于测量 MCU 处于深度睡眠的时间,以便在唤醒时同步低功耗定时器。有关深度睡眠模式的更多信息,请参阅连接框架参考手册和PWR_Configuration.h

要更改深度睡眠模式 3 上的轮询时间,我们需要了解两个宏:

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 毫秒唤醒一次,但每 2 次深度睡眠超时 = 6000 毫秒发送一次轮询消息,因为 MCU 唤醒时计时器是同步的。下图显示了此示例的行为。

pastedImage_45.png

建议轮询间隔与深度睡眠持续时间相同,这样 MCU 就不会不必要地唤醒。下图显示了这种行为。

pastedImage_49.png

要记住的另一个宏是 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秒。建议保留该宏的原样。该值在调试期间发送给父节点。

KW41Z31Z21ZThread 软件回复:更改线程低功耗终端设备(KW41Z)上的轮询时间<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

谢谢,说明是正确的,这是我的错误。我修改了 THR_SED_POLLING_INTERVAL_MS 的定义,即 app_thread_config.h。

回复:更改线程低功耗终端设备(KW41Z)上的轮询时间<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好,马修,

这两个宏是您对项目所做的唯一更改吗?我刚刚通过将两个宏都更改为 5000 毫秒来测试您的用例,并且每 5 秒正确发送一次轮询。

在最新的MCUXpresso SDK上, THR_SED_POLLING_INTERVAL_MS宏位于\source\config.h中。

此致,

Gerardo

回复:更改线程低功耗终端设备(KW41Z)上的轮询时间<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

使用示例项目 frdmkw41z_wireless_examples_thread_low_power_end_device_freertos,我能够成功构建运行并将设备连接到混合 ble 线程路由器。然后我测量了电流消耗以验证传输频率,并且正如预期的那样默认设置为 3000ms。然后我按照描述修改了两个定义并将它们更改为 5000 毫秒。然而,当我重新测试功率消耗时,我仍然看到每 3000 毫秒出现一次电流峰值,而不是我预期的 5000 毫秒。我还遗漏了什么吗?

Tags (1)
No ratings
Version history
Last update:
‎01-05-2026 06:13 AM
Updated by: