BLE 协议之 L2CAP

蓝牙协议栈之L2CAP使用 本文记录对蓝牙协议栈逻辑链路及自适应协议层的学习还有后面如何在TI的蓝牙芯片上去实现L2CAP CoC的数据透传,为什么用L2CAP CoC进行数据透传呢?因为它每次透传的数据量远远能比GATT大,如果堆够用的话可以传输64KB,而GATT数据透传限于ATT-MTU,最多每次能传输的也就247个字节。使用L2CAP总结如下:主机和从机都可以请求建立L2CAP COC通道。一旦L2CAP连接建立成功之后,协议栈会发送到应用层,具体的事件是,这个是双方都会触发的事件。 阅读详情
AI摘要

本文聚焦于BLE设备的数据通道,介绍了L2CAP的主要功能,如协议信道复用、分段与重组等。详细阐述了L2CAP Protocol架构,包括逻辑信道划分、信道模式、设计思想、帧结构和信道包格式,为理解BLE设备数据传输提供了技术参考。


一、简介

经过 Link Layer 的抽象之后,两个 BLE 设备之间可存在两条逻辑上的数据通道:

  • 一条是无连接的广播通道,天高任鸟飞
  • 另一条是基于连接的数据通道,是一个点对点(Master to Slave)的逻辑通道。

广播通道暂且不提,这个数据通道(后面简称逻辑通道,Logical Channel),要怎么使用,还需要一番思索,例如:

  • Logical Channel 只有一条,而要利用它传输数据的上层应用却不止一个(例如上图中的 ATT 和 SMP),怎么复用?
  • Logical Channel 所能传输的有效 payload 长度最大只有 251bytes,怎是否意味着上层应用每次只能传输少于这个长度的数据?(显然不能!)
  • Logical Channel 仅提供了简单的应答和流控机制,如果传输的数据出错怎么办?
  • …

L2CAP 所具备的主要功能如下:

  • 协议信道复用(Protocol/channel multiplexing) :能够区分高层协议,在信道建立时,协议复用功能用来 发送请求来连接正确的上层协议 ;在数据传输时,逻辑信道复用必须能够把用同一个协议的不同几个高层实体的区分出来(一对多情况)。
  • 分段与重组(Segmentation and reassembly) :高层协议需传输的数据长度不定,L2CAP 层控制了 PDU 的长度,不仅易于管理而且通过对数据标记分组,允许数据单元的交错,可以满足延时要求,发生错误时的重传也可以更加方便准确。
  • 基于 L2CAP Channel 的流控机制(Flow control per L2CAP channel) :对传输的数据进行流量控制
  • 错误控制和重传机制(Error control and retransmissions)
  • 协议数据单元(PDUs)的分片(和重组)(Fragmentation and Recombination):生成符合 Link Layer 传输要求的数据片(长度不超过251)
  • 支持流式传输(Support for Streaming):如音频、视频等,不需要重传或者只需要有限重传

二、L2CAP Protocol 架构

见 Core v5.4 P1016

1、逻辑信道划分

在了解逻辑信道划分前,先了解以下 CID(Channel Identifier)

CID :逻辑链路通道的端点标识,其分配情况如下:

CID说明
0x0000无效标识
0x0001发送信令的信道
0x0002无连接的接收信道
0x0003-0x003f保留(特定功能)
0x0040-0xffff动态分配

其中的 0 x 0004 − 0 x 0005 0x0004-0x0005 0x0004−0x0005 被分配给 BLE(低功耗蓝牙) :

如果设备支持 BLE 功能, 0 x 0005 0x0005 0x0005 作为其信令通道, 0 x 0004 0x0004 0x0004 和 0 x 0006 0x0006 0x0006 也会被强制分配给 BLE ,分别作为 ATT 和 SecurityManager 信道。

CID 主要用来区分上层协议,进而保证多协议信道的复用。

2、信道模式

逻辑信道有几种操作模式,最后一种是 LE 设备特有的:

  • Basic L2CAP Mode(equivalent to L2CAP specification in Bluetooth v1.1) 默认模式,在未选择其他模式的情况下,用此模式。
  • Flow Control Mode 流控模式,此模式下不会进行重传,但是丢失的数据能够被检测到,并报告丢失。
  • Retransmission Mode 重传模式,此模式确保数据包都能成功的传输给对端设备。
  • Enhanced Retransmission Mode 增强重传模式,此模式和重传模式类似,加入了 Poll-bit 等提高恢复效率。
  • Streaming Mode 流模式,此模式是为了真实的实时传输,数据包被编号但是不需要 ACK 确认。设定一个超时定时器,一旦定时器超时就将超时数据冲掉。
  • LE Credit Based Flow Control Mode 基于 LE 信用的流控模式,被用于 LE 设备通讯。

3、设计思想

使用链路管理器协议在两单元间建立 ACL 链路。基带提供数据分组的有序传输, 但也可能有个别分组损坏或重复。任两台设备之间只会有一条 ACL 链路。

信道建立在链路的基础上,信道可以有多个,链路只有一条。

通过使用基带层提供的机制,L2CAP 提供了一条可靠的信道。当收到请求和重发数据时,基带通常要执行数据完整性校验,直到数据成功确认或发生超时。由于可能会丢失确认报文,所以甚至在数据成功发送后也会发生超时。基带协议使用长度为 1 位的序列号,该序列号用于删除重复发送的分组。由于所有广播的 L2CAP 数据分组的首段都以同一序列位为起始位, 如果需要提供可靠传输,就应禁止使用基带广播分组。

L2CAP 主要对数据进行 封装 ,支持协议复用,统一高层协议数据格式。

4、帧结构

L2CAP 要想实现信道复用与差错控制,必定也要在数据包前加一些前缀信息。

L2CAP 有以下几种连接类型:

  • Connection-oriented Channels in Basic L2CAP mode
  • Connectionless Data Channel in Basic L2CAP mode
  • Connection-oriented Channel in Retransmission/Flow Control/Streaming Mode
  • Connection-oriented Channels in LE Credit Based Flow Control Mode

4.1 面向连接信道 B-frame

  • PDU Length:2 octets (16 bits),主要指基本 L2CAP 报文头除长度以外的信息净荷的大小,即图中空白部分,其长度可达 65535 字节。
  • Channel ID:2 octets,用于标识分组的目标信道终端。
  • Information payload:0 to 65535 octets, 静荷信息包含来自上层协议(发出的分组)的净荷或者发送到上层协议(接收的分组)的净荷。 MTU 的值在信道配置时确定。所支持的用于信令分组的 MTU 的最小值为 48 字节。

4.2 无连接数据信道包 G-frame

  • Protocol/Service Multiplexer (PSM):2 octets (minimum),一般为 SDP、RFCOMM、TCS 等中介协议复用。小于 0x1000 的值,0x0001 对应 SDP,0x0003 对应 RFCOMM、0x0005 对应 TCS。主要用于标识何种上层协议。

4.3 重传/流量控制/流传输模式下的面向连接的信道 S-frame、I-frame

  • I-frame 用于在 L2CAP 实体间进行信息传输
  • S-Frame 则用于确认 I-frame 和 I-frame 的重传请求

  • Length:2 bytes,除 Basic L2CAP 外的总字节数
  • Channel ID:2 bytes,对端目的信道
  • L2CAP SDU Length:2 bytes,只出现在 Start I-frame(SAR=0x01)中,表示总的 SDU 长度
  • FCS:2 bytes,帧校验序列

Control field 有三种模式:

  • Standard Control Field:用于重传模式和流量控制模式
  • Enhanced Control Field:用于增强的重传模式和流模式
  • Extended Control Field:用于扩展的重传模式和流模式


  • Type:I-frame 的类型位为0,S-frame 的类型位为 1。

  • TxSeq:(6/14 bits),发送序列号,对发送的 I-frame 计数, 用于分段和重组

  • ReqSeq:(6/14 bits),接收序列号,接收方用于应答 I-frame 和请求重传

  • R:(1 bits),重传禁用位,用来实现流控制

  • SAR:(2 bits),分割与重组,指明该 L2CAP 是否是分段过

  • S:(2 bits),表示 S-Frame 的 Type

  • P:(1 bits),置1表示从接收方征求响应

  • F:(1 bits),当 S-frame 的 P 为 1 时,F 也置 1

4.4 面向连接的通道分为 LE 信用流控模式和增强型信用流控模式 K-frame

5、信道包格式

Core v5.4 P1042

这里介绍的是在对端设备上两个 L2CAP 实体间传递的信号命令(Signaling Commands),这些信号命令通过 Signaling Channel 来传输

对于 ACL-U 逻辑链路应该使用 CID 0x0001,而对于 LE-U 则应该使用 CID 0x0005

通用的信号包格式如下:

注意:一个 C-Frame 通过 0x0001 信道可以传递多个命令;而一个 C-Frame 通过 0x0005 信道则只能传递一个命令


上图显示了信号命令的通用格式,各字段含义如下

  • Code:1 byte, 指定 Command 的类别
  • Identifier:1 byte, 用于标识一个 Request 和 Response 匹配对
  • Length:2 byte, Data 字段的长度
  • Data:0~N byte, Code 字段来决定其格式,参照下表:
蓝牙(七)L2CAP层协议解析 1、L2CAP概述 L2CAP-全称是逻辑链路控制与适配层,为两个通信的蓝牙设备提供一个端到端的通道。 L2CAP主要功能: 1.协议信道复用(protocol/channel multiplexing) 2.分段与重组(segmentation and reassembly SAR) 3.每个信道流控(per-channel flow control) 4.差错控制(error ... 阅读详情

相关推荐

安卓蓝牙L2CAP协议简介及报文格式

蓝牙L2CAP协议

suwen8100的博客 2996

蓝牙L2CAP协议概述

屏蔽底层差异:统一传统蓝牙和低功耗蓝牙的传输接口,让上层协议(如GATT、RFCOMM)无需关心物理层细节。灵活适配需求:通过多信道、MTU协商、QoS控制,满足从音频流(高吞吐量)到传感器数据(低功耗)的多样化场景。可靠性与效率平衡:面向连接信道保证数据可靠传输,无连接信道支持轻量化广播,结合底层链路特性优化传输效率。理解L2CAP的设计逻辑,是掌握蓝牙协议栈架构(尤其是BLE数据传输机制)的关键,也是开发蓝牙应用(如智能设备通信、音频传输协议)的核心知识基础。

szxhcljyjsjdff的博客 2179

BLE之L2CAP层协议——理论部分

在BLE协议栈中,L2CAP(Logical Link Control and Adaptation Protocol)层通过信道(Channel)实现协议复用、数据分段与重组。信道分为(Fixed Channels)和。

weixin_44550629的博客 607

蓝牙系列十三:协议栈L2CAP层

然后它也会构造一个头部,根据HCI层传入的handle得到access address(代表一个连接,也就是对端的设备), 它还会根据HCI中的PB构造一个header,header中的LLID设为10b,也就是代表了起始包,还会根据HCI中length构造header中的length。应用程序通过L2CAP传送数据给对方,不应该限制数据包的大小,但是蓝牙控制器是使用单片机来实现的,它里面的内存是有限的,较大的数据包传进来,它的内存就不够用了。收发室里面的人是医院的内部员工,它可以在医院内部来传动包裹。

挨踢农民的博客 3185

ble l2cap 工作过程_BLE协议 01

简介本文将按照如下层次分析PHY(物理层)LL(链路控制层)HCI(主机和控制接口)L2CAP层(逻辑链路控制和适配层)GATT(通用属性规范)ATT(属性传输协议)SMP(安全管理)协议的组成图:PHY(物理层)频段BLE使用2.4GHz工业、科学及医疗(ISM)频段。这个频段有两个特别之处:它是一个无需授权的频段它是唯一一个在任何国家都通用的频段,即对于2.4GHz的频段,从2400MHz~2...

weixin_34737066的博客 293

【Bluetooth蓝牙开发】七、BLE协议之L2CAP

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 3281

蓝牙协议规范--L2CAP

L2CAP 分析 记住一点,软件和硬件分开理解,数据经由物理通道交互,上层通道由各层协议打通。 L2CAP 全称为逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol),位于基带层之上,将基带层的数据分组交换为便于高层应用的数据分组格式,并提供协议复用和服务质量交换等功能。 L2CAP 是基于下列假设为依据而设计的: ● 使用链路管理器协议在两单元间建立 ACL 链路。基带提供数据分组的有序传输, 但也可能有个别分组损坏或重复。任两台设备之间.

Fxing的博客 4222

BLE 协议栈:L2CAP 信道详解

L2CAP信道是蓝牙协议栈中的核心适配层,负责逻辑数据传输和多路复用。它分为面向连接、无连接和固定信道三大类,通过CID唯一标识。L2CAP依赖下层链路层实现数据传输,并为上层协议(如ATT/GATT)提供统一接口。信道管理通过状态机实现生命周期控制,包括建立、配置和关闭等操作。固定信道(如CID 0x0004用于ATT协议)由规范预定义,动态信道则支持灵活分配。L2CAP通过帧头处理、CRC校验和重传机制保障数据传输的可靠性,是蓝牙协议栈实现高效多协议并行传输的关键基础。

Vis-Lin的博客 390

BLE协议栈 – L2CAP

L2CAP(Logical Link Control and Adaptation Protocol)中文名为逻辑链路控制和适配协议,它位于BLE协议的主机(Host)部分,承担着协议复用(Protocol Multiplex)的任务。蓝牙协议官方手册的章节首页提到L2CAP还承担上层(ATT,SM)发来的数据的分割/重组(Segmentation/Reassembly)任务。这里需要澄清一点,这...

琦。 2336

高速PCB设计中串扰的成因、影响与实战控制策略

在高速数字电路与硬件系统设计中,信号完整性是确保系统稳定可靠的核心基础。其核心原理在于,当信号在传输线上传播时,会伴随产生电场与磁场,若相邻导线距离过近,便会通过电磁场耦合产生不期望的能量转移,即串扰。这一现象会直接导致信号波形畸变、时序偏移和噪声裕量降低,严重影响系统性能。从技术价值看,深入理解并有效控制串扰,是提升数据传输速率、保障系统稳定性和降低误码率的关键。其应用场景广泛覆盖了从高速SerDes链路、DDR内存接口到高精度模拟电路等几乎所有现代电子系统。本文聚焦于高速PCB设计中的串扰问题,系统剖析

weixin_27625589的博客 573

ANSYS Twin Builder实战:5步搞定数字孪生模型部署(附ROM配置技巧)

本文详细解析了ANSYS Twin Builder在数字孪生模型部署中的实战应用,重点介绍了ROM(降阶模型)配置技巧。通过5个关键步骤,从环境搭建到工业部署,帮助工程师高效实现高精度三维仿真到轻量化数字孪生的转化,提升预测性维护和系统仿真效率。

weixin_27330481的博客 654

基于 L2CAP 协议的蓝牙 BLE 设备通信指南

每个信道分配一个2字节的信道ID——CID(Channel ID),每个信道功用不同,比如CID=0x0004的信道表示属性协议(Attribute Protocol)专用信道。BLE协议默认的MTU为23字节。// MTU默认23字节: op code(1 字节),handle(2 字节,小端),payload(0-20字节)// MTU默认23字节: op code(1 字节),handle(2 字节,小端),payload(0-20字节)协议复用可以理解为,不同的协议走不同的信道,互不干扰。

jax2730的博客 1321

BGE(BAAI General Embedding)模型详解

BGE(BAAI General Embedding)是北京智源人工智能研究院(BAAI)推出的通用文本嵌入模型系列,旨在为各种自然语言处理任务提供高质量的向量表示。

ttyy1112的专栏 7551

蓝牙BLE协议之——L2CAP层

​ 蓝牙低功耗(BLE)的L2CAP层是协议栈核心逻辑链路控制层,位于ATT/GATT等上层协议与HCI/LL控制层之间,文章基于蓝牙6.0协议栈核心规范文档,由SIG规定 ​

to_the_world的博客 1721

直流无刷减速电机选型指南:从KV值到霍尔传感器,新手必看的5个关键参数

本文详细解析直流无刷减速电机选型的5个关键参数,包括KV值、转矩、电流与功率、减速比选择以及霍尔传感器配置。通过实战案例和避坑策略,帮助工程师精准匹配电机性能与负载需求,提升工业自动化设备的可靠性和效率。特别强调霍尔传感器在精准控制中的关键作用。

alice7model的博客 619

YOLO26改进策略【YOLO和Mamba】| MLLA:Mamba-Like Linear Attention,融合Mamba设计优势的注意力机制

本文记录的是利用模块优化的目标检测网络模型。模块具有独特优势。它不同于传统模块,能同时兼顾局部特征高效建模与长距离交互学习。常见模块要么在局部特征处理上有优势但长距离交互能力弱,要么反之,而模块克服了此问题。它融合了Mamba模型和线性注意力机制的优势,通过独特的结构设计,能够在保持计算效率的同时,精准地建模局部特征并学习长距离交互信息。本文将其用于的模型改进和二次创新,能够更加关注图像中的重要特征区域,抑制背景等无关信息的干扰,从而突出目标物体的关键特征。Demystify Mamba in Vision

Limiiiing的博客 213

12-BLE协议L2CAP层

学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Protocol Specification 建议先复习《BLE协议各层的形象化理解》,下面是我们之前用来类比的医院结构图: 下面这个图是BLE协议各层跟医院的各个科室的类比图: Controller就是快递公司,它知道把数据发给对方哪一个设备,但是它不能进入对方内部。 L2CAP是“收发室”,它熟知

飞天鱼 1129

UG\NX二次开发 找不到指定的dlx文件(Specified Dlx file not found)

有群友问:用Ctrl+U运行的时候就报错,找不到指定的dlx文件Specified Dlx file not found。怎么处理。

王牌飞行员_里海的博客 1127

BLE 协议栈中的 L2CAP层详解

L2CAP的全称是逻辑链路控制与适配协议。为上层ATT/GATT提供了稳定可靠的数据传输管道。理解L2CAP是深入理解BLE数据流和协议栈交互的关键一步。

mftang的博客 1059

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2247

【实战】Python 携程酒店价格实时抓取爬虫项目全解析

摘要:本文介绍了一个基于Python的携程酒店价格实时抓取系统开发方案。系统采用Requests、BeautifulSoup和Selenium等技术栈,实现了多城市、多日期的酒店数据采集,包括价格、评分、位置等关键信息。通过请求头伪装、IP代理、随机等待等反爬策略,有效应对携程的反爬机制。系统支持数据清洗、去重和CSV/Excel导出,并提供了多线程优化、代理池集成等进阶方案。本文详细阐述了技术原理、代码实现和优化策略,同时强调了数据采集的合法合规性,为旅游行业数据分析提供了可靠的数据获取方案。

2503_91057718的博客 2604

BLE-L2CAP层协议浅析

架构 L2CAP = LOGICAL LINK CONTROL AND ADAPTATION PROTOCOL SPECIFICATION host 最底层协议,主要作用是逻辑信道的分配,ble和传统蓝牙都需要实现

caicai6b6 1154

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙学习系列(八):BLE L2CAP 协议详解

本文深入解析蓝牙协议栈中的L2CAP层核心功能。作为蓝牙通信的"物流调度中心",L2CAP通过信道ID机制实现数据分流:0x0005信令信道负责连接参数更新等控制指令,0x0004/0x0006等数据信道分别传输ATT应用数据和SMP安全信息。L2CAP提供数据分片重组、基于信用的流量控制等增值服务,确保大容量数据可靠传输。这一协议层实现了多路复用、精细管控和可靠传输三大核心功能,是理解蓝牙数据流转机制的关键。

嵌入式小企鹅的博客 623

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ble l2cap 工作过程_BLE 5协议栈-逻辑链路控制与适配协议层(L2CAP)

文章转载自:http://www.sunyouqun.com/2017/04/page/2/逻辑链路控制与适配协议通常简称为L2CAP(Logical Link Control and Adaptation Protocol),它向上连接应用层,向下连接控制器层,发挥主机与控制器之间的适配器的作用,使上层应用操作无需关心控制器的数据处理细节。经典蓝牙的L2CAP层比较复杂,它实现了协议复用、数据分...

weixin_35638218的博客 641

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ble l2cap 工作过程_第13节-BLE协议L2CAP层

学习资料:官方手册Vol 3: Core System Package [Host volume]Part A: Logical Link Control and Adaptation Protocol Specification建议先复习《BLE协议各层的形象化理解》,下面是我们之前用来类比的医院结构图: 下面这个图是BLE协议各层跟医院的各个科室的类比图: Controller就是快递公司,它...

weixin_39758618的博客 172
上一篇: BLE 协议之传输层
下一篇: 【STM32】通过 DWT 实现毫秒级延时
Projectsauron
博客等级 码龄4年 2587粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值