蓝牙5.0BLE传输质量及推迟分析

BLE传输质量主要受以下多少个要素影响:操作类型,Connection
Interval,每个Connection
伊芙nt内发送的帧数、每一帧数据的长度。具体参见如下链接:

Connection Events

https://en.wikipedia.org/wiki/Bluetooth\_low\_energy

 本人在TI官网的求学笔记,现整理如下

https://devzone.nordicsemi.com/question/3440/how-do-i-calculate-throughput-for-a-ble-link/

 

https://atmosphere.anaren.com/wiki/Data_rates_using_BLE

两台BLE设备建立连接后,所有的通讯事件都是由此Connection
伊芙nts中暴发的

https://punchthrough.com/blog/posts/maximizing-ble-throughput-on-ios-and-android

 

此时此刻的一个项目对BLE传输品质有较高须要,将以上几个因素依次确认,使用协议支持的最优值,其中Connection
Interval设置为7.5ms,每一帧数据长度为20字节,每个Connection
伊夫nt根据工作需求安装为2,依此总计出的辩护传输速度约为5600Bps。为了测试实际效果,在Android端写了一个小程序,将数据流和岁月戳打印出来,如下:

图片 1

[21]:TS 238.794720 PN 20780 [1]:
[21]:TS 238.795954 PN 20780 [2]:
[21]:TS 238.802182 PN 20781 [1]:
[21]:TS 238.802373 PN 20781 [2]:
[21]:TS 238.810432 PN 20782 [1]:
[21]:TS 238.832608 PN 20782 [2]:
[21]:TS 238.832650 PN 20783 [1]:
[21]:TS 238.832728 PN 20783 [2]:
[21]:TS 238.832751 PN 20784 [1]:
[21]:TS 238.832820 PN 20784 [2]:
[21]:TS 238.832843 PN 20785 [1]:
[21]:TS 238.833862 PN 20785 [2]:
[21]:TS 238.839201 PN 20786 [1]:
[21]:TS 238.839403 PN 20786 [2]:
[21]:TS 238.848280 PN 20787 [1]:
[21]:TS 238.848894 PN 20787 [2]:
……
[21]:TS 288.128815 PN 27346 [1]:
[21]:TS 288.128977 PN 27346 [2]:
[21]:TS 288.136323 PN 27347 [1]:
[21]:TS 288.136908 PN 27347 [2]:
[21]:TS 288.159292 PN 27348 [1]:
[21]:TS 288.159569 PN 27348 [2]:
[21]:TS 288.159922 PN 27349 [1]:
[21]:TS 288.165079 PN 27349 [2]:
[21]:TS 288.167879 PN 27350 [1]:
[21]:TS 288.168157 PN 27350 [2]:
[21]:TS 288.173809 PN 27351 [1]:
[21]:TS 288.173906 PN 27351 [2]:

 

个中21为多长、TS为时间戳、PN为包号,1和2是一个Connection
伊夫nt内的包的种类。可以见到,一般意况下,一个Connection
伊夫nt发送两帧数据,那两帧数据的时刻间隔在1ms之内,四个Connection
伊芙nt之间的时日距离约为7ms。为了直观呈现测试结果,在PC端写了一个工具以分析抓取的LOG,主要基于包号、包的品种、字节长度和岁月戳,总计丢包率和传输速度,如下图所示。

 

图片 2

 

可以见见,一共传输了约16.3万个包,没有多少丢失,两帧之间最大日子间隔约为22.384ms,最大传输速度为5641Bps,平均速度约为5583ms,与理论值相几乎。Connection
Interval对传输品质的震慑比较下图。

 

图片 3

上图为两台BLE建立连接后,用示波器从中间一台装备中测量的波浪

BLE传输延迟(Latency)紧假诺指设备端将数据放至蓝牙( Bluetooth® )协议栈到Android主机收到的大运间隔。由于通讯双方时间戳不统一,不能依照前边通过打印时间戳的不二法门来做计算传输延迟,只好通过硬件信号做一道。设备端将数据放至蓝牙5.0协议栈时给出一个信号,Android主机收到该数量时也提交一个信号,使用示波器抓取七个信号即可得到数码通过蓝牙5.0BLE传输的延期,如下图所示。

 

图片 4

甲申革命是光阴轴 — 横轴,

可以看出BLE传输延迟约为8ms左右,会上下波动。

耗能量 — 粉红色纵轴

数量传输延迟还跟Android端软件读取数据的户均程度有关,Android端软件需立时将数据从缓存中读取出来,否则也会导致一定的延迟。评估数据读取均匀程度的法子同上,也是由此示波器抓取波形来看,如下图所示。

 

图片 5

尖刺的波就是Connection
伊夫nts

里头1坦途为设备端发送数据,2通路为Android端读取数据,双方节奏基本保持一致,确保了马上读取和分发设备端上报的数量。

 

本文重即使因此打流和抓波形的艺术,验证了蓝牙( Bluetooth® )BLE的传导质量和延时。实际调试进度中还能动用FTS4BT工具分析btsnoop_hci.log文件,以探讨BLE建立链接、Update
Parameters和数目传输等细节。

结余的 Sleeping 是睡眠时间

 

配备在确立连接后的大多数时间都是地处Sleeping的意况的

 

这种气象下,耗能量只有1uA

 

而在Connection
伊夫nts中,最高的是十多少个毫安

 

那就是BLE为啥省电的原因

 

在每个Connection
伊芙nts事件中,都需求由Master发起包,再由slave回复

 

 

Connection
Parameters

 

透过改动那多少个参数,就足以安装BLE连接的传输速度和功耗

 

1、Connection
Interval

指在一个Connection 伊芙nts的先河到下一个Connection 伊芙nts 的起来
的时间间隔

 

单位是1.25ms,最小是7.5ms,最大是4.0s

 

2、Slave
Latency

同意Slave设备在尚未多少要发的事态下,跳过早晚数额的Connection 伊芙nts

在那几个Connection
伊芙nts中不用回复master的包,那样就能更进一步省电

 

界定能够是0~499

 

3、Supervision
Timeout

其一参数设定了一个超时时间,若是BLE在那一个时辰内没有暴发通信的话,就会活动断开

 

单位是10ms,范围是100ms ~
32s

 

总得知足如下公式:

Supervision Timeout > (1
+ slaveLatency)* (connectionInterval)

 

slaveLatency不可能算在 supervision
提姆eout的时刻内,否则连接就会不正常断开

 

图片 6

 

上图slaveLatency 为0
时,master发包,slave必须回复,
假如不东山再起,master就会觉得slave那边接受不正规

slaveLatency 为 3 时, master
发包,slave允许有3个包不回复

 

参数的影响:

 

Connection Interval 浓缩,master与slave通讯越发频仍,进步了功耗,升高多少吞吐速度,缩小数据发送时间

Connection Interval
加长,通讯频率下降,下降耗能,数据吞吐速度回落,数据发送等待时间更长

 

slaveLatency
减弱或者设置为0,每便connection Envents中就都急需应对master的包

耗电上涨,数据发送速度会增高

slaveLatency
加长,功耗下落,数据发送速度下落

 

这几个参数都是足以在一连建立将来动态修改的

 

 

迎接调换

如有转发请评释出处

乐乎博客:http://blog.sina.com.cn/u/2049150530
博客园:http://www.cnblogs.com/sky-heaven/
知乎:http://www.zhihu.com/people/zhang-bing-hua

 

 

 

相关文章