为什么BLE 4.2比BLE 4.1快

Pic*_*You 2 bluetooth-lowenergy

我已经阅读了技术规范,我试图理解为什么BLE 4.2比BLE 4.1更快?

我们可以发送大于20字节的数据包大小还是更快的连接间隔?

我试图了解是什么让BLE 4.2变得更快.

Emi*_*mil 8

与之前相比,蓝牙4.2中唯一提供更高效率的是链路层的长度扩展.它可以发送数据pdus,其长度为251个字节,而不是27个字节,这是之前的限制.以前,如果由于报头大小和rx和tx数据包之间以及从tx到rx之间所需的时间而发送多个数据包,则意味着开销很大.数据本身以1 MBit/s的速度发送.

请注意,双方都需要支持此新功能,并且必须先在设备之间协商新的最大长度才能使用它.

在这里,我将解释一个典型的连接事件,同时中央写入多个20字节的GATT Write命令包.由于传输速率在空中传输速率为1 MBit/s,因此每位传输速率需要1μs.链路层页眉和页脚总共为80位,包括以下内容:1字节前导码+ 4个访问地址(用于将数据包标识到正确目的地的内容).1个字节,包含flow/ack和数据类型.1个字节,包含数据包长度.然后是数据,然后是3字节CRC校验和.用户数据包本身被包装在ATT包(具有操作码和ATT句柄的3字节头)中,该数据包又包裹在L2CAP包中(2字节信道ID和2字节长度).因此,20字节大数据包现在变为37字节,通过空中发送.在空中,主设备和从设备在发送和接收之间交替.因此,如果主设备发送许多数据包但从设备无法发送任何数据包,则从设备仍必须使用带有80位标头的空数据包进行响应.此外,在所有数据包之间,必须有150μs的无线电静音,以便为无线电提供在RX和TX之间切换的时间.因此,每个用20个字节的用户数据填充的4个数据包的连接事件如下所示: 1. Master -> Slave: 296 ?s 1st packet 2. Silence 150 ?s 3. Slave -> Master: 80 ?s empty packet 4. Silence 150 ?s 5. Master -> Slave: 296 ?s 2nd packet 6. Silence 150 ?s 7. Slave -> Master: 80 ?s empty packet 8. Silence 150 ?s 9. Master -> Slave: 296 ?s 3rd packet 10. Silence 150 ?s 11. Slave -> Master: 80 ?s empty packet 12. Silence 150 ?s 13. Master -> Slave: 296 ?s 4th packet 14. Silence 150 ?s 15. Slave -> Master: 80 ?s empty packet 所有这些都加起来为2554μs

利用新的分组长度扩展,我们可以在一个分组中发送相同的80个字节(仍然是17个字节的开销+ CRC)= 97个字节= 776个比特.

1. Master -> Slave: 776 ?s packet 2. Silence 150 ?s 3. Slave -> Master: 80 ?s empty packet

这加起来只有1006μs,是以前快两倍!现在,无线电可用于从另一个连接提供连接事件.

如您所见,吞吐量增加了.但是要使这个新功能有用,您需要确保使用数据包填充连接事件.当然,您可以在一个连接事件中更快地发送相同数量的数据,但如果您在下一个连接事件之前暂停其余时间,则不会更快地发送数据.