• nrf52840蓝牙BLE5.0空中速率测试(nordic对nordic)


    一、基础知识:

    【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:连接事件长度扩展。可使能或者禁能。不太理解该项,因为未得到验证,但字面意思为:控制连接间隔之间是否可以发送多包的开关。

    规定:

    下行:主给从发数据;write without rsp属性

    上行:从给主发数据;notify属性

    二、空中抓包速率对比:

    1. nordic主对nordic从:

    参数设置: data length = 251字节,MTU = 247字节, GAP Event Length = 500ms, PHY = 2Mbps,

    connection event length extension = enable,

    (1)Connection Interval = 7.5ms时:

    下行:

    image

    上行:

    image

    单个event的时间:

    image

    image

    从上面的图中可以看出,7.5ms连接间隔时(其它参数值看上面),

    上下行连接间隔中可以发四包数据,所以,速率理论上为:188KB/s,但实测发送1000包速率平均为132KB/s.

    (2)Connection Interval = 30ms时:

    下行:

    image

    上行:

    image

    单个event时间:

    image

    image

    从上面的图中可以看出,30ms连接间隔时(其它参数值看上面),

    上下行连接间隔中可以发20包数据,所以,速率理论上为:178KB/s,但实测发送1000包速率平均为164KB/s.

    (3)Connection Interval = 500ms时:

    下行:

    image

    上行:

    image

    单个event时间:

    image

    image

    从上面的图中可以看出,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都设置成了最大进行测试。

    >>上行和下行同时无脑发送:

    参数设置: data length = 251字节,MTU = 247字节, GAP Event Length = 500ms, PHY = 2Mbps,

    connection event length extension = enable,

    (1)Connection Interval = 7.5ms时:

    上下行均发送1000包总览:

    image

    从图片可以看出,总时间为3.76秒,混合速率为:127KB/s;上行和下行的时间基本一致,所以上下行速率均为:63.5KB/s。

    连接间隔查看:

    image

    从上图看出,一个连接间隔里一般有4包,其中两包为下行,两包为上行数据。图中蓝色代表下行,绿色代表上行。

    (2)Connection Interval = 30ms时:

    上下行均发送1000包总览:

    image

    从图片可以看出,总时间为2.5秒,混合速率为:193KB/s;上行和下行的时间基本一致,所以上下行速率均为:96.5KB/s。

    连接间隔查看:

    image

    从上图看出,一个连接间隔里一般有24包,其中12包为下行,12包为上行数据。图中蓝色代表下行,绿色代表上行。

    (3)Connection Interval = 500ms时:

    上下行均发送1000包总览:

    image

    从图片可以看出,总时间为2.05秒,混合速率为:198KB/s;上行和下行的时间基本一致,所以上下行速率均为:99KB/s。

    从上图看出,一个连接间隔里的包数不固定,图片里已经重叠显示了,这种很大连接间隔就是在通信比较稳定时有效,如果不稳定,

    一旦出问题,下一包的发送就只能等下一个连接间隔了这样反而会变慢,比较适合对实时性要求不高且数据量较大以及在无通讯数据时要求超低功耗的场合。

    将以上速率形成表格:

    image

  • 相关阅读:
    Java动态代理设计模式
    AOP的相关概念
    如何解决表单提交的中文乱码问题
    怎么防止重复提交
    http的响应码200,404,302,500表示的含义分别是?
    JSP三大指令是什么?
    说一下 session 的工作原理?
    session 和 cookie 有什么区别?
    说一下 JSP 的 4 种作用域?
    jsp有哪些内置对象?作用分别是什么?
  • 原文地址:https://www.cnblogs.com/unrulife/p/10762527.html
Copyright © 2020-2023  润新知