BLE 设备地址(BD_ADDR)是 48 位唯一标识,是蓝牙通信的基础,STM32WB 系列 MCU 支持公共地址和随机地址两类,需按应用场景选择类型并规范配置,才能确保蓝牙设备间正常发现、连接与通信。本文基于 LAT1287 应用笔记核心逻辑,拆解 BLE 地址类型、STM32WB 配置方法与避坑要点,助力快速落地合规方案。
资料获取:【应用笔记】BLE设备地址相关简介
1. 核心概述
1.1 BLE 设备地址的核心作用
- 唯一标识:48 位二进制数(12 位十六进制,格式如
AA:BB:CC:DD:EE:FF),确保蓝牙广播、连接时设备互不冲突; - 通信前提:设备广播时携带地址,主从设备通过地址识别和建立连接;
- 合规要求:需符合蓝牙 SIG 规范,公共地址需获得 OUI 授权,随机地址需按规则生成。
1.2 STM32WB 的地址支持特性
- 存储位置:支持存储在 OTP(一次性可编程存储器)或用户 Flash,默认优先读取 OTP 中的地址;
- 配置方式:通过 FUS(固件更新服务)和 BLE 协议栈(STACK)配置,支持动态切换地址类型;
- 兼容性:兼容蓝牙 5.3 及以下版本,支持公共地址、静态随机地址、私有可解析 / 不可解析随机地址。
2. BLE 设备地址类型(按场景选型)
2.1 公共地址(Public Device Address)
- 核心特征:全球唯一,由蓝牙 SIG 分配的 OUI(组织唯一标识符,前 24 位)+ 厂商自定义后 24 位;
- 格式示例:
00:80:E1:XX:XX:XX(ST 的 OUI 为 00:80:E1); - 适用场景:需要全球唯一标识的设备(如商用产品、需接入公共蓝牙生态的设备);
- 关键要求:OUI 需向蓝牙 SIG 申请授权,不可私自篡改前 24 位。
2.2 随机地址(Random Device Address)
无需 OUI 授权,由设备自行生成,分三类,STM32WB 均支持:
- 静态随机地址(Static Random Address):
- 特征:设备上电后生成一次,断电后保持不变,前两位为
11; - 适用场景:无需全球唯一,但需固定标识的设备(如工业内网设备);
- 特征:设备上电后生成一次,断电后保持不变,前两位为
- 私有可解析随机地址(Resolvable Private Address, RPA):
- 特征:基于 IRK(身份解析密钥)生成,定期更新,可被配对设备解析;
- 适用场景:需要隐私保护的设备(如穿戴设备、手机配件);
- 私有不可解析随机地址(Non-Resolvable Private Address, NRPA):
- 特征:完全随机生成,不可解析,前两位为
00; - 适用场景:临时通信、无需身份关联的设备(如一次性传感器)。
- 特征:完全随机生成,不可解析,前两位为
3. STM32WB 配置实操(核心步骤)
3.1 地址存储位置选择
- 优先选择:OTP 区域(地址 0x1FFF7800~0x1FFF7805),出厂可预烧录,掉电不丢失;
- 备选方案:用户 Flash(需自行管理存储,确保掉电保留);
- 读取方法:通过 FUS 指令或直接读取对应存储地址,示例代码:
3.2 类型配置(CubeMX + 代码)
(1)CubeMX 配置
- 打开 STM32CubeMX,配置蓝牙 STACK 为 “Full BLE Stack”;
- 在 “Connectivity→BLE→General Settings” 中选择地址类型(Public/Random);
- 若选随机地址,需配置更新周期(RPA 适用)、IRK 密钥(可解析随机地址适用)。
(2)代码中动态配置
3.3 FUS 与 STACK 配合要求
- 地址配置需在 FUS 启动后、BLE Stack 初始化前完成;
- 若修改 OTP 中的地址,需通过 FUS 指令解锁 OTP 区域,修改后锁定,避免篡改;
- 批量生产时,可通过 STM32CubeProgrammer 批量烧录地址到 OTP。
4. 避坑关键要点
- 地址唯一性:同一蓝牙环境中不可出现重复地址,公共地址需确保 OUI 授权,随机地址需通过算法保证唯一性;
- 隐私合规:消费级设备建议用 RPA(定期更新地址),避免身份泄露;
- 配置时序:必须先配置地址再启动 BLE 广播,否则广播包携带默认地址(可能冲突);
- 低功耗适配:RPA 更新周期不宜过短(建议 10~30 分钟),避免频繁地址切换增加功耗;
- 存储安全:OTP 地址烧录后不可修改,适合量产固定地址;Flash 存储需加校验,防止地址被篡改。
BLE 设备地址的核心是 “类型匹配场景 + 配置合规”:商用产品选公共地址(需 OUI 授权),隐私 / 内网设备选随机地址,STM32WB 需通过 OTP/Flash 存储地址,按 “FUS→地址配置→Stack 初始化→广播” 时序操作,即可确保蓝牙通信正常。
阅读全文
188