在低功耗物联网无线通信领域,Zigbee 凭借稳定的网状组网能力、低功耗特性与标准化互操作接口,始终是家庭自动化、工业传感、智能建筑、无线监测等场景的主流协议之一。意法半导体推出的 STM32WB 双核无线 MCU,原生集成经过认证的 Zigbee 协议栈,将射频、协议处理与应用运算整合在单芯片中,为 IoT 终端开发提供了高集成度的硬件方案。本文基于官方应用笔记 AN5506,系统梳理 Zigbee 核心概念、STM32WB 的协议实现逻辑、应用开发框架与典型功能场景,帮助嵌入式开发者快速搭建基于 STM32WB 的 Zigbee 项目。
资料获取:【应用笔记】在 STM32WB 系列上开始使用 Zigbee®
1. Zigbee 协议核心基础
Zigbee 是基于 IEEE 802.15.4 标准构建的无线个人局域网协议,定位低功耗、低带宽、高可靠的短距通信场景,2.4GHz 频段下物理速率为 250Kbps,典型传输距离 10-20 米,通过多跳路由可扩展网络覆盖范围。
1.1 设备角色与网络类型
Zigbee 网络中有三类逻辑设备,各司其职共同完成组网与数据传输:
- 协调器(ZC):每个集中式网络有且仅有一台,负责启动网络、选择关键参数、准许其他设备入网,建网后同时承担路由功能。
- 路由器(ZR):具备数据收发与路由转发能力,可允许其他节点加入网络,是网状网络的扩展节点,一个网络可包含多台路由器。
- 终端设备(ZED):仅具备基础数据收发能力,无路由功能;其中休眠终端设备(SED)可进入低功耗休眠模式,适配电池供电场景。
从安全架构划分,Zigbee 网络分为两种类型:
- 集中式网络:存在信任中心(通常为协调器),统一负责密钥分发与设备身份校验,安全性更高,是官方示例的默认方案。
- 分布式网络:无专用协调器,任意路由器均可分发网络密钥,组网更灵活但安全等级较低。
网络拓扑支持星型、簇树、网状三种形态,其中网状拓扑可通过多跳实现大范围覆盖,是工业与全屋智能场景的主流选择。此外 Zigbee 还支持 Touchlink 配网功能,两台近距离设备无需预先处于同一网络,即可通过 PAN 间通信完成发现与入网配置。
1.2 协议栈分层架构
Zigbee 协议栈遵循分层设计,在 802.15.4 的物理层(PHY)与介质访问控制层(MAC)之上,扩展了网络层与应用框架:
- 网络层(NWK):负责网络建立、设备入网 / 离网、地址分配、路由发现与数据包转发,协调器与路由器具备完整网络层功能,终端设备仅保留基础收发能力。
- 应用支持子层(APS):承接网络层与应用层,提供绑定管理、群组地址、地址映射、数据包分片重组与可靠传输能力,是实现设备间点对点联动的核心。
- Zigbee 设备对象(ZDO):处理设备管理类功能,包括协议栈初始化、设备发现、服务发现、网络模式配置与安全管理。
- Zigbee 群集库(ZCL):标准化的功能接口集合,将各类设备功能抽象为 “群集”,每个群集包含属性与命令,确保不同厂商设备的互操作性。
- 应用框架:基于客户端 - 服务器模型,开发者通过端点挂载对应群集,实现具体业务功能。
1.3 寻址与通信方式
设备入网前拥有全球唯一的 64 位扩展地址(MAC 地址),入网后分配 16 位网络地址(NWK 地址),两种地址均可用于网络内通信。
通信寻址分为三类:
- 单播通信:包含直接寻址(需指定目标地址、端点、群集 ID)与间接寻址(通过本地绑定表匹配目标),适用于设备间点对点控制。
- 广播通信:向全网设备发送数据,对网络负载影响较大,仅建议必要场景使用。
- 群组通信:将多个设备的指定端点划入同一群组,通过组地址实现一对多控制,是批量设备管理的常用方式。
资料获取:【应用笔记】在 STM32WB 系列上开始使用 Zigbee®
2. STM32WB 的 Zigbee 系统实现
STM32WB 采用双核架构设计,将无线协议处理与应用运算物理隔离,既保证协议栈运行稳定性,也简化了应用开发门槛。
2.1 双核分工与通信机制
- Cortex-M0 + 内核:运行完整的 802.15.4 底层驱动、MAC 层与 Zigbee 协议栈,以二进制固件库形式提供,开发者无需修改源码,相当于 “黑盒” 无线协处理器。
- Cortex-M4 内核:运行用户应用代码、HAL 驱动与 WPAN 中间件,开发者通过标准化 API 调用协议栈功能,聚焦业务逻辑开发。
- 核间通信:两片内核通过专用 IPCC(处理器间通信控制器)通道交互,WPAN 中间件封装了所有通信细节,开发者无需处理底层核间同步。
2.2 支持的协议栈固件
STM32WB55 系列提供两类 Zigbee 固件,均通过 Zigbee PRO 2017 认证,开发者可根据设备角色选择:
- 独立 Zigbee 固件:分为 FFD 全功能版本与 RFD 精简功能版本。FFD 可胜任协调器、路由器、终端设备任意角色;RFD 仅支持终端设备,固件体积更小,是休眠终端设备的必选固件。
- BLE+Zigbee 并发固件:支持静态分时并发模式,BLE 与 Zigbee 协议分时运行,停止其中一个协议即可切换到另一个,适用于需要多协议复合的场景,比如蓝牙配网 + Zigbee 运行。
2.3 原生群集生态
STM32WB 的 Zigbee 生态兼容 Zigbee 3.0 与 ZCL 7 规范,内置 47 个标准群集,覆盖基础服务、照明控制、环境传感、安防、智能能源、门锁控制等主流场景,通过 STM32_WPAN 中间件统一调用。对于定制化需求,开发者也可自行定义私有群集,扩展设备专属功能。
3. STM32WB Zigbee 应用开发框架
官方固件包中的 Zigbee 示例采用统一工程框架,开发者可基于模板快速扩展功能,核心逻辑集中在应用层文件中。
3.1 工程结构与核心文件
所有 Zigbee 示例工程结构一致,底层通用框架负责时钟、中断、低功耗、IPCC 封装、日志输出等基础能力,Zigbee 业务逻辑全部集中在app_zigbee.c与对应头文件中。开发者无需改动底层框架,仅需在应用层完成端点配置、回调函数与业务逻辑即可。
3.2 应用开发核心流程
完整的 Zigbee 应用开发分为三个核心阶段:
- 协议栈与端点初始化:启动时完成 Zigbee 协议栈初始化,随后配置端点参数,包括所属 Profile、设备 ID、挂载的输入 / 输出群集,以及群集命令对应的回调函数,实现 “收到命令触发对应业务动作” 的逻辑。
- 网络启动管理:协调器设备执行建网流程,选择信道与 PAN ID;路由器 / 终端设备执行入网流程。网络启动由专用任务管理,入网成功后可通过 LED 等方式指示,入网失败会自动重试。
- 业务逻辑实现:网络就绪后,应用层即可处理本地事件与远程 ZCL 命令。需要注意的是,协议栈命令通过 IPCC 下发,应借助调度器事件机制串行处理命令,避免连续调用导致核间死锁。
3.3 网络启动的三种模式
根据安全与持久化需求,网络启动支持三类方案:
- 普通启动:每次上电重新建网 / 入网,适合调试与简单场景。
- 持久化启动:将网络参数与协议栈状态存入非易失性存储器,掉电重启后自动恢复网络连接,无需重新入网,是量产产品的常用方案。
- CBKE 证书启动:基于证书的密钥交换机制,入网时完成完整证书校验,安全性最高,适用于对安全等级要求高的工业与商用场景。
3.4 调试与日志跟踪
协议栈运行日志与应用日志均由 M4 内核统一管理,通过 UART 串口输出,默认波特率 115200,开发者可通过 STLink 虚拟串口连接上位机查看运行状态,快速定位入网失败、命令异常等问题。
4. 典型应用场景与官方示例
STM32WB 固件包提供了覆盖各类功能的示例工程,开发者可直接基于示例二次开发。
4.1 基础开关控制示例
Zigbee_OnOff系列是入门首选示例,实现了最经典的开关控制功能,分为集中式、分布式、休眠终端、持久化等多个变体。开发者可通过两块开发板,分别烧录协调器服务端与路由器客户端,快速验证 Zigbee 建网、入网与 ZCL 命令交互的完整流程。
4.2 休眠终端设备
针对电池供电的低功耗节点,官方提供了基于 RFD 固件的 SED 示例,终端设备加入网络后以秒级周期唤醒并发送数据,空闲时进入 STOP2 低功耗模式,待机电流可低至 3μA,大幅延长电池续航。
4.3 Zigbee FUOTA 空中升级
基于 OTA 升级群集,STM32WB 支持通过 Zigbee 网络远程升级设备固件,既可以升级 M4 内核的应用固件,也可以升级 M0 内核的无线协处理器固件。升级流程包含镜像通知、镜像查询、块传输、校验、重启升级几个阶段,服务端统一管理固件镜像,客户端分批接收并写入 Flash,校验通过后完成更新。
4.4 配网与 Touchlink
配网示例展示了设备间的调试配置流程,支持近距离设备通过 PAN 间通信完成网络参数同步,实现快速入网。Touchlink 功能则进一步简化了设备发现与配对流程,适合消费级产品的开箱配置。
4.5 BLE+Zigbee 静态并发
静态并发示例演示了单芯片在 BLE 与 Zigbee 间切换的能力,设备可先通过蓝牙完成配网、数据交互,蓝牙连接断开后自动切换到 Zigbee 网络运行,兼顾了配置便捷性与组网稳定性。
整体而言,STM32WB 通过双核隔离的架构设计,将复杂的无线协议栈封装为标准化 API,大幅降低了 Zigbee 开发的技术门槛。入门开发建议从 OnOff 基础示例入手,先跑通建网、入网、命令收发的完整链路,再根据产品需求逐步扩展低功耗、持久化、OTA 升级等功能,可高效落地各类智能传感与控制终端产品。
426