耗电量 — 黄色纵轴,紧要基于包号、包的品种、字节长度和时间戳

BLE传输品质紧要受以下几个要素影响:操作类型,Connection
Interval,每个Connection
Event内发送的帧数、每一帧数据的长度。具体参见如下链接:

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)紧若是指设备端将数据放至蓝牙5.0协议栈到Android主机收到的小时间隔。由于通讯双方时间戳不合并,无法依据后边通过打印时间戳的办法来做统计传输延迟,只可以通过硬件信号做一道。设备端将数据放至蓝牙5.0协议栈时给出一个信号,Android主机收到该数额时也交给一个信号,使用示波器抓取五个信号即可获取数码经过蓝牙( Bluetooth® )BLE传输的推迟,如下图所示。

 

图片 4

藏蓝色是时刻轴 — 横轴,

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

耗能量 — 红色纵轴

数码传输延迟还跟Android端软件读取数据的人均程度有关,Android端软件需及时将数据从缓存中读取出来,否则也会导致一定的推迟。评估数据读取均匀程度的主意同上,也是透过示波器抓取波形来看,如下图所示。

 

图片 5

尖刺的波就是Connection
伊夫nts

其中1通路为设备端发送数据,2大路为Android端读取数据,双方节奏基本保持一致,确保了当时读取和分发设备端上报的数额。

 

正文重如果经过打流和抓波形的法门,验证了BluetoothBLE的传导质量和延时。实际调试进度中还足以接纳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

 

 

 

相关文章