2016-09-12 64 views
2

在Bluetooth Low Energy 4.0和4.1中,OTA数据包的最大PDU为39个字节(带前导码,访问地址和CRC的47个字节),并且在版本4.2中增加到257字节。 短包的原因是无线电的稳定性,长包加热硅和额外的电路,以保持频率稳定。因此,在BLE 4.1中,最长的包可能是376微秒,以避免热效应。由于数据速率为1Mhz,因此376微秒为376位= 47字节,因此说明了PDU的大小。但是在4.2版本中,最长的数据包是2120位,所以2.12ms和我在蓝牙经典版本中读取3ms数据包的时间足以导致问题。所以我的问题是:为什么以及SIG如何成功增加版本4.2中的PDU,知道一些半导体公司声明所有版本的硬件都是相同的。什么导致了这个新的PDU长度?Bluetooth Low Energy中的PDU大小说明4.2

回答

2

在4. [01]中,39字节是广告数据包达到的最大LL PDU大小(标题的2个字节,6个字节的设备地址,31个字节的AD)。 对于数据包,最大PDU大小为33字节(2 Header + 4 L2CAP + 23 ATT + 4 MIC)。

注意数据通道报头计算没有报头的PDU大小,因此这使数据通道有效负载大小上升到31个字节。这是在4.2中放大的数字(如果不支持密码,实际最小值为27字节,因为4字节MIC永远不会出现在数据包中)。

新的数据通道净荷在4.2定义的大小是最大可能值的协议可以支持,所以这是一个芯片可以支持,而不是绝对的分组大小的每芯片必须支持的值。

实际数据信道有效载荷大小是通过LL_LENGTH_REQ和LL_LENGTH_RSP在两个相关无线电之间进行协商的。他们可以协商从27到251字节的任何长度(在有效载荷级别)(见Core_v4.2 6.B.2.4.2.21)。

在BLE规范的第一个版本中,数据包绝对最大大小为27个字节(数据有效负载,没有MIC)。 Spec对LL数据包大小使用5位字段,该首标字节的其他3位是RFU。它最终在4.2中完全向后兼容,扩大到8位,但在头部没有更多的连续位。对我来说,这解释了为什么限制是256字节左右(由于固定的头部大小不是字节计数的一部分而给出或取出):它给出了一个合理的扩展,而不用更改协议。

+0

谢谢。我已经将规格阅读为“必须”而不是“可能”。 – JJM

+0

答案只是关于大小增加后的影响的评论,它没有解决原来的问题“短包的原因是无线电的稳定性,长包加热硅和额外的电路来加入以保持频率稳定“,如果确实如此,包尺寸的增加如何不会导致加热效应/不稳定? –

+0

实际的问题是“为什么以及如何** SIG **成功[...]”。答案是**可能/必须**的区别。效果是依赖于芯片的,供应商可以强制实际支持芯片的限制。即使芯片是在4.2之前设计的,即使它们不能达到251字节的限制,它们也可能首先支持更长的数据包。 – Nipo