[分享] 低功耗蓝牙数据传输率

Jacktang   2018-6-26 21:17 楼主
BLE Data Rate


在项目中遇到一个需求是通过BLE传输几十kB到一百多kB的数据。实际测试的时候发现BLE Data Rate平均在2kB/s左右,所以一次数据传输最多需要一分多钟。这个时间对消费者来讲是比较长的,用户体验不好,所以希望能提高BLE Data Rate,减少数据传输时间。故而对BLE Data Rate做了专题研究。


在研究过程发现了一些比较好的英文和繁体中文研究成果,因此就不打算自己写一篇深入全面的研究结果了,只在这里简要概述一下BLE Data Rate的相关要点并给出一些深入研究成果的链接。
1. BLE Data Rate受到多种复杂因素的影响,通过修改一些BLE连接参数是有可能提高BLE Data Rate的。
2. 影响BLE Data Rate的因素主要有
* 对方BLE设备的Data Rate限制,最终能达到的最大Data Rate取决于两个设备中最慢的那个设备。
* BLE连接参数,包括connection interval, slave latency, connection supervision timeout, packets per connection interval,通过修改这些参数可以提高Data Rate。
* MTU(Maximum Transfer Unit)的大小,增加MTU可以减少包头对data rate的开销,但是有些设备的蓝牙协议栈不支持修改MTU。
* BLE芯片方案的速度限制,MCU的运算能力会影响数据吞吐量。
* 某些手机操作系统的限制,比如iOS对BLE的连接参数有限制,在iOS上达不到spec规定的最大理论data rate;各家Android手机厂商对BLE的连接参数也有修改,不同Android手机的最大BLE Data Rate有不一样。
* 其他无线信号的干扰,比如WiFi和Bluetooth工作在同频段,会对Bluetooth造成干扰,增大误码率,提升重传次数,降低Data Rate。
3. BLE Data Rate的提升会带来功耗的增加,因此在不进行大块数据传输时,应该将BLE连接参数恢复到平衡模式或者节能模式。
4. 从Android 5.0开始增加了两个API来调整BLE连接参数和MTU: BluetoothGatt::requestConnectionPriority(int connectionPriority)和BluetoothGatt::requestMtu(int mtu)。需要注意的是BluetoothGattServer是不支持这两个API,原因是core spece有规定,只能有Gatt Client发起request。
5. 最新的Bluetooth 5.0将BLE data rate提升了一倍(double),但是支持Bluetooth 5.0的设备最快要2017年才有。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复