空中包格式BLE链路层的前导码的空中格式
2023-10-10
1026浏览
空中包格式BLE链路层的前导码的空中格式空中包格式BLE链路层的空中包格式非常简单,它所有的空中包都遵循下图所示的格式:最低有效位最先被链路层发往空中,最高有效位最后发送。例如,一个设备跟多个设备都建立了链路层的连接,也就是说一个设备同时维护多个链接,当这个设备收到一个空中包的时候,它只需通过访问地址就可以知道该空中包是哪个连接的包了。PDU(链路层控制包),它可能的取值如下:

BLE链路层的空中数据包格式非常简单。 其所有的空包均遵循下图所示的格式:

从上图可以看出,BLE Air包由4部分组成。 他们是:

前导码占1字节,访问地址占4字节,PDU占2~257字节,CRC占3字节,完整的空包大小在10字节~265字节之间。

LSB(The Least Significant)表示最低有效位; MSB(The Most Significant)表示最高有效位。 最低有效位首先由链路层发送到空中,最高有效位最后发送。 也就是说,先发出前导码,然后是访问地址空包,然后是PDU,最后是CRC。

前言

前导码占用8位。 所有广播信道中,空中数据包的前导码为10101010b; 在数据通道中,空中数据包的前导码为10101010b或01010101。

从层次上看,前导实际上是一个高低变化的矩形波。 接收器可以使接收电路的频率与矩形波的频率同步。 这就是所谓的接收机频率同步机制。 通俗地说,接收器可以利用它来估计一个比特的起始位置和一个比特的宽度,从而可以准确地接收到后续的每个有效比特。

同时,前导码标记了有效空中数据包的起始位置,以避免空中无效数据的干扰。

访问地址

广播通道和数据通道的访问地址不同。 广播通道的访问地址固定为0x8E89BED6; 数据通道的访问地址由发起方确定。 所以简单的理解就是,从访问地址上,我们首先可以区分这个空中包是广播包还是连接数据包。

如上所述,数据信道的前导码为10101010b或01010101b。 其实就是看数据通道中访问地址的最低有效位是0还是1,如果是1,则前导码为01010101b,否则为10101010b

当发起者向广播者发起连接请求时,它会将访问地址的值放入连接请求的相应字段中。 当链路层连接成功建立后,双方都进入连接状态,双方都会收到后续的空中数据包。 使用此访问地址进行通信。

可见,访问地址也与特定的链路层连接绑定。 例如,一台设备与多台设备建立了链路层连接,这意味着一台设备同时维护着多条链路。 当设备收到空包时,只需访问地址即可获知该空包。 该包属于哪个连接?

协议数据单元

协议数据单元是空中数据包的有效负载部分。 不同类型的空中数据包有不同的PDU。 它们大致可以分为广播通道PDU和数据通道PDU。

BLE 使用跳频机制。 链路层共有40个通道,其中3个通道是广播通道,另外37个通道是数据通道。

当设备处于广播状态或发起状态时,设备发送或接收广播通道的PDU; 当设备与另一个设备建立链路层连接时,双方都进入连接状态,并发送或接收数据通道的PDU。

广播通道 PDU

广播通道PDU的结构由两部分组成空包,分别是Header和Payload,如下图所示:

从上图可以看出,Header大小为16位,也就是2个字节。 Payload 的长度由 Header 中的 Length 字段决定。 那么首先看一下Header字段的组成,如下图所示:

Header字段由以下6部分组成:

广播报文的类型如下表所示:

PDU 类型数据包名称

0000

可连接的非定向广播 (ADV_IND)

0001

可连接的定向广播 (ADV_DIRECT_IND)

0010

不可连接的广播 (ADV_NONCONN_IND)

0011

扫描请求(SCAN_REQ)

0100

扫描响应(SCAN_RSP)

0101

连接请求(CONNECT_REQ)

0110

可扫描指示 (ADV_SCAN_IND)

0111-1111

预订的

这里我不会介绍每个包的类型,但会在以后的博文中详细介绍。

数据通道PDU

数据通道 PDU 包含 16 位标头和可变长度有效负载,还可能包含

MIC(Message Itegrity Check:消息完整性检查),数据通道PDU格式如下图所示:

Header的结构如下图:

标头由 6 部分组成:

LLID:

2个字节,指示该包是LL Data PDU(链路层数据包)还是LL Control PDU(链路层控制包)。 其可能的取值如下:

内森:

下一个数据包的序列号

序列号:

空包装序列号

医学博士:

更多数据意味着,由于 BLE 是低功耗蓝牙,因此它本质上使用睡眠唤醒机制。 它在唤醒时发送和接收空中数据包。 如果MD字段设置为1,则意味着发送方将来会有更多的空中数据包。 发送该数据包,通知接收方不要进入休眠状态,继续数据传输; 如果该字段设置为0,则表示发送方没有更多数据要发送,可以进入休眠状态。

CRC

CRC是关于PDU部分的数据完整性校验

以上内容均来自网络搜集,如有侵权联系客服删除

图文阅读
最新文章
淘宝自补发快递:安全但成本高,真实礼品快递空包代发可解决?
2022-10-30 08:02:14
甩货:通过低价促销搞定基础销量和评价的有效方法
2022-10-30 08:02:14
掌握这些关键点,轻松做好拼多多店铺运营
2022-10-30 08:02:14
利用直通车等多种方式,快速提升淘宝商品销量
2022-10-30 08:02:14
空包裹刷单利益链曝光:快递员、公司、商家均参与,用户信息成牺牲品
2022-10-30 08:02:14
快手小店补单方法大揭秘!如何利用短视频平台流量提升店铺销量?
2022-10-30 08:02:14
9 年电商人陈升分享:淘宝蓝海无货源年利润超 200W 的秘诀
2022-10-30 08:02:14
好生讲下公管院淘宝发空包有技巧吗?(图)
2022-10-30 08:02:14
 
QQ在线咨询
客服热线
15370006169
客服微信号
stu006