Bluetooth Low Energy(BLE)是 Bluetooth 4.0 标准引入的低功耗无线技术,其允许长距离突发式无线连接,使设备在纽扣电池上运行数月乃至数年,特别适合 IoT 传感器和可穿戴设备等对电池寿命要求苛刻的应用场景。与传统 BR/EDR Bluetooth 不同,BLE 基于 GATT(Generic Attributes)构建全新的开发框架,使开发者能够快速将设备与智能手机、PC 和平板电脑上的应用互联。Documentation Index
Fetch the complete documentation index at: https://mintlify.com/dsyx/docs.silabs.com_zh/llms.txt
Use this file to discover all available pages before exploring further.
BLE 架构概览
BLE 协议栈由以下层次组成,通常将 Physical Layer 和 Link Layer 归为 Controller,其余层次归为 Host,两者之间通过标准 HCI(Host-Controller Interface) 进行通信。Controller 层
Controller 层
物理层(Physical Layer):负责无线电的发送与接收控制。链路层(Link Layer):定义数据包结构,包含状态机和无线电控制,并提供链路层加密。
Host 层
Host 层
- L2CAP:协议多路复用器,处理数据包分段与重组,提供逻辑通道。
- ATT(Attribute Protocol):提供在 BLE 设备间传输数据的方法,支持 Read、Write、Indicate 和 Notify 操作。
- GATT(Generic Attribute Profile):将各个 Attribute 分组为逻辑 Service(如 Heart Rate Service)。
- GAP(Generic Access Profile):提供广告、设备发现、连接建立与管理的手段。
- SM(Security Manager):负责配对、密钥分发、哈希和短期密钥的生成。
物理层(Physical Layer)
BLE 工作在 2.4 GHz ISM 频段(2402 MHz–2480 MHz),该频段在大多数国家免许可。Bluetooth 4 规范定义了 40 个射频信道,信道间隔 2 MHz,其中 3 个为广告信道(37、38、39),专门用于设备发现、连接建立和广播,其余 37 个为数据信道。| 特性 | 数值 |
|---|---|
| 最小发射功率 | 0.01 mW(-20 dBm) |
| 最大发射功率 | 100 mW(20 dBm) |
| 最低接收灵敏度 | -70 dBm(BER 0.1%) |
| PHY 数据速率(BT 4.x) | 1 Mbps |
| PHY 数据速率(BT 5) | 1 Mbps 或 2 Mbps(2M PHY) |
| 调制方式 | GFSK,调制指数 0.5 |
链路层(Link Layer)
广告(Advertisement)
广告是 BLE 中最基本的操作之一,设备通过在广告信道上广播数据包来宣告自己的存在、允许连接建立,并可选地广播数据(如支持的 Service 列表、设备名、TX 功率级别)。 应用程序通常可控制的广告参数:| 参数 | 取值范围 | 说明 |
|---|---|---|
| 广告间隔 | 20 ms – 10240 ms | 广告事件之间的间隔,链路层会随机增加 0–10 ms 以避免冲突 |
| 广告信道 | 37、38、39(主要);0–10、11–36(BT 5 次要) | 用于发送广告包的射频信道 |
| 可发现模式 | Not/Generic/Limited Discoverable;Broadcast | 广告者对其他设备的可见性 |
| 可连接模式 | Not/Directed/Undirected Connectable | 广告者是否允许被连接 |
| 载荷大小 | 0–31 B(主要);0–255 B(BT 5 次要) | 广告包中可携带的数据量 |
扫描(Scanning)
扫描分为被动扫描和主动扫描两种模式:- 被动扫描:仅侦听传入的广告包,不发送任何请求。
- 主动扫描:接收广告包后向广告者发送扫描请求包,获取更多信息(如支持的 Service 列表、友好名称)。
连接(Connections)
BLE 连接使用 CRC、确认和重传确保数据可靠传输,同时结合 AFH 适应射频环境,支持数据加密。| 参数 | 取值范围 | 说明 |
|---|---|---|
| 最小连接间隔 | 7.5 ms | 允许的最小连接间隔 |
| 最大连接间隔 | 4000 ms | 允许的最大连接间隔 |
| Peripheral 延迟 | 0–500 个连接间隔 | Peripheral 在无数据时可跳过的连接事件数 |
| 监控超时 | 100 ms – 32000 ms | 通信中断多久后断开连接 |
当 Central 发送数据包时,连接事件开始。Peripheral 在收到后可在 150 µs 内响应。如无数据,Peripheral 可按 Peripheral Latency 设置跳过若干连接事件,从而节省功耗。
Generic Access Profile(GAP)
GAP 是每个 BLE 开发者最先接触的协议层,用于控制设备如何被发现、如何建立连接,以及如何管理连接过程。 GAP 定义了以下四种设备角色:Broadcaster(仅 TX)
发送广告事件和广播数据,不接收任何数据,适用于 Beacon 等单向广播设备。
Observer(仅 RX)
侦听广告事件和广播数据,不发送广告,适用于网关扫描器等设备。
Peripheral(RX 和 TX)
可连接且进行广告,专为与 Central 进行单一连接的简单设备设计(如传感器)。
Central(RX 和 TX)
不广告,负责启动和管理多个连接,实践中可同时连接 4–20 个 Peripheral。
一台设备可以支持多个角色,但在给定时间内只能担任一个角色。
Attribute Protocol(ATT)
ATT 定义了 Server(存储 Attribute 的设备)与 Client(访问 Attribute 的设备)之间的通信规则。Attribute 结构
每个 Attribute 包含:- Handle:用于寻址的句柄(0x0001 起递增)
- UUID:描述 Attribute 类型的通用唯一标识符(16-bit 为 SIG 标准,128-bit 为厂商自定义)
- Value:0–512 字节的数据
- Permission:可读/可写,以及是否需要认证/授权/加密
ATT 操作方法
| 方法 | 方向 | 说明 |
|---|---|---|
| Read(handle) | Client → Server | 读取指定句柄的值,最大 250 B |
| Write(handle, value) | Client → Server | 写入值,无响应,最大 250 B |
| Handle Value Notification | Server → Client | 服务端通知新值,无需确认,最大 250 B |
| Handle Value Indication | Server → Client | 服务端指示新值,需要客户端确认,最大 250 B |
| Find Information | Client → Server | 发现 Attribute 句柄及其类型(UUID) |
Generic Attribute Profile(GATT)
GATT 建立在 ATT 之上,为 ATT 传输和存储的数据建立通用框架,定义了 Service、Characteristic 和 Descriptor 的结构:- Profile:描述数据交换结构,由一个或多个 Service 组成,完成高级用例(如心率监测)。
- Service:由一个或多个 Characteristic 组成的数据集合,完成设备特定功能(如电池监视)。
- Characteristic:Service 中使用的值,包含数据、访问方式、安全要求及可选的 Descriptor(描述符)。
BLE 安全机制
BLE 技术提供三种基本安全服务:身份验证与授权
在设备间建立信任关系,通过配对和绑定过程实现。
加密与数据保护
使用 AES-128-CCM 加密保护数据完整性与机密性,由 BLE Controller 执行加密操作。
隐私保护
通过频繁更换 Bluetooth 设备地址(可解析私有地址 RPA)防止设备被跟踪。
抗中间人攻击
通过 Passkey Entry 或 Out-of-Band 配对,或 BT 4.2 起的 LE Secure Connection + 数字比较实现。
配对与绑定
配对(Pairing) 是双方交换身份信息以建立信任关系并生成加密密钥的过程。绑定(Bonding) 是将配对过程中生成的密钥进行存储,以便下次连接时直接使用。 可用的关联模型取决于双方的 I/O 能力:| I/O 能力组合 | BT 4.0/4.1(Legacy) | BT 4.2+(LE Secure Connection) |
|---|---|---|
| 无显示/无键盘 | Just Works | Just Works |
| 有显示/无键盘 | Just Works 或 Passkey Entry | Numeric Comparison 或 Just Works |
| 有键盘 | Passkey Entry | Passkey Entry |
| 有显示+键盘 | Passkey Entry | Numeric Comparison |
| Out-of-Band | OOB | OOB |