AN5289 是意法半导体面向STM32WB 系列双核无线 MCU发布的完整版开发手册,覆盖 BLE、Thread、Zigbee、802.15.4 MAC 四大协议,从双核架构、核间通信、调度器、低功耗、Flash 安全、FUOTA 升级到协议栈实操,给出可直接落地的工程流程与避坑要点,是量产级无线设备开发的必备手册STMicroelectronics。
1. STM32WB 双核架构与核心优势
STM32WB 采用Cortex‑M4(应用核)+Cortex‑M0+(无线核) 分离架构,彻底解耦业务与射频,稳定性与功耗双优:
- CPU1(M4):跑用户应用、外设驱动、业务逻辑、OTA 逻辑、调度任务
- CPU2(M0+):专跑 BLE/Thread/Zigbee 协议栈、射频 PHY/MAC、实时时序处理
- 通信方式:IPCC 邮箱 + 硬件信号量 HSEM,共享 SRAM2 交互数据,无冲突、不丢帧
- 支持协议:BLE 5.x、Thread、Zigbee、802.15.4 MAC,支持 BLE+Thread 静态 / 动态并发
2. 软件架构与关键组件(必掌握)
AN5289 把整个软件栈拆为清晰分层,开发按层对接即可:
- 应用层:用户业务、传感器、LED、按键、逻辑控制
- 中间件:GATT 服务、ZCL 集群、CoAP、调度器、定时器服务器
- 传输层:ACI/HCI 接口、TL 传输层、IPCC 邮箱驱动
- 无线核固件:CPU2 二进制栈(BLE/Thread/Zigbee/MAC)
- 硬件层:射频、时钟、电源、GPIO、匹配电路、PCB 天线
必用四大系统组件
- 调度器 UTIL_SEQ:后台任务管理,无任务时自动进低功耗,最多 32 任务
- 定时器服务器 HW_TS:基于 RTC 虚拟定时器,休眠仍计时,支持 255 路定时
- 低功耗管理器 UTIL_LPM:统一管理 Stop/Standby,多模块请求自动算最低功耗
- 硬件信号量 Sem0~Sem9:保护 Flash、RNG、PKA、RCC 等共享资源,防双核冲突意法半导体
3. 存储器映射与安全规则(量产关键)
Flash 与 SRAM 分用户区与安全区,由选项字节 SFSA/SBRSA/SNBRSA 划分STMicroelectronics:
- Flash:用户代码存在低地址,CPU2 协议栈与安全区域靠上,禁止越界写
- SRAM1:通用内存,BLE OTA 需保留前 32 字节
- SRAM2a/2b:安全区存协议栈持久化、绑定表、密钥,用户不可随意改写
- 规则:写 Flash 必须拿 Sem2/Sem6/Sem7,擦除前通知 CPU2,射频活动时禁止长时间擦除
4. BLE 开发全流程(从 0 到上线)
AN5289 给出标准 BLE 开发五步走,直接照做就能通:
- 系统初始化:时钟、电源、IPCC、调度器、定时器、低功耗
- GAP 初始化:设设备名、发射功率、IO 能力、认证要求
- 广播配置:可连接 / 可发现模式,厂商自定义广播数据
- GATT 服务搭建:添加服务、特征、描述符,配置读写 / 通知
- 连接与安全:配对绑定、隐私地址、2M PHY、连接参数更新
重点 API:
SHCI_C2_BLE_Init():启动 CPU2 BLE 栈
aci_gap_set_discovera<a class="article-link" target="_blank" href="https://www.eefocus.com/tag/ble/">ble</a>():开启广播
aci_gatt_add_service/char:建服务特征
aci_gatt_update_char_value:发通知
HCI_LE_Set_Phy:切 2Mbps 高速率STMicroelectronics
5. Thread & Zigbee 开发要点
Thread 开发
- 烧录对应 FTD/MTD 固件,otInstance 传 NULL
- 配网→加网→CoAP 通信→低功耗 SED 模式
- 持久化:
SHCI_C2_FLASH_StoreData保存网络信息
- 低功耗:
SHCI_C2_RADIO_AllowLowPower控射频休眠STMicroelectronics
Zigbee 开发
- 睡眠终端 SED:
RxOnWhenIdle=false,快慢轮询保活
- 轮询控制集群:可控快速轮询,电池设备建议关闭
- 保活机制:
endDeviceTimeout防老化踢网
- 唤醒恢复:
ZbStartupPersist()快速恢复网络,不用重入网
6. 低功耗设计实战(电池设备必看)
STM32WB 最低可到nA 级待机,AN5289 给出硬核配置:
- 用Stop2 模式,射频可保持运行,最深低功耗
- 无任务时调度器自动休眠,RTC 定时唤醒
- 关闭不用时钟、GPIO 模拟态、关闭 JTAG
- 快速轮询用完立刻释放,减少唤醒时间
- 共享资源用完即释放,不让 CPU2 阻塞低功耗
- BLE 连接间隔拉大、Zigbee 轮询间隔按需拉长
7. FUOTA 无线升级(BLE+Thread 双支持)
AN5289 详解两套 OTA 方案,量产直接用:
BLE FUOTA
- 专用 GATT 服务:基址、文件数据、重启确认
- 分区:Boot 固定在前 6 扇区,应用从 0x08007000 开始
- 流程:重启进 OTA→下载→校验→重启跳转→掉电保护STMicroelectronics
Thread FUOTA
- 基于 CoAP 传输,分片下发,Magic 关键字校验
- 支持更新 CPU1 应用与 CPU2 无线固件
- 客户端写入 Flash,完成后自动重启应用
8. 核间通信与共享资源(避坑 90% 问题)
双核交互全靠IPCC 邮箱 + 信号量,规则必须遵守:
- 命令 / 事件异步处理,中断不做耗时操作
- 发 BLE / 系统命令要等应答,流控不违反
- 共享外设必须先拿信号量再访问,用完释放
- Flash 写擦除:临界区 + 信号量 + 通知 CPU2,时序不影响射频
- 事件队列满时用
shci_resume_flow/hci_resume_flow恢复流控
9. 实测开发流程(复制即用)
- 新建工程,选 STM32WB,开启 BLE/Thread/Zigbee
- 初始化硬件:时钟、GPIO、RTC、UART、低功耗
- 初始化系统:调度器、定时器、LPM、IPCC
- 启动 CPU2,加载对应无线固件
- 启动协议栈,配置广播 / 网络
- 注册事件回调,跑调度器主循环
- 业务逻辑:定时采集、数据上报、指令处理
- 低功耗与 OTA 接入,完成量产
这本手册不只是说明,而是STM32WB 无线开发的工程法典:
- 讲清双核协作、资源安全、低功耗、OTA、协议栈全链路
- 给出 API、时序、信号量、临界区、Flash 操作的标准答案
- 覆盖 BLE/Thread/Zigbee/MAC,支持并发与多产品形态
无论是传感器、遥控器、门锁、智能家居还是工业节点,按 AN5289 开发,一次成功、稳定量产、功耗达标。 |