-
理论速率
在BLE产品中,一个普遍的矛盾就是功耗和数据速率之间的矛盾:为了传输快,就需要提高传输速率,但提高传输速率,则增大了功耗。
BLE规范目前定义了两种调制速率1Mbit/s和2Mbps,
BLE 5.0理论上最高可以支持到2Mbps,但在实际应用中会收到各种原因影响,速率会低很多,例如双向传输,协议开销(协议头),CPU的能力,RF硬件的限制等等
一旦BLE设备建立连接后,两个设备会以相等的时间间隔交换数据,这个间隔成为连接间隔(Connection Interval),间隔范围是7.5ms-4s。并且,要交互的数据都发生在Connection Event之间,其余时间处于sleep状态,即使应用层无数据交互,整个链路也会以Connection Interval间隔交互数据(空包),应用层数据多,Connection Event时间就越长,sleep时间就越短。
因此,连接间隔决定着传输速率,值越小,发送数据越快,但功耗也会越大。假如连接间隔是7.5ms,每个连接间隔可以发送125个字节,那么单向传输速率计算如下:
1000ms / 7.5ms *125bytes = 16666 bytes/sec = 133333 bps
如果是有回应的,双向传输:
1000 ms / (2 * 7.5 ms) * 125 bytes = 8,333 bytes/sec =66,666 bps
2. PDU大小
在数据通过BLE传输时,数据是以包(packet)的方式收发的,多个包可以在一个连接间隔内发送出去,每个包大小并不一定一样,但包有最大限制,因此又需要引入一个PDU(protocoldata unit)的概念。最大PDU表示在一个连接间隔中能发送的最大数据能力。不同BLE协议栈中或者不同的芯片支持的值是不同的例如下图是Silabs蓝牙芯片中支持的情况。
3. ATT MTU
MTU(maximumtransfer unit)和最大PDU类似,也用于表示在一次连接间隔内能发送多少数据,其概念用于GATT交互中。
数据吞吐量(DataThroughput)的计算
Nordic nRF51822
nRF51822使用的是1MbpsPHY,根据其规范说明,一个连接间隔内最大可以发送120个字节,因此当连接间隔设置为7.5ms时,最大传输速率计算:
1000ms/7.5ms * 120 = 15960 bytes /s = 127680 bps
可以看到,即使按照最短连接间隔计算,速率也原小于BLE规范理论速率。
Nordic nRF52840
nRF52840 支持蓝牙5.0,其ATT PDU是可配置的,假如我们设置MTU为251 个字节,按照最小连接间隔读操作或者有回应写操作,计算如下:
1000ms / (2*7.5 ms)* 251bytes = 16733 bytes/sec = 133866bps
4. 蓝牙5.0的最大数据吞吐量
要获取最大数据吞吐能力,可以将写操作属性设置为不需要ACK,即Write withoutACK,此时IFS以及接受和发送的时间都将极大优化,其蓝牙官网中给出的最大计算能力表示如下:
各个版本最大值如下
参考
https://www.bluetooth.com/blog/exploring-bluetooth-5-how-fast-can-it-be/
https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52840
https://www.silabs.com/community/wireless/bluetooth/knowledge-base.entry.html/2015/08/06/throughput_with_blue-Wybp
zz
https://mp.weixin.qq.com/s?__biz=MzI1NTIzMTk0Ng==&mid=2247483667&idx=1&sn=801d1c24764e31c89a0b53f2da635c29&chksm=ea3853b6dd4fdaa04c74a60ebb9728299d022f73e811962fed6e47664a406ad58043b2567b97&token=1514169698&lang=zh_CN#rd