蓝牙BLE协议之——L2CAP层

注:文章基于蓝牙6.0
协议栈核心规范文档,由
SIG规定,原文档可
点此进入查看

目录

一、L2CAP介绍

二、L2CAP位置

三、空口包结构

未编码PHY空口包

编码PHY空口包

 编码未编码Phy说明​编辑

 L2CAP Header

B帧(Basic Frame)

K帧(Credit-Based Frame)

C帧(Control Frame)​编辑

 分段和重组


 

一、L2CAP介绍

        蓝牙低功耗(BLE)的L2CAP层是协议栈核心逻辑链路控制层,位于ATT/GATT等上层协议与HCI/LL控制层之间,具有以下核心功能:

协议复用:通过CID(通道标识符)区分不同服务,BLE固定通道CID 0x0004用于ATT协议,CID 0x0005用于LE信号通道
分段重组(SAR) :将最大64KB的SDU分割为适合空口传输的PDU,重组时通过PDU长度字段校验完整性
信用流控制:LE特有机制,通过初始信用值和动态调整实现无阻塞传输
错误恢复:仅增强模式支持重传,基础模式依赖LL层ARQ机制

        (与传统蓝牙(BR/EDR)差异:BLE无重传/流控制模式,仅支持LE信用控制模式和增强信用模式)

二、L2CAP位置

三、空口包结构

未编码PHY空口包

编码PHY空口包

 编码未编码Phy说明

 L2CAP Header

根据Header可以分为几种帧:

        B-frames, C-frames, K-frames、I-frames, S-frames,G-frames

在BLE中仅支持B-frames, C-frames, K-frames

帧类型 标识符 结构特征 应用场景
B帧 SAR=0b00 无分段,直接封装完整SDU ATT短数据(默认MTU=23)
K帧 SAR=0b10 携带SDU长度字段+信用控制 LE信用模式大数据传输
C帧 CID=0x0005 信号命令(连接参数更新等) 设备管理类操作

B帧(Basic Frame)

最小L2CAP协议信息

场景:ATT属性读写、SMP配对等小数据交互

K帧(Credit-Based Frame)

k帧是用于LE基于信用的流量控制模式和增强基于信用的流量控制模式的PDU。

场景:长数据传输(如OTA固件升级、语音流)

C帧(Control Frame)

c帧是包含对等L2CAP实体之间交换的L2CAP信令消息的PDU。c帧专门用于L2CAP信号通道。

场景:动态通道管理、QoS协商

各种命令如下,

如发起连接参数更新是由L2CAP_CONNECTION_PARAMETER_UPDATE_REQ (code 0x12)命令发起

MTU交换由L2CAP_LE_CREDIT_BASED_CONNECTION_REQ (code 0x14)命令发起

 分段和重组

分段是将pdu分解成更小的部分,以便从L2CAP传递到较低的层。重组(Recombination)是将从底层发送上来的分片重新组合成PDU的过程。分片和重组可以应用于任何L2CAP pdu。
分段实现

通过K帧分包,第一帧包含SDU长度和PDU长度,后面延续包只包含PDU长度,LL层累加Payload长度匹配首帧的SDU_Length判断结束,流程如下:图片[1] - 蓝牙BLE协议之——L2CAP层 - 宋马
重组实现与分段反过来,判断LLID,LLID=0b10为首帧,LLID=0b01为延续帧,判断数据与SDU长度相同为结束

注意:必须收齐所有分片并通过校验后,才将完整SDU提交上层

       

        

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容