Pic*_*You 2 bluetooth-lowenergy
我已经阅读了技术规范,我试图理解为什么BLE 4.2比BLE 4.1更快?
我们可以发送大于20字节的数据包大小还是更快的连接间隔?
我试图了解是什么让BLE 4.2变得更快.
与之前相比,蓝牙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,是以前快两倍!现在,无线电可用于从另一个连接提供连接事件.
如您所见,吞吐量增加了.但是要使这个新功能有用,您需要确保使用数据包填充连接事件.当然,您可以在一个连接事件中更快地发送相同数量的数据,但如果您在下一个连接事件之前暂停其余时间,则不会更快地发送数据.
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |