AN5270 应用手册是 STM32WB 系列微控制器低功耗蓝牙(BLE)无线接口的核心开发参考,系统定义了全栈 ACI/HCI 指令集、事件响应机制、错误处理规则及功率配置方案,适配 LO/BO/PO/BF/LB 多 BLE 协议栈,为医疗健康、智能家居、工业传感等场景的无线应用开发提供完整技术支撑。
资料获取:STM32WB蓝牙低功耗无线接口的应用手册
1. 手册核心定位与适用范围
- 适配对象:基于 Arm® 核心的 STM32WB 系列 MCU,兼容低功耗蓝牙核心规范 V5.3,支持 Link layer only、Beacon only 等 5 种专用协议栈。
- 核心价值:整合从底层射频控制到上层应用交互的全链路指令与事件,明确参数格式、适用场景及执行逻辑,降低 BLE 开发门槛。
- 关键特性:覆盖连接管理、设备发现、数据传输、安全配对、功率调节等核心场景,提供标准化错误排查与调试方案。
2. 核心指令体系:分层设计与功能覆盖
手册按功能分层定义 6 大类核心指令,每类指令均明确操作码、协议栈适配性及参数规范,关键分类如下:
2.1 HCI 基础指令(含 LE 扩展)
- 核心功能:负责 BLE 链路层核心操作,涵盖连接管理、广播控制、数据传输、安全加密等。
- 关键指令示例:
- HCI_DISCONNECT(0x0406):终止现有连接,需指定连接句柄与断开原因。
- HCI_LE_SET_ADVERTISING_PARAMETERS(0x2006):配置广播间隔、类型、通道映射等核心参数。
- HCI_LE_CREATE_CONNECTION(0x200D):发起 BLE 连接,支持白名单过滤与连接参数配置。
2.2 测试与 HAL 指令
- 测试指令:HCI_LE_RECEIVER_TEST(0x201D)、HCI_LE_TRANSMITTER_TEST(0x201E)等,用于射频性能验证。
- HAL 指令:聚焦硬件控制与系统管理,如 ACI_HAL_SET_TX_POWER_LEVEL(0xFC0F)调节发射功率,ACI_HAL_READ_CONFIG_DATA(0xFC0D)读取底层配置数据。
2.3 应用层核心指令(GAP/GATT/L2CAP)
- GAP 指令:负责设备发现、配对与连接管理,如 ACI_GAP_SET_DISCOVERABLE(0xFC83)设置设备可发现模式,ACI_GAP_SEND_PAIRING_REQ(0xFC9F)发起安全配对。
- GATT/ATT 指令:处理属性服务交互,如 ACI_GATT_ADD_SERVICE(0xFD02)创建 GATT 服务,ACI_GATT_READ_CHAR_VALUE(0xFD18)读取特征值。
- L2CAP 指令:管理逻辑链路数据传输,如 ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_REQ(0xFD81)更新连接参数,支持基于信用的流量控制。
3. 事件响应机制:指令执行的反馈保障
4. 关键辅助信息:开发调试核心支撑
4.1 状态错误代码
- 涵盖 0x00~0x98 共数十种错误类型,包括 “成功(0x00)”“连接超时(0x08)”“资源不足(0x64)”“加密密钥不足(0x5F)” 等,为指令执行故障排查提供明确依据。
- 区分 HCI 指令与 ACI 指令专属错误码,适配不同层级问题定位。
4.2 发送功率配置
- 通过 PA_Level 参数控制输出功率,范围从 - 40 dBm 到 + 6 dBm(共 32 级),如 PA_Level=0x1F 对应 + 6 dBm,可根据应用场景调节通信范围与功耗平衡。
5. 应用适配场景:全领域无线赋能
手册指令体系与事件机制深度适配 STM32WB 的低功耗特性,支撑多场景开发:
- 健康医疗:通过 GATT 指令实现心率、血氧等数据的安全传输,HAL 功率调节适配穿戴设备长续航需求。
- 智能家居:借助 GAP 广播 / 扫描指令实现设备快速发现,L2CAP 连接参数更新适配家庭复杂环境通信稳定性。
- 工业传感:利用 HCI 底层指令优化射频性能,错误代码快速定位无线链路故障,保障数据传输可靠性。
- 信标应用:BO 协议栈适配的广播指令(如 HCI_LE_SET_ADVERTISING_DATA),支撑低功耗信标数据广播。
6. STM32WB BLE 核心指令 - 事件对应表(按应用场景分类)
下表基于 AN5270 应用手册,按 “连接管理、数据传输、安全配对、广播与扫描、功率与配置” 五大核心应用场景,梳理关键 ACI/HCI 指令与对应反馈事件,明确指令操作码、适用协议栈及事件作用,助力开发中快速匹配指令执行与结果反馈逻辑。
| 应用场景 | 指令名称 | 指令操作码 | 适用协议栈(LO/PO/BO/BF/LB) | 核心功能 | 对应事件名称 | 事件操作码 | 事件作用 |
|---|---|---|---|---|---|---|---|
| 连接管理 | HCI_LE_CREATE_CONNECTION | 0x200D | Y/-/-/-/Y | 发起 LE 连接,配置扫描间隔、连接间隔、白名单过滤等参数 | HCI_LE_CONNECTION_COMPLETE_EVENT | 0x01(LE 元事件) | 反馈连接建立成功 / 失败,返回连接句柄、角色、对端地址等信息 |
| HCI_DISCONNECT | 0x0406 | Y/Y/-/Y/Y | 终止现有 ACL/LE 连接,指定连接句柄与断开原因(如验证失败、资源不足) | HCI_DISCONNECTION_COMPLETE_EVENT | 0x05(HCI 事件) | 反馈连接断开结果,返回断开原因代码(如 0x13 = 远程用户终止) | |
| HCI_LE_CONNECTION_UPDATE | 0x2013 | Y/-/-/Y/Y | (主设备侧)修改现有连接的连接间隔、从设备延迟、监控超时等参数 | HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT | 0x03(LE 元事件) | 反馈连接参数更新成功 / 失败,返回新的连接间隔与延迟值 | |
| ACI_GAP_TERMINATE | 0xFC93 | Y/Y/-/Y/Y | 终止 GAP 层连接,支持指定断开原因(如连接参数不可接受) | HCI_DISCONNECTION_COMPLETE_EVENT | 0x05(HCI 事件) | 同步反馈 GAP 层触发的连接断开结果 | |
| 数据传输 | ACI_GATT_UPDATE_CHAR_VALUE | 0xFD06 | -/Y/-/Y/- | 更新 GATT 特征值,启用通知 / 指示时自动向客户端发送数据 | ACI_GATT_NOTIFICATION_EVENT | 0x4000(GATT 事件) | 反馈特征值通知已发送,或指示客户端接收状态 |
| ACI_L2CAP_COC_TX_DATA | 0xFD8E | -/-/-/-/- | 在 L2CAP 面向连接通道上发送 K 帧数据,支持流量控制 | ACI_L2CAP_COC_TX_DATA_EVENT | - | 反馈数据发送成功 / 失败,指示通道信用值更新 | |
| HCI_HOST_NUMBER_OF_COMPLETED_PACKETS | 0x0C35 | Y/-/-/-/Y | 主机向控制器报告已完成处理的 HCI 数据包数量,释放缓冲区空间 | HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT | 0x13(HCI 事件) | 控制器确认缓冲区释放,返回可继续接收的数据包数量 | |
| 安全配对 | HCI_LE_ENABLE_ENCRYPTION | 0x2019 | Y/-/-/-/Y | 验证长期密钥(LTK)并加密连接,仅主设备侧支持 | HCI_ENCRYPTION_CHANGE_EVENT | 0x08(HCI 事件) | 反馈加密状态变更,指示加密开启(0x01)或关闭(0x00) |
| ACI_GAP_SEND_PAIRING_REQ | 0xFC9F | -/Y/-/Y/- | 发起 SM 配对请求,支持强制重新绑定(Force_Rebond=0x01) | ACI_GAP_PAIRING_COMPLETE_EVENT | 0x02(GAP 事件) | 反馈配对完成状态,返回配对成功 / 失败代码(如 0x00 = 成功,0x05 = 验证失败) | |
| HCI_LE_LONG_TERM_KEY_REQUEST_REPLY | 0x201A | Y/-/-/-/Y | 响应控制器的长期密钥请求,提供 LTK 参数 | HCI_COMMAND_COMPLETE_EVENT | 0x0E(HCI 事件) | 确认密钥已提交,反馈指令执行状态 | |
| 广播与扫描 | HCI_LE_SET_ADVERTISING_ENABLE | 0x200A | Y/-/Y/-/Y | 启用 / 禁用广播功能,基于 HCI_LE_SET_ADVERTISING_PARAMETERS 配置 | HCI_LE_ADVERTISING_REPORT_EVENT | 0x02(LE 元事件) | 反馈广播状态变更,或扫描到的广播设备信息(地址、数据、RSSI) |
| HCI_LE_SET_SCAN_ENABLE | 0x200C | Y/-/Y/-/Y | 启用 / 禁用扫描(被动 / 主动),配置重复过滤(Filter_Duplicates) | HCI_LE_ADVERTISING_REPORT_EVENT | 0x02(LE 元事件) | 返回扫描到的广播报告(事件类型、设备地址、广播数据、RSSI) | |
| ACI_GAP_SET_DISCOVERABLE | 0xFC83 | Y/Y/-/Y/Y | 设置设备为一般可发现模式,配置广播间隔、本地名称、服务 UUID 列表 | HCI_COMMAND_COMPLETE_EVENT | 0x0E(HCI 事件) | 确认可发现模式启用,反馈指令执行结果(如 0x00 = 成功) | |
| 五、功率与配置 | ACI_HAL_SET_TX_POWER_LEVEL | 0xFC0F | Y/Y/Y/Y/Y | 调节发射功率,PA_Level 参数范围 - 40 dBm(0x00)至 + 6 dBm(0x1F) | HCI_COMMAND_COMPLETE_EVENT | 0x0E(HCI 事件) | 确认功率设置生效,反馈当前 PA_Level 对应的实际输出功率 |
| HCI_LE_READ_TRANSMIT_POWER | 0x204B | Y/-/Y/-/Y | 读取控制器支持的最大 / 最小发射功率范围 | HCI_COMMAND_COMPLETE_EVENT | 0x0E(HCI 事件) | 返回 Min_TX_Power 与 Max_TX_Power(单位 dBm,范围 - 127~20) | |
| ACI_HAL_READ_CONFIG_DATA | 0xFC0D | Y/Y/Y/Y/Y | 读取底层配置数据(如蓝牙公共地址、加密根密钥 IRK) | HCI_COMMAND_COMPLETE_EVENT | 0x0E(HCI 事件) | 返回配置数据(如地址长度 6 字节、IRK 长度 16 字节) |
关键说明
- 事件反馈核心作用:所有指令均通过事件返回执行结果,其中
HCI_COMMAND_COMPLETE_EVENT(0x0E)为通用指令完成反馈,专属事件(如HCI_LE_CONNECTION_COMPLETE_EVENT)则提供场景化详细参数(如连接句柄、RSSI)。 - 协议栈适配注意:标记 “Y” 表示指令支持对应协议栈(LO = 链路层仅模式、BO = 信标仅模式、PO = 从机仅模式、BF = 基础功能模式、LB = 基础链路层模式),开发时需根据实际使用的协议栈选择指令。
- 错误排查依据:所有事件均包含
Status参数(1 字节),0x00 表示成功,非 0 值为错误代码(如 0x08 = 连接超时、0x64 = 资源不足),可结合手册 “错误代码表” 定位问题。
AN5270 应用手册以 “指令 - 事件 - 错误” 三维体系为核心,为 STM32WB 低功耗蓝牙接口提供了标准化、全场景的开发指南。其分层设计的指令集适配不同协议栈需求,明确的参数规范与反馈机制降低了无线开发复杂度,是实现高可靠、低功耗 BLE 应用的关键技术参考。
阅读全文
1300