1. 蓝牙广播包基础解析
在蓝牙低功耗(BLE)通信中,广播包是最基础也是最重要的通信机制之一。传统广播包工作在37、38、39这三个固定的广播信道上,以周期性广播的方式传输数据。这种设计简单直接,每个广播事件都会在这三个信道上依次发送相同的广播数据,接收设备只需要在这三个信道上监听就能捕获广播信息。
但传统广播机制存在几个明显的局限性:
- 数据容量有限:单个广播包最大只能承载31字节的有效载荷
- 信道利用率低:每次广播必须在三个固定信道上重复发送
- 缺乏灵活性:无法根据环境动态调整广播策略
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 扩展广播包的架构设计
蓝牙5.0引入的扩展广播(Extended Advertising)机制通过分层设计解决了这些问题。扩展广播系统由三种关键包类型构成一个有机整体:
2.1 ADV_EXT_IND:扩展广播的"目录索引"
作为扩展广播系统的"目录页",ADV_EXT_IND包含以下核心字段:
- AdvA:6字节广播设备地址,标识广播源
- ADI:广播数据信息,包含:
- SID(Set ID):主机分配给控制器的多广播集标识
- DID(Data ID):数据版本标识,用于判断数据是否更新
- AuxPtr:辅助指针,采用三级定位机制:
- Channel Index:指示辅助包使用的射频信道
- PHY:物理层类型(1M/2M/CODED)
- Timing Offset:精确到微秒级的时间偏移量
实际工程中,AuxPtr的offset计算需要特别注意:真实辅助包的出现时间窗口为[offset, offset+offset_unit],接收机必须在这个时间范围内完成扫描。
2.2 AUX_ADV_IND:数据承载主体
作为真正的数据载体,AUX_ADV_IND具有以下特点:
- 去重设计:不再包含AdvA字段,通过ADV_EXT_IND的AuxPtr关联
- 大容量:支持最大254字节的Advertising Data字段
- 同步信息:包含关键的SyncInfo字段,用于定位后续的AUX_SYNC_IND
SyncInfo的解码需要三个关键参数:
- Access Address:接入地址
- CRC Initial Seed
