1. BLE基础概念与协议栈解析
低功耗蓝牙(Bluetooth Low Energy,简称BLE)是蓝牙技术联盟在2010年推出的蓝牙4.0核心规范的一部分。与经典蓝牙相比,BLE最大的特点是极低的功耗设计,这使得它非常适合物联网设备、可穿戴设备等需要长时间运行的场景。
1.1 BLE协议栈分层架构
BLE协议栈采用分层设计,每层都有明确的职责:
code复制应用层 (Application)
↑
GATT/GAP (Profiles)
↑
ATT (Attribute Protocol)
↑
L2CAP (Logical Link Control and Adaptation Protocol)
↑
HCI (Host Controller Interface)
↑
Link Layer (LL)
↑
PHY (Physical Layer)
物理层(PHY):
- 工作频段:2.4GHz ISM频段(2402-2480MHz)
- 调制方式:GFSK(高斯频移键控)
- 发射功率:-20dBm到+10dBm可调
- 信道:40个物理信道(3个广播信道,37个数据信道)
链路层(Link Layer):
- 负责广播、扫描、连接建立和维护
- 实现跳频算法(避免干扰)
- 管理连接参数(间隔、延迟、超时)
主机控制器接口(HCI):
- 定义Host和Controller之间的通信协议
- 可以通过UART、USB或SPI等物理接口实现
逻辑链路控制与适配协议(L2CAP):
- 提供数据分包和重组功能
- 管理协议/服务的多路复用
- 支持信用流控(Credit-Based Flow Control)
1.2 BLE核心角色与工作模式
BLE设备可以扮演四种角色:
-
广播者(Broadcaster):
- 只发送广播数据包
- 不接受连接请求
- 典型应用:iBeacon、Eddystone等信标设备
-
观察者(Observer):
- 只接收广播数据包
- 不发起连接
- 典型应用:扫描设备、数据收集器
-
外围设备(Peripheral):
- 广播自身存在
- 接受中心设备的连接请求
- 连接后作为从设备
- 典型应用:智能手环、传感器节点
-
中心设备(Central):
- 扫描并发现外围设备
- 主动发起连接
- 连接后作为主设备
- 典型应用:智能手机、平板电脑
实际项目中,一个设备可以同时具备多个角色。例如智能手表在连接手机时作为Peripheral,而在连接心率带时又可以作为Central。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实战:使用nRF Connect解析BLE设备
2.1 安装与基本使用
nRF Connect是Nordic Semiconductor开发的BLE调试工具,支持Android和iOS平台。安装步骤:
- 在应用商店搜索"nRF Connect"
- 下载并安装应用
- 打开应用后授予位置权限(BLE扫描需要)
2.2 广播包深度解析
以一个实际的广播包为例(BYD BLE3设备):
code复制Raw Data: 02 01 06 17 07 42 59 44 20 41 55 54 4F E0 A9 E5 0E 24 DC CA 9E 09 09 42 59 44 20 42 4C 45 33 07 FF D0 2E AB 6A 35 29
这个广播包由四个AD Structure组成:
-
Flags (02 01 06):
- 长度:2字节
- 类型:0x01(Flags)
- 值:0x06
- 解析:
- Bit 0 (0x01): LE Limited Discoverable Mode
- Bit 1 (0x02): LE General Discoverable Mode
- Bit 2 (0x04): BR/EDR Not Supported
-
**Complete List of 128-bit UUIDs (
