这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 学习蓝牙知识-经典蓝牙通讯的数据包

共1条 1/1 1 跳转至页

学习蓝牙知识-经典蓝牙通讯的数据包

专家
2026-10-29 20:17:59     打赏

在进一步学习、实践CH582M的蓝牙处理知识之前,打算花点时间学习蓝牙方面的基础知识。

我最早接触和无线通讯有关的数字电路,是汽车的遥控器。但那种是不需要编程的。后来又接触到NRF24L01。SPI接口,数据通讯需要编程。通讯数据包中有固定长度的数据单元。可以利用这段数据段,实现自己的通讯协议。那么蓝牙通讯,是不是也是类似的呢?

这里,抛开蓝牙通讯的硬件,先从协议学起。

一、经典蓝牙的基础速率(BR)数据包

数据包构成:

image.png

⭐ 接入码(Access Code,72比特或者68比特)

⭐ 包头(Packet Header, 54比特)

⭐ 载荷(Payload,基础速率模式下为0至2745比特)。

1、接入码

image.png

位于数据包的最前端,用于同步、直流补偿和物理信道识别。

1) 前导码 (Preamble):4比特的固定模式(1010或0101),其序列取决于后续同步字的最低有效位(LSB),主要用于接收端的直流补偿。

2) 同步字 (Sync Word):64比特,是接入码的核心。它由一个24比特的LAP地址(Lower Address Part)生成。这个LAP地址来自主设备(Central)的蓝牙设备地址(BD_ADDR),确保了不同微微网拥有不同的同步字,接收方据此判断数据包是否属于当前网络。

3)尾码 (Trailer):4比特,同样为1010或0101,其序列取决于同步字的最高有效位(MSB)。它仅在包头紧随其后时才会出现。

接入码有两种主要长度:72比特(包含尾码,后接包头)和68比特(不包含尾码,用于寻呼、查询等不含包头的短消息)。

2、包头

包头固定为54比特,携带着链路控制的关键信息。这54比特并非原始信息,而是由18比特的原始包头信息经过1/3比例前向纠错码(FEC) 编码后形成的。8比特的原始包头包含以下6个字段:

⭐ LT_ADDR:3比特,逻辑传输地址

在主设备到从设备的时隙中,它指示目标从设备;在从设备到主设备的时序中,它指示源从设备。这正是用于区分微微网内不同设备的“目标地址”。

⭐ TYPE: 4比特,包类型码

用于指定当前数据包的具体类型(如ACL、SCO、eSCO等),并隐含了数据包将占用多少个时隙的信息。

⭐ FLOW: 1比特,流控位

用于对ACL链路进行流控。当接收方缓冲区满时,置0(STOP)以请求对方暂停发送;可接收数据时置1。

⭐ ARQN: 1比特,确认指示位

用于自动重传请求(ARQ),向发送方确认上一个数据包是否被成功接收。

⭐ SEQN: 1比特,序列号

用于对数据包进行编号,以帮助检测重传和维持包的顺序。

⭐ HEC :8比特,包头错误校验

用于校验包头信息的完整性。其生成与主设备的UAP(Upper Address Part)相关。

3、载荷

载荷是实际传输的用户数据或控制信息,长度可变(在基础速率模式下为0至2745比特),其具体结构取决于包的类型和所在的逻辑链路。

经典蓝牙主要支持两种逻辑链路,其载荷结构不同:

⭐ ACL (异步无连接链路):用于传输数据。其载荷通常由载荷头、载荷主体和CRC校验码三部分组成。

⭐ SCO/eSCO (同步面向连接链路):用于传输语音等实时性要求高的同步数据。其载荷结构不同,通常不包含载荷头,且长度可能固定(如SCO的HV3包),以最小化延迟。

二、EDR模式下的结构变化

在增强数据速率(EDR)模式下,数据包的前半部分(接入码和包头)与BR模式相同,以确保兼容性。主要变化发生在包头之后:

⭐ 在包头和载荷之间,会插入保护间隔(Guard Time) 和同步序列(Sync Sequence),用于让接收机切换到不同的调制方式(从GFSK切换到PSK)。

⭐ EDR模式下的载荷传输速率更高,但基础的数据包“三部分”结构框架依然保留

 

 


 






关键词: 懒猫的学习笔记     蓝牙    

共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]