
一、蓝牙协议蓝牙协议是蓝牙技术联盟SIG定义的标准通信规则。比如LL链路层管广播、连接、跳频、重传。L2CAP逻辑链路控制与适配管数据分片和复用。ATT属性协议管数据读写。GATT通用属性配置文件管服务、特征值。SMP安全管理管配对加密。这些单个规则都叫“蓝牙协议”。二、蓝牙协议栈协议栈是把这些协议按层次组织起来并具体实现的一套软件有时含硬件控制器。典型分层text应用 GAP / GATT ATT / SMP L2CAP HCI LL PHY整体这一套实现就叫蓝牙协议栈。开发中说的 Nordic SoftDevice、TI BLE-Stack、Zephyr Bluetooth都是具体协议栈。三、核心区别对比蓝牙协议蓝牙协议栈本质标准文档中的规则规则的软件/固件实现范围单个协议如 GATT、L2CAP多个协议分层组合作用规定“应该怎么通信”让通信“实际跑起来”例子A2DP 规定怎么传音频手机里实现 A2DP 的那套代码举例手机连蓝牙耳机听歌协议A2DP 规定音频怎么编码传输AVRCP 规定播放/暂停怎么控制L2CAP 规定数据怎么分片LL 规定无线链路怎么建立。协议栈手机和耳机里各有一套蓝牙协议栈。手机协议栈把音乐按 A2DP → L2CAP → HCI → LL → PHY 层层封装通过射频发出去耳机协议栈反向解包驱动喇叭放音。类比协议 交通法规红灯停、绿灯行、靠右走协议栈 汽车 道路 信号灯 司机这一整套系统。没有法规会乱撞没有整套系统法规也跑不起来。四、BLE蓝牙协议栈具体1. PHY物理层全称Physical Layer职责把 0/1 变成无线电波负责调制解调、频率合成、发射功率、接收灵敏度。频段2.4GHz ISM共 40 个信道间隔 2MHz。广播信道37、38、39用于设备发现。数据信道0~36用于连接后通信。调制方式GFSK。速率LE 1M1Mbps最常用。LE 2M2Mbps速度更快。LE Coded125kbps / 500kbps距离更远、抗干扰更强。关键概念RSSI、发射功率、频偏、调制指数。例子心率带广播时PHY 层把广播包调制成 2.4GHz 信号发出去。2. LL链路层全称Link Layer职责BLE 的核心。管广播、扫描、建立连接、跳频、重传、加密、连接参数。角色广播者 Advertiser扫描者 Scanner发起者 Initiator中央 Central / 主机 Master外设 Peripheral / 从机 Slave主要功能广播在 37/38/39 信道轮流发广播 PDU。扫描监听广播可发扫描请求收扫描响应。连接建立发起者收到广播后发连接请求进入连接态。连接事件中央先发外设回复每个连接事件可在不同数据信道跳频。ACK / 重传保证可靠传输。CRC检测误码。加密加密开始后由 LL 执行加解密。连接参数连接间隔、从机延迟、监督超时。控制过程连接更新、信道映射更新、PHY 更新、加密、版本交换、功能交换。数据单元PDU。广播 PDU、数据 PDU。例子手机和耳机建立连接后LL 层负责在每个连接事件里收发数据包并跳频抗干扰。3. HCI主机控制接口全称Host Controller Interface职责Host 和 Controller 之间的标准接口。它不是空中协议而是芯片内部或芯片间的通信接口。传输方式UART、USB、SDIO、SPI。四类包CommandHost 发给 Controller如“开始广播”“扫描”。EventController 发给 Host如“连接建立”“命令完成”。ACL Data异步数据普通 BLE 数据。Synchronous / ISO Data同步数据用于语音、LE Audio。单芯片 vs 双芯片单芯片 SoCHost 和 Controller 在同一芯片HCI 是内部接口开发者通常不直接看到。双芯片主控跑 Host蓝牙模块跑 Controller两者通过 UART/USB 走 HCI。例子Nordic nRF52 内部有 HCI如果主控是 STM32外接一个 BLE 模块STM32 通过 UART 发 HCI 命令控制模块。4. L2CAP逻辑链路控制与适配协议全称Logical Link Control and Adaptation Protocol职责给上层提供逻辑信道负责多路复用、分段重组、MTU 协商。BLE 中的固定信道0x0004ATT0x0005LE Signaling信号信道0x0006SMP功能多路复用把 ATT、SMP 等不同上层数据区分开。分段重组上层数据大于 LL 最大包长时拆成多个 LL 包接收端再拼起来。MTU 协商ATT MTU 交换实际由 L2CAP 承载。CoCLE Credit Based Flow Control面向连接的信道用于较大数据传输。例子GATT 发一个 100 字节的特征值L2CAP 负责拆成多个 LL 包接收端重组后交给 ATT。5. SMP安全管理协议全称Security Manager Protocol职责配对、认证、密钥分发、加密。配对流程交换配对请求/响应。选择配对方法Just Works无认证最简单。Passkey Entry输入 6 位数字。Numeric Comparison双方显示数字用户确认。OOB带外如 NFC。生成密钥LTK长期密钥用于加密链路。IRK身份解析密钥。CSRK连接签名密钥。密钥分发。LL 层用 LTK 加密链路。LE Secure Connections用 ECDH 交换密钥比旧版 LE Legacy 更安全。例子手机和耳机第一次配对时SMP 层协商密钥之后连接自动加密。6. ATT属性协议全称Attribute Protocol职责定义客户端/服务器模型用“属性”来读写数据。属性结构句柄 Handle16 位唯一标识。类型 TypeUUID表示是什么属性。值 Value实际数据。权限读、写、通知、指示等。角色ATT Client发请求。ATT Server存属性回响应。常用方法Read Request / ResponseWrite Request / CommandHandle Value Notification服务器主动发不需要确认。Handle Value Indication服务器主动发需要确认。Find Information发现属性。Read By Type按类型读。MTUATT_MTU 默认 23 字节可协商到更大如 247 字节。例子手机读心率带的心率值就是 ATT Read Request心率带主动推送就是 Notification。7. GATT通用属性配置文件全称Generic Attribute Profile职责基于 ATT定义服务、特征、描述符让不同厂商设备能互通。核心概念服务 Service一组相关特征的集合用 UUID 标识。特征 Characteristic包含特征声明、特征值、描述符。描述符 Descriptor描述特征的元数据如客户端特征配置描述符 CCCD。UUID16 位 SIG 标准 UUID或 128 位自定义 UUID。角色GATT Client手机。GATT Server心率带、耳机。典型操作发现服务读特征值写特征值订阅通知写 CCCD然后服务器用 Notification 推送。标准 Profile心率 HRS服务 0x180D特征 0x2A37。电池 BAS服务 0x180F特征 0x2A19。HID键盘、鼠标。例子心率带定义心率服务手机订阅后心率带每次测量完就 Notification 推送。8. GAP通用访问配置文件全称Generic Access Profile职责管设备发现、连接、广播、角色、安全模式。它更偏“行为规范”。四种角色Broadcaster只广播不连接。Observer只扫描不连接。Central主动发起连接通常是手机。Peripheral被连接通常是外设。广播数据广播包最多 31 字节。扫描响应最多 31 字节。可包含设备名、服务 UUID、发射功率、厂商自定义数据。连接参数连接间隔7.5ms ~ 4s。从机延迟外设可跳过多少个连接事件。监督超时多久没收到包认为断线。例子心率带上电后进入 Peripheral 角色开始广播手机作为 Central 扫描到它发起连接。9. 应用 / Profile 层最上面是具体应用比如心率服务电池服务HID 设备音频 LE Audio自定义私有协议这一层直接调用 GATT/GAP API实现业务逻辑。数据流举例心率带发一次心率text应用心率测量值 75 bpm GATT心率服务 0x180D特征 0x2A37 ATTHandle Value Notification L2CAPCID 0x0004分段 HCIACL Data LL数据 PDU连接事件发送加密 PHYGFSK 调制2.4GHz 发送手机接收时反向解包textPHY → LL → HCI → L2CAP → ATT → GATT → 应用显示 75 bpm