BLE中LL层的空口包格式

发布时间 2023-06-14 15:44:49作者: 不回本不改名

空口包基本格式

Preamble-前导码

前导码用于射频收发同步。通过发送0101或1010这样类似于方波的信号,方便接收机对数据包接收进行同步。如上图,具体发0101还是1010则根据Access address的LSB来决定。另外要注意,1M PHY的Preamble为8bit,2M PHY的Preamble为16bit

Access Address-访问地址

Access Address (简称AA)是接入地址,注意不是MAC地址,该地址用于标识数据包身份。

根据物理信道的不同,取值分为两种情况:

  • 广播信道(即37、38、39信道)的AA,取值固定为0x8E89BED6。
  • 其他非广播信道的AA为一个32bit的随机值,由Initiator生成。

对于非广播信道的AA值,其随机性有一定要求,例如不能全为0或全为1,每8bit不能重复等,具体参考spec的说明

PDU-协议数据单元

通信协议要传递的数据。LL层的作用便是让这些数据能顺利的传输到对端设备,

PDU以外的字段都是为了通信本身而服务,他不包含用户要传递的信息。

PDU内部除了更核心的有效载荷外,还会包含上层GAP、L2CAP、ATT等其他协议的信息,就想洋葱一样层层包起来,而洋葱的最外层就是LL层的PDU。

例如上图是一个常见的LL层数据包的结构,在PDU内部包含了L2CAP协议的头,包含了ATT协议的头,再细化可能还包含了其他协议的控制数据。

根据内部包含不同协议层的控制信息,PDU类型多种多样。在后面的内容中会进一步做说明

CRC-循环冗余校验

即常见的校验手段,用于确认数据传输过程的完整性。

CTE-恒音扩展

CTE为5.1版本专门为AOA和AOD应用新增字段,该字段为一段长度不小于16us,不大于160us的连续“1”值。在通信时的特征为一个持续的单音信号(正弦波),目的是使得接收机方便测量信号的相位。具体说明请参考spec。

总结

蓝牙的LL层定义和作用和经典的OSI 7层模型中的数据链路层作用一致。起到将比特组合成字节在组合成帧的作用,并包含硬件地址寻址,差错校验等功能。

而更上层协议的实现,则通过PDU内部各种类型的数据来构建。