低功耗蓝牙——广播与信道
一、射频技术
蓝牙(Bluetooth)作为一种无线通信技术,它通过电磁波(电磁场中的射频波,RF)来实现设备间的数据传输的。具体来说:
-
射频频段
- 蓝牙工作在全球通用的 2.4 GHz ISM(Industrial, Scientific, and Medical)频段,中心频率约为 2.400 GHz 到 2.4835 GHz。
- 该频段无需许可,任何设备只要遵守功率限制和跳频规则,都可以使用。而其它频段就不一样了,比如有些频段是供5G通信使用的、有些是收音机广播使用的,还有些是军用频段,这些频段都是受管控的。
-
调制方式
- 经典蓝牙(BR/EDR)使用的是 Gaussian Frequency Shift Keying(GFSK)调制,也就是将数字信号映射为两种不同的频率偏移来表示 “0” 和 “1”;在某些模式下还会结合 Phase Shift Keying(π/4-DQPSK、8-DPSK)以提高速率。
- 低功耗蓝牙(BLE)同样采用 GFSK 调制,但在协议、信道访问和功耗优化上与经典蓝牙不同。
-
跳频扩频(FHSS)
- 为了抗干扰并提升链路鲁棒性,蓝牙将整个 2.4 GHz 频段划分为若干个 1 MHz 宽度的子信道(BLE 为 40 个子信道,BR/EDR 为 79 个子信道),通信时按特定伪随机序列在这些子信道间快速跳频。
- 跳频速率通常为每秒 1600 次(BLE)或 800 次(BR/EDR),这能有效避免持续干扰并满足多设备共存需求。
-
发射与接收
-
发射端将数字基带信号经过调制器转换为射频信号,通过天线以电磁波形式辐射到空间。
![]()
-
接收端的天线捕获空间中的电磁波信号,经低噪放大(LNA)和下变频等射频前端处理后,恢复为基带数字信号,再由解调器和协议栈还原出原始数据。
-
二、信道
蓝牙工作在2.4GHz ISM 频段,划分为 40 个信道(其中3 个广播信道,信道号为37、38和39,频点为:2402/2426/2480MHz,避开了2.4GHz WiFi的常用信道)。

三、BLE广播
-
为什么需要广播?因为没有广播的话,从机就无法被主机发现,也就无法进一步建立稳定的连接。总之,从机需要建立\重新建立与主机之间的连接,必须发射广播。
-
BLE工作频率:BLE工作在2.4GHz ISM 频段,划分为 40 个信道(其中3 个广播信道,信道号为37、38和39,频点为:2402/2426/2480MHz,避开了2.4GHz WiFi的常用信道)。
-
其次,BLE设备硬件设计时要注意频偏,如果设备本来想发射数据到2402Mhz的广播频率,但是可能由于天线设计存在问题,导致设备频点偏移到了2402.5MHz,那么主机就很可能扫描不到这个设备的广播数据。
-
从机的每个广播数据包会分别向3个广播信道进行发射,当处于扫描状态的主机扫描到了广播包,可以选择性的发起连接请求,进而建立连接,如果连接成功,从机进入Connection state(连接状态)。
3.1 AD Data(广播数据)
AD Data 数据包遵守TLV 结构,即:Type、Length和Value(下面称之为Data)。由若干个 AD Structure拼接而成,每个 AD Structure 格式:
┌───────────┬────────────┬──────────────┐
│ Length(1B)│ AD Type(1B)│ Data(NB) │
└───────────┴────────────┴──────────────┘
- Length (1B)
后续(Type + Data)的总长度:Length = 1 (AD Type) + N (Data 长度)。 - AD Type (1B)
指示 Data 的含义,(AD Type)汇总表见下方 - Data (N B)
实际内容,根据 AD Type 定义来解析。
| AD Type(十六进制) | 名称 | 描述 | 示例(数据内容举例) |
|---|---|---|---|
0x01 |
Flags | 标志位,指示设备支持的蓝牙模式(如是否支持 BLE 安全连接、是否支持 BR/EDR) | 0x02:LE_GENERAL_DISCOVERABLE_MODE(通用可发现模式) 0x06:同时支持 LE 安全连接和非安全连接 |
0x02 |
16-bit Service UUID(部分) | 部分 16 位服务 UUID 列表(用于快速匹配) | 0x03 + 0x00 0x01:表示服务 UUID 为 0x0100(小端序) |
0x03 |
16-bit Service UUID(完整) | 完整 16 位服务 UUID 列表 | 同上,通常用于明确声明设备支持的服务 |
0x04 |
32-bit Service UUID(部分) | 部分 32 位服务 UUID 列表 | 0x05 + 0x00 0x01 0x02 0x03:部分 32 位 UUID(小端序) |
0x05 |
32-bit Service UUID(完整) | 完整 32 位服务 UUID 列表 | 同上 |
0x06 |
128-bit Service UUID(部分) | 部分 128 位服务 UUID 列表 | 0x09 + 128 位 UUID 的部分字节(小端序) |
0x07 |
128-bit Service UUID(完整) | 完整 128 位服务 UUID 列表 | 完整 128 位 UUID(如蓝牙标准服务 UUID:0000FFE0-0000-1000-8000-00805F9B34FB,小端序存储) |
0x08 |
Short Local Name | 设备短名称(可解析,截断显示) | 0x05 + MyDev:名称为 "MyDev"(长度 5 字节) |
0x09 |
Complete Local Name | 设备完整名称 | 0x0A + MyCompleteDeviceName:完整名称(长度 10 字节) |
0x0A |
TX Power Level | 设备发射功率(单位:dBm,补码表示) | 0x01:+1dBm 0xFF:-1dBm |
0x10 |
Class of Device | 设备类别(描述设备类型,如耳机、键盘等) | 0x05 + 0x020404:耳机(小端序,类别码 0x040402) |
0x16 |
Service Data(16-bit UUID) | 16 位 UUID 对应的服务数据(自定义数据) | 0x07 + 0x0001 + 0x1234:服务 UUID 0x0100(小端序),数据 0x1234 |
0x20 |
Service Data(32-bit UUID) | 32 位 UUID 对应的服务数据 | 同上,UUID 为 32 位 |
0x21 |
Service Data(128-bit UUID) | 128 位 UUID 对应的服务数据 | 完整 128 位 UUID + 自定义数据 |
0x22 |
Public Target Address | 目标设备的公共地址(用于定向广告) | 6 字节公共地址(如AA:BB:CC:DD:EE:FF的字节数组) |
0x23 |
Random Target Address | 目标设备的随机地址(用于定向广告) | 6 字节随机地址 |
0x24 |
Appearance | 设备外观(图标或物理形态,如手表、温度计等) | 0x02:手表 0x100:温度计(16 位值,小端序) |
0x25 |
Advertising Interval | 广告间隔(仅在扫描响应中出现,单位:0.625ms) | 0x04 + 0x0800:间隔为 200ms(0x0800 对应十进制 2048,乘以 0.625ms) |
0x2A |
LE Secure Connections Confirmation Value | LE 安全连接确认值(用于安全配对) | 16 字节确认值 |
0x2B |
LE Secure Connections Random Value | LE 安全连接随机值(用于安全配对) | 16 字节随机值 |
0xFF |
Manufacturer Specific Data | 制造商自定义数据(最常用的自定义字段,前 2 字节为公司 ID(小端序)) | 0x05 + 0x1234 + 0x56:公司 ID 0x3412(小端序),数据 0x56 |
3.2 一帧广播包解析示例
- 采用nRF Connect APP(安卓)扫描到一台小米手机的广播包如下,iOS手机的暂时未做展示:

- BLE 16bit UUID 速查表,涵盖常用的标准服务(Service)和特性(Characteristic)UUID:
| UUID (16bit) | 类型 | 名称 | 描述 |
|---|---|---|---|
0x0000 |
保留 | - | 保留(未定义) |
0x0001 |
保留 | - | 保留(用于测试) |
0x1800 |
服务 | 通用访问服务 (Generic Access Service, GAS) | 定义设备基本访问属性,如设备名称、连接参数等。 |
0x1801 |
服务 | 通用属性服务 (Generic Attribute Service, GATT) | 定义 GATT 服务器的基本功能,如服务发现、特性读写等。 |
0x1802 |
服务 | 即时通知服务 (Immediate Alert Service) | 允许设备发送即时通知(如紧急警报、提示音)。 |
0x1803 |
服务 | 链接损失服务 (Link Loss Service) | 监控设备间的连接信号强度,检测链接是否丢失。 |
0x1804 |
服务 | 环境感知服务 (Environmental Sensing Service) | 用于温度、湿度、气压等环境传感器数据的通用服务。 |
0x1805 |
服务 | 心率服务 (Heart Rate Service) | 传输心率传感器数据,包括心率值、心率区间等。 |
0x1806 |
服务 | 健身机器服务 (Fitness Machine Service) | 连接健身设备(如跑步机、自行车),传输控制指令和状态数据。 |
0x1807 |
服务 | 跑步动态服务 (Running Speed and Cadence Service) | 提供跑步速度、步频等运动数据。 |
0x1808 |
服务 | 自行车动态服务 (Cycling Speed and Cadence Service) | 提供自行车速度、踏频等数据。 |
0x1809 |
服务 | 自行车功率服务 (Cycling Power Service) | 提供自行车功率计数据。 |
0x180A |
服务 | 设备信息服务 (Device Information Service) | 包含设备制造商、型号、序列号、固件版本等信息。 |
0x180F |
服务 | 电池服务 (Battery Service) | 提供电池电量信息(如电池级别百分比)。 |
0x1810 |
服务 | 人机接口设备服务 (Human Interface Device Service, HID) | 模拟人机接口设备(如键盘、鼠标、游戏手柄)。 |
0x1811 |
服务 | 扫描参数服务 (Scan Parameters Service) | 允许设备广播扫描参数,用于优化蓝牙扫描效率。 |
0x2A00 |
特性 | 设备名称 (Device Name) | 设备的可读名称(属于通用访问服务 0x1800)。 |
0x2A01 |
特性 | 外观 (Appearance) | 设备外观类型(如手机、手表、耳机等,数值为枚举值)。 |
0x2A02 |
特性 | 外设连接参数范围 (Peripheral Preferred Connection Parameters) | 外设支持的连接参数范围(最小 / 最大间隔、超时时间等)。 |
0x2A03 |
特性 | 服务变更 (Service Changed) | 通知客户端服务列表发生变更(属于通用属性服务 0x1801)。 |
0x2A04 |
特性 | 电池电量 (Battery Level) | 电池电量百分比(属于电池服务 0x180F)。 |
0x2A05 |
特性 | 即时通知状态 (Immediate Alert Level) | 即时通知的优先级(如无通知、低优先级、高优先级,属于即时通知服务)。 |
0x2A06 |
特性 | 链接损失阈值 (Link Loss Threshold) | 链接信号强度的阈值,用于检测连接是否丢失(属于链接损失服务)。 |
0x2A08 |
特性 | 温度测量 (Temperature Measurement) | 温度传感器数据(属于环境感知服务)。 |
0x2A37 |
特性 | 心率测量 (Heart Rate Measurement) | 心率传感器的原始数据(属于心率服务)。 |
0x2A38 |
特性 | 身体传感器位置 (Body Sensor Location) | 传感器在身体上的位置(如胸部、手腕,属于心率服务等)。 |
0x2A4C |
特性 | 速度和步频 (Speed and Cadence) | 跑步或骑行的速度、步频 / 踏频数据(属于对应运动服务)。 |
0x2A50 |
特性 | 固件版本号 (Firmware Revision String) | 设备固件版本(属于设备信息服务)。 |
0x2A51 |
特性 | 硬件版本号 (Hardware Revision String) | 设备硬件版本(属于设备信息服务)。 |
0x2A52 |
特性 | 软件版本号 (Software Revision String) | 设备软件版本(属于设备信息服务)。 |
0x2A53 |
特性 | 制造商名称 (Manufacturer Name String) | 设备制造商名称(属于设备信息服务)。 |
0xFFFF |
保留 | 厂商自定义 UUID 基址 | 16bit UUID 中 0x0100-0xFFFF 可用于厂商自定义(需基于 128bit UUID 映射) |
作者水平有限,如有错误,不吝赐教。


浙公网安备 33010602011771号