蓝牙低功耗(BLE)的通信信道和包类型
目录
概述
1. 广播信道包(Advertising Channel PDU)
1.1 广播信道
1.2 广播类型
2. 数据信道包(Data Channel PDU)
2.1 数据包(LL Data PDU)
2.2 控制包(LL Control PDU)
3. 扫描与连接请求包
4. BLE 5.0+ 新增包类型
5. 包类型应用场景示例
总结
概述
本文主要介绍蓝牙低功耗(BLE)的通信信道和包类型。蓝牙低功耗(BLE)技术在2.4GHz ISM频段工作,使用40个物理信道,其中3个为广播信道,37个为数据信道。广播信道用于设备发现、连接建立和广播通信,分布在频段两端和中间以减少Wi-Fi干扰。广播包在3个信道上重复发送以提高可靠性。数据信道用于已连接设备间的数据通信,采用自适应跳频技术选择信道。BLE支持多种广播类型,如可连接的非定向广播、定向广播、不可连接广播等,适用于不同场景。数据包和控制包用于传输应用层数据和管理连接。BLE5.0引入了增强特性,如双倍速率和长距离模式,扩展了广播信道的使用。理解BLE包类型对于优化设备功耗、连接稳定性和数据传输效率至关重要。开发者应根据应用场景选择合适的广播类型,并通过控制包动态调整连接参数。
1. 广播信道包(Advertising Channel PDU)
BLE工作在2.4GHz ISM频段(2402-2480MHz),共使用40个物理信道,信道间隔为2MHz:
-
3个广播信道:用于设备发现、连接建立和广播通信
-
37个数据信道:用于已连接设备间的数据通信
1.1 广播信道
信道编号 | 中心频率(MHz) | 主要用途 |
---|---|---|
37 | 2402 | 广播/扫描 |
38 | 2426 | 广播/扫描 |
39 | 2480 | 广播/扫描 |
特点:
-
专门用于无连接通信
-
分布在频段两端和中间,减少Wi-Fi干扰(特别是避开Wi-Fi信道1,6,11)
-
所有广播包都在这3个信道上重复发送,提高可靠性
信道参数
参数 | 说明 | 典型值 |
---|---|---|
信道带宽 | 每个信道占用带宽 | 2MHz |
调制方式 | 物理层调制 | GFSK |
数据速率 | 传输速率 | 1Mbps(4.2+支持2Mbps) |
发射功率 | 信号强度 | -20dBm到+10dBm |
信道选择算法
BLE使用自适应跳频技术,通过以下算法选择数据信道:
-
信道映射:主从设备协商可用信道
-
跳频序列:基于连接句柄(Connection Handle)和跳频增量计算
-
跳频间隔:每个连接事件跳至新信道(默认间隔30ms)
跳频公式:
next_channel = (last_channel + hop_increment) mod 37
其中hop_increment为5-16之间的随机值
1.2 广播类型
用于设备发现、连接建立和广播数据传输,工作于 3 个固定广播频道(37, 38, 39)。
类型 | 名称 | 用途 |
---|---|---|
ADV_IND | 可连接的非定向广播 | 允许任何设备扫描并发起连接(如智能手环广播自身存在)。 |
ADV_DIRECT_IND | 定向广播 | 仅向特定设备(已知 MAC 地址)发起快速连接,减少扫描时间。 |
ADV_NONCONN_IND | 不可连接广播 | 仅广播数据,不接受连接(如 Beacon 设备持续发送位置信息)。 |
ADV_SCAN_IND | 可扫描广播 | 允许扫描设备请求附加数据(扫描设备发送 SCAN_REQ 后回复 SCAN_RSP )。 |
ADV_EXT_IND (BLE 5+) | 扩展广播 | 支持更长广播数据(最多 1650 字节)和多种 PHY(如 LE Coded PHY)。 |
广播包结构:
| 前导码 (1B) | 访问地址 (4B) | PDU (2-257B) | CRC (3B) |
2. 数据信道包(Data Channel PDU)
在连接建立后使用,工作于 37 个自适应跳频数据频道,包含 数据包 和 控制包。
2.1 数据包(LL Data PDU)
- 用途:传输应用层数据(如传感器读数、ATT 协议读写操作)。
- 类型:
LL_DATA
:普通数据负载(最大 251 字节)。LL_ENC_DATA
:加密数据(启用链路层加密后使用)。
2.2 控制包(LL Control PDU)
类型 | 功能 |
---|---|
LL_CONNECTION_UPDATE_REQ | 主设备请求更新连接参数(间隔、延迟、超时)。 |
LL_CHANNEL_MAP_REQ | 主设备更新信道映射表(避开干扰频段)。 |
LL_TERMINATE_IND | 通知对端设备终止连接。 |
LL_ENC_REQ / LL_ENC_RSP | 协商加密参数(启动链路层加密)。 |
数据包结构:
| 前导码 (1B) | 访问地址 (4B) | LL Header (2B) | 载荷 (0-251B) | CRC (3B) | MIC (4B, 加密时添加) |
3. 扫描与连接请求包
类型 | 方向 | 用途 |
---|---|---|
SCAN_REQ | 扫描设备 → 广播设备 | 请求广播设备发送附加信息(触发 SCAN_RSP )。 |
SCAN_RSP | 广播设备 → 扫描设备 | 回复扫描请求,携带额外广播数据(如设备名称、服务 UUID)。 |
CONNECT_REQ | 主设备 → 从设备 | 发起连接请求,包含初始连接参数(间隔、信道映射、跳频算法等)。 |
4. BLE 5.0+ 新增包类型
类型 | 功能 |
---|---|
AUX_ADV_IND | 辅助广播包,用于扩展广播链式传输。 |
AUX_CHAIN_IND | 扩展广播数据的分片传输(支持大数据广播)。 |
AUX_SYNC_IND (Periodic) | 周期性广播同步包,用于时间同步场景(如室内定位)。 |
BLE 5.0增强特性
2M PHY:双倍速率(2Mbps),使用相同信道
Coded PHY:长距离模式(125Kbps/500Kbps)
广播信道扩展:可选使用全部40个信道广播
5. 包类型应用场景示例
-
智能家居:
- 灯泡通过
ADV_NONCONN_IND
广播状态,手机通过SCAN_REQ
获取详情后发起连接。 - 连接后使用
LL_DATA
包发送开关指令。
- 灯泡通过
-
医疗设备:
- 心率带通过
ADV_IND
广播,手机连接后持续接收加密的LL_ENC_DATA
包。 - 主设备通过
LL_CONNECTION_UPDATE_REQ
优化传输间隔以降低功耗。
- 心率带通过
-
Beacon 定位:
- 使用
ADV_EXT_IND
发送扩展广播数据(位置坐标、商户信息)。
- 使用
总结
理解 BLE 包类型是优化蓝牙设备 功耗、连接稳定性 和 数据传输效率 的关键。开发者需根据应用场景选择合适的广播类型(如非连接广播节省功耗),并通过控制包动态调整连接参数以适配环境变化。