Bluetooth Low Energy 4.2中PDU大小的解释
Explanation of PDU size in Bluetooth Low Energy 4.2
在低功耗蓝牙 4.0 和 4.1 中,OTA 数据包的最大 PDU 为 39 字节(47 字节带有前导码、访问地址和 CRC),在 4.2 版本中增加到 257 字节。
短数据包的原因是无线电的稳定性,长数据包会加热硅和要添加的额外电路以保持频率 stable.So,在 BLE 4.1 中,最长可能的数据包为 376 微秒以避免加热效应。由于数据速率为 1Mhz,376 微秒为 376 位 = 47 字节,因此说明了 PDU 的大小。但是在 4.2 版本中,最长的数据包是 2120 位,所以 2.12ms 和我在 bluetooth classic 中读取 3ms 的数据包已经足够长,会导致问题。所以我的问题是:SIG 为什么以及如何在 4.2 版中成功增加 PDU 知道一些半导体公司声明所有版本的硬件都是相同的。是什么导致了这个新的 PDU 长度?
在4.[01]中,39字节是广告包达到的最大LL PDU大小(2字节header,6字节设备地址,31字节AD)。
对于数据包,最大 PDU 大小为 33 字节(2 Header + 4 L2CAP + 23 ATT + 4 MIC)。
注意数据通道 header 计算没有 header 的 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)。规范使用 5 位字段表示 LL 数据包大小,此 header 字节的其他 3 位是 RFU。它最终在 4.2 中扩展到 8 位,具有完全向后兼容性,但是 header 中没有更多的连续位可用。对我来说,这解释了为什么限制在 256 字节左右(由于固定的 header 大小不属于字节数):它在不改变协议的情况下提供了合理的扩展。
在低功耗蓝牙 4.0 和 4.1 中,OTA 数据包的最大 PDU 为 39 字节(47 字节带有前导码、访问地址和 CRC),在 4.2 版本中增加到 257 字节。 短数据包的原因是无线电的稳定性,长数据包会加热硅和要添加的额外电路以保持频率 stable.So,在 BLE 4.1 中,最长可能的数据包为 376 微秒以避免加热效应。由于数据速率为 1Mhz,376 微秒为 376 位 = 47 字节,因此说明了 PDU 的大小。但是在 4.2 版本中,最长的数据包是 2120 位,所以 2.12ms 和我在 bluetooth classic 中读取 3ms 的数据包已经足够长,会导致问题。所以我的问题是:SIG 为什么以及如何在 4.2 版中成功增加 PDU 知道一些半导体公司声明所有版本的硬件都是相同的。是什么导致了这个新的 PDU 长度?
在4.[01]中,39字节是广告包达到的最大LL PDU大小(2字节header,6字节设备地址,31字节AD)。 对于数据包,最大 PDU 大小为 33 字节(2 Header + 4 L2CAP + 23 ATT + 4 MIC)。
注意数据通道 header 计算没有 header 的 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)。规范使用 5 位字段表示 LL 数据包大小,此 header 字节的其他 3 位是 RFU。它最终在 4.2 中扩展到 8 位,具有完全向后兼容性,但是 header 中没有更多的连续位可用。对我来说,这解释了为什么限制在 256 字节左右(由于固定的 header 大小不属于字节数):它在不改变协议的情况下提供了合理的扩展。