我已经阅读了技术规范,我试图理解为什么BLE4.2比BLE4.1更快?
我们是否可以发送比20字节更大的数据包,或者连接间隔是否更快?
我正在尝试理解是什么让BLE4.2更快。
发布于 2016-09-08 02:30:22
与早期相比,蓝牙4.2中唯一提供更高吞吐量的是链路层的长度扩展。这使得能够发送长度为251字节的数据pdus,而不是之前的限制为27字节。以前,如果由于报头大小和rx和tx数据包之间以及从tx到rx之间所需的时间而发送多个数据包,这意味着很大的开销。数据本身通过无线以1Mbit/s的速度发送。
请注意,两端都需要支持此新功能,并且新的最大长度必须在设备之间协商后才能使用。
在这里,我将解释一个典型的连接事件,当中央写入多个GATT写命令包时,每个包20个字节。由于空中传输速率为1Mbit/s,因此每个比特需要1μs来传输。链路层报头和报尾总共80比特,由以下内容组成:1字节前同步码+4个接入地址(用于标识去往正确目的地的分组的填充)。1个字节,包含flow/ack和数据类型。1个字节,包含数据包的长度。然后是数据,后跟3字节的CRC校验和。用户数据分组本身被包装在ATT分组中(具有操作码和ATT句柄的3字节报头),该分组又被包装在L2CAP分组(2字节信道ID和2字节长度)中。因此,20个字节的大数据包现在变成了37个字节,通过空中发送。通过无线方式,主机和从机在发送和接收之间交替。因此,如果主设备发送了许多数据包,但从设备没有要发送的数据分组,则从设备仍必须以具有80比特报头的空包作为响应。此外,在所有数据包之间,必须有150μ秒的无线电静默,以便无线电有时间在RX和TX之间切换。因此,一个由4个数据包组成的连接事件,每个数据包都填充了20字节的用户数据,如下所示: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μ,比以前快了一倍多!无线电现在可以为来自另一个连接的连接事件提供服务。
如您所见,吞吐量增加了。但要让这个新功能发挥作用,您需要确保使用数据包填充您的连接事件。当然,您可以在一个连接事件期间更快地发送相同数量的数据,但是如果您只是在下一个连接事件之前的其余时间空闲,那么您并不能真正更快地发送数据。
https://stackoverflow.com/questions/39371797
复制相似问题