在电池供电的物联网设备里,Zigbee 睡眠终端设备(SED) 是低功耗无线方案的核心选型,而 STM32WB 双核无线 MCU 凭借 Cortex‑M4+M0 + 架构、原生 Zigbee 协议栈支持,成为这类设备的理想硬件平台。意法半导体 AN5732 应用笔记,正是面向 STM32WB 系列、专门讲解 Zigbee SED 开发的实战指南,覆盖设备配置、网络行为、轮询机制、保活策略、数据持久化等关键环节,帮开发者避开低功耗与网络稳定性的常见坑点。
资料获取:【应用笔记】AN5732 在 STM32WB 系列上开发 Zigbee®睡眠终端设备
1. 先搞懂:Zigbee 睡眠终端设备到底是什么
Zigbee 睡眠终端设备(SED)属于RFD 精简功能设备,核心特征就两点:
- 绝大多数时间处于深度低功耗模式,无线接收默认关闭(RxOnWhenIdle=false);
- 电池供电,仅在需要采集数据、上报信息或同步网络时短暂唤醒,用完立刻再休眠。
这类设备不组网、不路由,只加入已有网络,所有通信必须通过父设备(协调器 / 路由器,FFD 全功能设备)中转,父设备会为它缓存间接消息,等它主动轮询时下发,完美适配温湿度传感器、门磁、烟感、遥控按键等小数据、长待机场景意法半导体。
2. 第一步:把 STM32WB 配置成标准睡眠终端
开发的起点,是正确配置 Zigbee 启动参数,让设备以 SED 身份入网,这一步直接决定低功耗是否生效。
核心配置三要素
- 关闭空闲接收:清除
MCP_ASSOC_CAP_RXONIDLE标志,无线电休眠时不接收; - 标记为电池供电:清除
MCP_ASSOC_CAP_PWR_SRC,告诉网络自身是电池供电; - 设为精简设备:清除
MCP_ASSOC_CAP_DEV_TYPE,声明为 RFD 非路由设备。
启动类型必须是加入 / 重加入(Join/Rejoin),绝对不能用 Form 自建网络,因为睡眠终端不具备组网能力。
配置完成后,设备就会遵循 SED 规则:休眠→唤醒→轮询父设备→收发数据→立刻休眠,全程最小化功耗。
3. 网络行为核心:数据轮询机制(快慢轮询)
睡眠设备不通话,网络数据全靠轮询获取,AN5732 明确了两种轮询模式,适配不同场景:
3.1 慢速轮询(常态低功耗)
- 间隔由应用自定义,可长达几分钟、几小时甚至一天;
- 轮询后父设备回复 ACK(FP=0 无数据),设备马上回休眠;
- 关键作用:维持网络在线、降低功耗,是 SED 常态工作模式。
3.2 快速轮询(数据接收阶段)
- 间隔<7.68 秒(默认 7.5 秒),设备保持唤醒;
- 触发场景:入网、收 OTA 固件、获取镜像数据、信任中心交互;
- 调用
ZbNwkFastPollRequest()启用,用完必须ZbNwkFastPollRelease()释放,避免耗电。
父设备缓存消息的最长时间是7.68 秒,快速轮询必须小于这个值,才能确保数据不丢失意法半导体。
4. 必做配置:终端设备保活(防老化掉线)
Zigbee 网络会自动清理长期不活跃的子设备,睡眠设备很容易被判定为 “老化” 而踢网,AN5732 给出了标准保活方案:
- 设置超时参数:通过
endDeviceTimeout配置离线超时时间(2ⁿ分钟,n=1~14,最长 16384 分钟); - 自动发送保活包:协议栈每超时时间 / 4就主动发一次终端超时请求,确保父设备保留条目;
- 适配长休眠:休眠间隔超过几分钟的设备,必须正确配置保活,否则会断网离线。
简单说:保活配置 = 睡眠设备不掉网的底线。
5. 实用功能:轮询控制集群(慎用)
轮询控制集群允许网络内其他设备远程控制 SED 快速轮询,适合集中器主动下发配置的场景,但有明显缺陷:
- 外部设备可强制 SED 保持唤醒,快速耗尽电池;
- 电池不可更换的设备,建议直接禁用此功能;
- 启用需初始化服务端、设置长轮询间隔、通过查找绑定建立关联,唤醒时主动发送签到命令意法半导体。
结论:低功耗优先的产品,能不用就不用。
6. 细节决定功耗:ZCL 响应与唤醒持久化
6.1 ZCL 响应处理(缩短唤醒时间)
睡眠设备唤醒后,要尽快回到休眠,ZCL 响应直接影响唤醒时长:
- 无自定义响应的指令,强制开启默认响应,避免等待 10 秒超时;
- 配置
noDefaultResp = ZCL_NO_DEFAULT_RESPONSE_FALSE,成功 / 失败都立刻回复,减少无效等待。
6.2 睡眠唤醒持久化(不掉网络状态)
设备深度休眠后重启,需要快速恢复 Zigbee 上下文,不用重新入网:
- 唤醒调用
ZbStartupPersist()而非ZbStartup(); - 注册持久化回调,把协议栈状态存到 Flash;
- 用
ZB_BDB_PersistTimeoutMs控制存盘频率,延长 Flash 寿命。
这是电池设备断电 / 深睡后快速恢复网络的标准方案。
7. 典型应用流程(照着做就能跑通)
- 硬件初始化:STM32WB 时钟、GPIO、低功耗模式配置;
- Zigbee 参数配置:按 SED 三要素设置能力位,启动模式设为 Join;
- 加入网络:扫描、配对父设备,完成密钥协商;
- 进入主循环:
- 休眠(最低功耗模式);
- 定时 / 事件唤醒;
- 快速轮询收数据、上报采集信息;
- 完成后清标志,立刻回到休眠。
全程遵循:能休眠就不休醒,能快休就不长醒。
8. AN5732 给开发者的关键提醒
- 睡眠终端≠路由器,绝对不要开启路由功能;
- 所有通信必须经过父设备,不能跨节点直连;
- 快速轮询必须成对调用,用完即关,严控唤醒时长;
- 超长休眠设备一定要配置保活,否则会被网络剔除;
- 数据持久化必须做,否则深睡重启要重新入网,功耗暴增。
AN5732 不是通用 Zigbee 教程,而是STM32WB 平台 Zigbee 睡眠终端的专属开发手册,核心就是两件事:
- 用正确配置让设备成为标准 SED,符合 802.15.4 规范;
- 用轮询、保活、持久化三大机制,平衡低功耗与网络稳定。
照着这份笔记做,就能在 STM32WB 上快速落地稳定、低功耗的 Zigbee 电池供电设备,满足智能家居、工业传感、消费电子等各类 SED 场景需求。
1103