1. 首页 > 电脑知识

第2篇:BLE 广播与扫描机制详解 ble广播间隔

作者:admin 更新时间:2025-06-14
摘要:本文是《BLE 协议从入门到专家》专栏第二篇,专注于解析 BLE 广播(Advertising)与扫描(Scanning)机制。我们将从协议层结构、广播包格式、设备发现流程、控制器行为、开发者 API、广播冲突与多设备调度等方面,全面拆解这一 BLE 最基础也是最关键的通信机制。 一、什么是 BLE 广播? BLE 广播(Advertising)是 BLE 设备被发现和发起通信的入口,它允许设备周,第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 列表:

Type (Hex) 含义
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 的连接 情形、参数结构、连接建立流程与断开处理策略。