一、基础知识:
【1】Data Length:物理层发送一包数据的最大值;
【2】MTU: ATT层发送一次数据长度的最大值;
【3】GAP Event Length:一个connection event中多包持续最大时间,相应的限制了每个连接间隔中间的最大包数;
【4】PHY : 物理层发送速率,目前支持1Mbps和2Mbps;还有长距离传输用的CODED,也是1Mbps的,但编码方式不同。
【5】Connection Interval:连接间隔;
【6】connection event length extension:连接事件长度扩展。可使能或者禁能。不太理解该项,因为未得到验证,但字面意思为:控制连接间隔之间是否可以发送多包的开关。
规定:
下行:主给从发数据;
上行:从给主发数据;
二、空中抓包速率对比:
1. nordic主对nordic从:
参数设置: data length = 251字节,MTU = 247字节, GAP Event Length = 500ms, PHY = 2Mbps,
connection event length extension = enable,
(1)Connection Interval = 7.5ms时:
下行:
上行:
单个event的时间:
从上面的图中可以看出,7.5ms连接间隔时(其它参数值看上面),
上下行连接间隔中可以发四包数据,所以,速率理论上为:188KB/s,但实测发送1000包速率平均为132KB/s.
(2)Connection Interval = 30ms时:
下行:
上行:
单个event时间:
从上面的图中可以看出,30ms连接间隔时(其它参数值看上面),
上下行连接间隔中可以发20包数据,所以,速率理论上为:178KB/s,但实测发送1000包速率平均为164KB/s.
(3)Connection Interval = 500ms时:
下行:
上行:
单个event时间:
从上面的图中可以看出,500ms连接间隔时(其它参数值看上面),
上下行连接间隔中可以发更多包数据,推算理论速率上为:176KB/s,但实测发送1000包速率平均为176KB/s.
通过上面不同连接间隔的设定,我们大致可以看出,当连接间隔增大时,实际速率会更接近理论速率,这是由于各个连接间隔之间的空余部分基本上都是一样大的,当连接间隔增大时,这部分空间占的比重会更小,因此通讯速率也就更高。但是过大的连接间隔有一个问题,那就是如果一个应用数据包通讯出错,那么该应用数据包得到纠正的时间至少是下一个连接间隔,导致响应时间变长,所以更短的连接间隔更容易纠错,更长的连接间隔速率更高。30ms时的速率和纠错时间达到了一个比较好的平衡,所以大数据量传输时,选择这个连接间隔会比较好一些。如果数据量非常小的话,还是7.5ms速度最快,响应时间最短。
关于其它几个参数:
PHY:PHY为2Mbps相对于1Mbps时快一倍,这个是直接的,比如1Mbps传输一个bit需要1us的时间,但是在2Mbps时,只需要0.5us。
由于是满包发送,且我的需求是发送的数据量越大越好,所以我把GAP Event Length和MTU和data length都设置成了最大进行测试。
nrf52840蓝牙BLE5.0空中速率测试(nordic对nordic)
原文:https://www.cnblogs.com/unrulife/p/10762527.html