1. 蓝牙的整体结构
蓝牙协议栈通常分为 物理层、链路层、协议层、应用层 四个主要部分
- 物理层(PHY, Physical Layer)
- 负责信号的无线传输和接收。
- 使用 2.4GHz ISM 频段,支持 经典蓝牙(BR/EDR) 和 低功耗蓝牙(BLE)。
- 链路层(LL, Link Layer)
- 负责蓝牙设备的连接、数据交换、安全加密等。
- 在 BLE 中负责 广播(Advertising)和扫描(Scanning) 过程。
- L2CAP 层(逻辑链路控制与适配协议)
- 处理数据的 分片(Fragmentation)和重组(Reassembly)。
- 负责 多通道管理(Multiplexing),允许多个协议在同一蓝牙连接上传输。
- 协议层
- **GATT(通用属性协议)**用于 BLE 设备的数据交互,如智能手环与手机通信。
- **SMP(安全管理协议)**负责蓝牙设备之间的身份认证和加密。
- 应用层
- 包括 A2DP(音频协议)、HID(键盘鼠标协议)、BLE Profile(智能设备协议) 等。
- 负责与最终用户交互,比如蓝牙耳机、键盘、鼠标、智能手环等。
2. 详细解析各个部分
(1)物理层(PHY, Physical Layer)
功能
负责 蓝牙无线信号的发送和接收。
采用 跳频扩频(FHSS, Frequency Hopping Spread Spectrum) 技术,减少干扰,提高通信质量。
工作频段2.402 GHz ~ 2.480 GHz(2.4 GHz ISM 频段)。
信道数
- **经典蓝牙(BR/EDR)**79 个信道(1MHz 间隔)。
**低功耗蓝牙(BLE)**40 个信道(2MHz 间隔),其中 3 个信道用于广播。
调制方式
- **BR(基本速率)**GFSK(高斯频移键控),1 Mbps。
- **EDR(增强速率)**π/4-DQPSK 或 8DPSK,最高 3 Mbps。
- **BLE(低功耗蓝牙)**GFSK,1Mbps 或 2Mbps。
(2)链路层(Link Layer, LL)
功能
管理广播(Advertising)和连接事件,定义设备角色(广播者/扫描者/主/从),负责数据包的收发和时序控制。
连接建立和维护
- **经典蓝牙(BR/EDR)**主从架构,一个主设备最多能连接 7 个从设备。
- BLE支持点对点和广播模式。
数据传输
- **ACL(异步连接链路)**主要用于数据通信(如文件传输)。
- **SCO(同步连接链路)**用于实时音频传输(如蓝牙通话)。
信道跳频(Adaptive Frequency Hopping, AFH)
- 经典蓝牙每秒 1600 次跳频,BLE 主要用于减少干扰。
(3)L2CAP 层(逻辑链路控制和适配协议)
功能
多通道管理(Multiplexing)
- 允许不同的应用协议(如音频、HID 设备)同时在蓝牙连接上运行。
数据分片(Fragmentation)和重组(Reassembly)
- 由于蓝牙的 最大数据包大小有限(如 BLE 为 251 字节),L2CAP 负责拆分和合并数据包。
支持的协议
- **SDP(服务发现协议)**允许设备查询对方的功能(如蓝牙耳机的音频协议)。
- RFCOMM(串行端口仿真)用于虚拟串口连接(如蓝牙 GPS)。
- **AVDTP(音频/视频分发协议)**用于 A2DP 蓝牙音频传输。
- **ATT(属性协议)**BLE 设备使用 ATT 进行数据交互。
(4)协议层
协议层包含 GATT、SMP、HID、A2DP、HFP 等,负责数据通信和安全。
GATT(通用属性协议,Generic Attribute Profile)
基于 ATT(Attribute Protocol),用于 BLE 设备的数据交互,定义服务(Services)、特征(Characteristics)和描述符(Descriptors)的层级结构。。
设备扮演 GATT Server(服务器) 或 GATT Client(客户端)。
常见 BLE Profile
- **心率监测(Heart Rate Profile)**智能手环向手机发送心率数据。
**电池电量(Battery Service)**BLE 设备报告电量信息。
SMP(安全管理协议,Security Manager Protocol)
BLE 的安全机制,用于设备配对和加密。
配对模式
- Just Works(无密码)
- Passkey Entry(输入密码)
- OOB(Out of Band,使用 NFC 交换密钥)
加密方式
- 采用 AES-CCM 加密,保证数据安全。
通用访问协议(GAP)
功能管理BLE设备角色(外设/中心设备)、广播参数和连接建立流程。
GAP(Generic Access Profile) 是蓝牙协议栈中的一个关键部分,主要用于管理蓝牙设备的 访问控制、连接管理 和 设备发现。
GAP 是蓝牙设备间通信的基础,它规定了设备如何在无线电环境中互相发现、连接、认证和设置通信参数。
GAP 不是一个单独的数据传输协议,而是 蓝牙设备间通信的高层协议,它为设备如何进行连接、如何广播以及如何相互交互提供了框架。它是 BLE(低功耗蓝牙)和经典蓝牙(BR/EDR)共同的一个协议层。
(5)应用层
应用层提供 用户可以直接使用的蓝牙功能,包括 音频、文件传输、键盘鼠标等。
经典蓝牙应用
应用 | 协议 | 功能 |
---|---|---|
音频传输 | A2DP | 高品质立体声传输(如蓝牙耳机、音箱) |
音量控制 | AVRCP | 控制音乐播放、音量调节 |
蓝牙通话 | HFP | 免提电话(如车载蓝牙) |
键盘鼠标 | HID | 适用于无线键盘、鼠标、游戏手柄 |
文件传输 | OBEX | 蓝牙传输文件(如手机间发送照片) |
BLE 低功耗蓝牙应用
应用 | 设备示例 |
---|---|
健康设备 | 心率监测仪、血压计 |
智能家居 | 蓝牙灯泡、智能门锁 |
位置跟踪 | iBeacon、蓝牙防丢器 |