第2篇:BLE 广播与扫描机制详解 ble广播间隔
这篇文章小编将是《BLE 协议从入门到专家》专栏第二篇,专注于解析 BLE 广播(Advertising)与扫描(Scanning)机制。我们将从协议层结构、广播包格式、设备发现流程、控制器行为、开发者 API、广播冲突与多设备调度等方面,全面拆解这一 BLE 最基础也是最关键的通信机制。
一、 何是 BLE 广播?
BLE 广播(Advertising)是 BLE 设备被发现和发起通信的入口,它允许设备周期性在特定信道上广播消息。
广播的核心目标:
被其他设备扫描发现
提供配对或连接服务
进行连接前通信(如 iBeacon 定位、温湿度广播)
甚至可用于无需连接的数据交互(如资产定位)
广播为 BLE 设计的关键 创造点 其中一个,是区别于经典蓝牙最核心的特征。
二、BLE 广播通道与频率结构
BLE 一共使用 40 个 RF 通道(每个通道间隔 2 MHz):
通道编号:0 ~ 39
通道用途:
通道 37(2402 MHz)
通道 38(2426 MHz)
通道 39(2480 MHz) → 广播通道
其余 37 个为数据通道(连接后使用)
广播包会在上述 3 个广播通道上轮流发送,以 进步被扫描发现的概率。
三、广播数据结构(ADV 包格式)
BLE 广播包由多个 TLV(Type-Length-Value)格式字段组成,每个字段称为“AD 结构(Advertising Data)”。
广播包格式(payload 最多 31 字节):
| Length | Type | Value | |--------|------|------------------| | 0x02 | 0x01 | Flags (如0x06) | | 0x05 | 0x09 | 完整设备名 | | 0x03 | 0xFF | 厂商自定义数据 |常见 Type 列表:
0x01 | Flags(基本属性) |
0x08/0x09 | Short/Complete Name |
0x02/0x03 | UUID16 Service |
0x16 | Service Data (UUID16) |
0xFF | Manufacturer Specific |
四、广播类型与用途
ADV_IND | 可被连接 + 可被扫描 | 最常用,支持连接与扫描响应 |
ADV_NONCONN_IND | 仅广播 | 不可连接,不触发响应 |
ADV_SCAN_IND | 可扫描,但不可连接 | 常用于 Sensor、温湿度等应用 |
ADV_DIRECT_IND | 指向特定地址 | 用于快速重连接,高优先级 |
五、扫描机制与交互流程
扫描设备(如定位器)以一定间隔监听广播信道,接收广播包。
扫描模式:
被动扫描(Passive)
只监听,不发送请求
低功耗、不触发 SCAN_RSP
主动扫描(Active)
接收广播后发出 SCAN_REQ → 设备响应 SCAN_RSP
可获取更多数据,但多一次交互
广播流程图:
六、扫描事件结构与广播数据解析
扫描设备接收到广播包后,会上报事件:hci_le_advertising_report_event
事件中包含:
报文类型(ADV_IND、ADV_SCAN_IND等)
MAC 地址(BLE 地址 + 类型)
RSSI(信号强度)
广播包内容(Advertising Data)
开发者需解析广播内容(AD结构),提取所需字段:如设备名、UUID、厂商数据、传感器值等。
七、广播参数设置建议(开发实战)
adv_interval_min/ x | 广播间隔 | 100ms – 1000ms |
adv_type | 广播类型 | ADV_IND(可连接) |
own_address_type | 设备地址类型 | Public 或 Random |
adv_channel_ p | 广播通道 | 37/38/39全开 |
adv_filter_policy | 过滤策略 | 通常设为 0(允许所有) |
广播数据通过 aci_gap_set_discoverable() 设置,扫描由 aci_gap_start_observation() 启动。
八、广播与扫描冲突处理
BLE 设备不可同时广播 + 扫描(除非协议栈支持主从共存),常见冲突包括:
广播中无法扫描(需先停广播)
扫描中无法连接他人(需进入 Initiator 情形)
被动设备多广播时,信道拥塞、包丢失
实战建议:
用 情形机切换广播/扫描行为
添加广播/扫描任务队列避免资源竞争
控制广播 时刻窗口,错开多个设备干扰
九、BLE 扩展广播(BLE 5.0+)简述
BLE 5.0 引入了扩展广播(Extended Advertising):
广播包长度从 31 字节 → 255 字节
支持更多广播类型(周期广播 PAwR、CTE等)
可分为主包 + 辅包,通过辅助通道发送更大数据
后续章节将详细解析扩展广播的结构、应用与实现。
十、 小编归纳一下
BLE 广播机制是 BLE 通信的核心基础,影响设备是否可被发现、是否能连接、是否能稳定通信。
开发者 领会广播包格式、扫描交互流程、事件回调与数据结构,是进入 BLE 全球的必修课。
下一篇,我们将从“连接机制”角度继续深入,分析 GAP 的连接 情形、参数结构、连接建立流程与断开处理策略。