BLE(Bluetooth Low Energy,蓝牙低功耗)协议栈是实现 BLE 通信功能的软件架构,它按照分层模型组织,每一层负责特定的功能。BLE 协议栈通常遵循蓝牙核心规范(Bluetooth Core Specification),目前最新版本为 Bluetooth 5.4(截至2024年)。以下是 BLE 协议栈的主要层次结构及其功能说明:
1.物理层(PHY - Physical Layer)
- 负责无线信号的发送与接收。
- 工作在 2.4 GHz ISM 频段,使用 GFSK(高斯频移键控)调制。
- BLE 使用 40 个 RF 信道(37 个数据信道 + 3 个广播信道)。
- 支持多种 PHY 模式(如 1M PHY、2M PHY、Coded PHY)以平衡速率与距离。
2.链路层(LL - Link Layer)
- 控制设备的射频状态(广播、扫描、连接等)。
- 定义 BLE 的五种设备角色:
- 广播者(Advertiser)
- 扫描者(Scanner)
- 发起者(Initiator)
- 主设备(Master / Central)
- 从设备(Slave / Peripheral)
- 负责连接建立、加密、跳频、数据包格式、重传机制等底层通信控制。
3.主机控制器接口(HCI - Host Controller Interface)(可选)
- 提供主机(Host)与控制器(Controller)之间的标准通信接口。
- 常用于将 BLE 控制器(如芯片中的基带+射频)与主处理器(运行应用和高层协议)分离的系统中。
- 可通过 UART、USB、SPI 等物理接口传输 HCI 命令/事件/数据。
注:在 SoC(单芯片)方案中,HCI 层常被省略或内部集成。
4.逻辑链路控制与适配协议层(L2CAP - Logical Link Control and Adaptation Protocol)
- 提供多路复用、分段与重组、协议复用等功能。
- 为上层协议(如 ATT、SM)提供面向通道的数据传输服务。
- BLE 中 L2CAP 通道通常基于固定信道(如信令信道、ATT 信道)或动态信道(用于 LE Credit Based Flow Control)。
5.安全管理层(SM - Security Manager)
- 负责 BLE 设备间的配对(Pairing)、绑定(Bonding)、加密和密钥分发。
- 支持多种安全模式(如 Just Works、Passkey Entry、OOB、Numeric Comparison)。
- 生成长期密钥(LTK)、身份解析密钥(IRK)等用于安全通信。
6.属性协议层(ATT - Attribute Protocol)
- BLE 数据交换的核心协议。
- 基于“属性”(Attribute)模型:每个属性包含句柄(Handle)、UUID、值(Value)和权限。
- 定义了客户端(Client)与服务器(Server)角色:
- Server:存储属性(如传感器数据)
- Client:读写/订阅这些属性
- 支持操作:Read、Write、Notify、Indicate、Discover 等。
7.通用属性配置文件(GATT - Generic Attribute Profile)
- 构建在 ATT 之上,定义了属性的组织方式和使用规范。
- 引入Service(服务)、Characteristic(特征)、Descriptor(描述符)的概念:
- Service:一组相关的数据/功能(如 Battery Service)
- Characteristic:具体的数据项(如 Battery Level)
- Descriptor:描述 Characteristic 的元数据(如 Client Characteristic Configuration Descriptor 用于使能 Notify)
- 所有 BLE 应用(如心率监测、智能家居)都基于 GATT Profile 实现互操作。
8.通用访问配置文件(GAP - Generic Access Profile)
- 定义设备如何被发现、连接和广播。
- 规范设备角色(Central/Peripheral)、广播类型(可连接/不可连接/定向等)、连接参数。
- 处理设备名称、外观(Appearance)、广播数据内容等。
协议栈整体结构(自下而上):
Application ↑ GATT (Generic Attribute Profile) ↑ ATT (Attribute Protocol) ↑ SM (Security Manager) ←→ L2CAP (Logical Link Control and Adaptation Protocol) ↑ ↑ GAP (Generic Access Profile) ↑ ↑ ↑ HCI (Host Controller Interface) ←→ (可选) ↑ LL (Link Layer) ↑ PHY (Physical Layer)常见 BLE 芯片厂商的协议栈实现:
- Nordic Semiconductor:SoftDevice(如 S112, S132, S140)
- Texas Instruments:BLE Stack(如 CC2640R2 SDK)
- Silicon Labs:Bluetooth SDK(基于 Gecko Platform)
- ESP32(Espressif):Bluedroid 或 NimBLE 协议栈
- Zephyr OS:开源 BLE 协议栈(支持 Nordic、NXP、STM32 等)