蓝牙低功耗技术的传输速率

低功耗蓝牙的应用程序级数据吞吐量 受许多因素影响。我们可以区分两种吞吐量计算非常不同的操作:

1)确认的数据传输。在这种情况下,接收器会确认所有数据包的接收。接收器在下一个连接间隔中针对每个读/写请求发送响应。在这种情况下,连接可靠,但吞吐量低。

2)未确认的数据传输。在这种情况下,数据包可以彼此立即发送,而不必等待对方确认。这样可确保更高的吞吐量,但连接可靠性较差。

通过发送不同类型的数据包,可以在同一连接上混合已确认和未确认的操作。以下数据包类型导致确认的操作:

读取(读取请求)
写(写请求)
适应症
准备写
签名写
以下数据包类型导致未确认的操作:

写无响应(写命令)
通知
1.确认数据传输的吞吐量计算
在确认数据传输的情况下,吞吐量取决于以下参数:

连接间隔
MTU大小
属性协议操作
1.1连接间隔
连接间隔定义了发送数据的频率,它介于7.5 ms到4000 ms之间。一旦发送方发送了数据(或请求),它就必须等待接收方发送确认。因此,一次(GATT)操作需要2个连接间隔。

连接间隔越短,潜在的数据速率就越高。例如,使用7.5 ms的最小连接间隔(例如125字节有用负载/连接间隔),无线电设备可以(假设没有丢失的数据包并且没有重新传输)达到理论数据速率:

1000毫秒/(2 * 7.5毫秒)* 125字节= 8,333字节/秒= 66,666 bps

另一方面,当使用最大连接间隔为4000 ms(例如,使用22字节有用负载)时,数据速率将降低为:

1000毫秒/(2 * 4000)毫秒* 22字节= 2.75字节/秒= 22 bps

1.2 MTU大小
MTU(最大传输单位)大小表示一次GATT操作可以发送多少个字节,即在2个连接间隔内可以发送多少个字节。可以为每个连接设置MTU大小。但是,它有一个上限,随蓝牙协议栈版本的不同而不同。下表总结了每个蓝牙堆栈版本的最大MTU大小

蓝牙堆栈版本最大MTU大小对于旧版设备(BLExxx)<= 1.5.0 23对于Blue Gecko设备 1.0.x 23 2.0.x 58 2.1.x 126 2.3.x或更高版本 250

注意:MTU大小取决于两侧。如果远程设备支持较小的MTU大小,则将使用较小的MTU大小。显然,MTU大小越大,吞吐量就越高。MTU大小的两倍使吞吐量翻了一番。

1.3属性协议(ATT)操作
重要的是要知道MTU大小包括长度可变的GATT标头。这意味着有用的有效负载比MTU小。GATT标头的大小取决于操作类型,因此最大有用负载对于不同操作是不同的。下表中对此进行了总结:

ATT操作最大有用数据/ ATT操作读 MTU-1个字节写 MTU-3个字节适应症 MTU-3个字节准备写 MTU-3个字节签名写 MTU-15个字节

1.4使用ACK可以的最大骨折
在确认操作的情况下,可以通过以下参数实现最大吞吐量:

连接间隔: 7.5毫秒
MTU大小: 250个字节
使用的属性协议操作: 读取
这导致最大吞吐量为

1000毫秒/(2 * 7.5毫秒)*(250-1)字节= 16,600字节/秒= 132,800 bps

2.吞吐量计算,用于未确认的数据传输
如果发生未经确认的数据传输,则吞吐量取决于以下参数:

包大小
属性协议操作
PHY(物理层)比特率
连接间隔
2.1 包大小
蓝牙数据以数据包形式发送。可以在一个连接间隔内立即相互发送多个数据包(帧间间隔为150 us)。数据包的长度可变,但是其长度有上限。数据包的最大PDU(协议数据单元)大小取决于蓝牙堆栈版本,如下表所示:

蓝牙堆栈版本蓝牙标准PDU最大大小对于旧版设备(BLExxx)<= 1.5.0 4.0 27字节对于Blue Gecko设备 1.0.x 4.0 27字节 2.0.x 4.2 38字节 2.1.x 4.2 38字节 2.3.x 5.0 128字节 2.4.x 5.0 160字节 2.6.x或更高版本 5.0 251字节

数据包大小的两倍并不意味着吞吐量翻倍,因为较大的数据包需要花费更多的时间发送,因此在相同的时间间隔内可以发送的数据包更少。但是,数据包大小越大,开销也越小。这增加了应用程序级别的数据吞吐量。

例如,对于27字节PDU,它需要

328us + 150us + 80us + 150us = 708us

发送一个数据包。328 us是有效传输时间,150 us是IFS(帧间空间),80 us正在接收,150 us又是IFS。这意味着理论数据速率为:

27字节/ 708 us = 38,135字节/秒= 305,080 bps

如果是251字节的PDU,

2120我们+ 150我们+ 80我们+ 150我们= 2500我们

发送一个数据包。这意味着理论数据速率为:

251字节/ 2500 us = 100,400字节/秒= 803,200 bps

注意:数据包大小取决于双方。如果远程设备支持较小的数据包大小,则将使用较小的数据包大小。

有关数据包计时的更多详细信息,请参见以下文章:https :
//blog.bluetooth.com/exploring-bluetooth-5-how-fast-can-it-be

2.2 属性协议操作
重要的是要知道PDU的大小包括L2CAP头(长度为4个字节)和GATT头(长度可变)。这意味着数据包的有用有效载荷比PDU大小小一点。GATT标头的大小取决于操作类型,因此最大有用负载对于不同操作是不同的。下表中对此进行了总结:

ATT操作MAx数据包的有用数据有效载荷没有回应就写 PDU-4-3个字节通知 PDU-4-3个字节

这意味着使用251字节PDU发送通知,理论上的有效数据速率为:

(251 – 4 – 3)字节/ 2500 us = 97,600字节/秒= 780,800 bps

如果MTU大于PDU,则可以在一个GATT操作中发送多个数据包。在这种情况下,只有第一个数据包包含L2CAP报头和GATT报头,随后的数据包仅包含PDU中的数据。

2.3 PHY(物理层)比特率
蓝牙4.2指定PHY比特率精确为1 Mbps。

蓝牙5(在蓝牙SDK v2.3中引入)指定了更多PHY比特率:

2 Mbps
1 Mbps。
500 kbps(使用1:2卷积编码的1 Mbps)
125 kbps(使用1:8卷积编码的1 Mbps)
这些比特率仅定义符号时间,而不定义有效吞吐量。但是,PHY比特率越高,吞吐量就越高。双比特率意味着几乎双倍的吞吐量。由于IFS恒定,它不是精确的两倍(1 Mbps和2 Mbps IFS = 150 us)

下表总结了发送具有不同PDU大小和PHY比特率的数据包所花费的时间。时间包括发送+ IFS +接收+ IFS!

1 Mbps2 Mbps 27字节 708我们 — 38字节 796我们 548我们 128字节 1516我们 908我们 160字节 1772我们 1036我们 251字节 2500美元 1400我们

例如,如果您使用2 Mbps PHY和251字节PDU,则理论吞吐量为:

(251 – 4 – 3)字节/(1060 + 150 + 40 + 150)us = 174,285字节/秒= 1,394,280 bps

有关更多详细信息,请参见:https :
//blog.bluetooth.com/exploring-bluetooth-5-how-fast-can-it-be

2.4 连接间隔
如果不需要确认,则可以在一个连接间隔内发送任意数量的数据包。因此,连接不应直接影响吞吐量。但是,数据包必须对齐,以便第一个包在连接间隔的开始处开始。例如,如果您有7.5毫秒的连接间隔,251字节PDU,2 Mbps PHY,则可以在一个连接间隔中发送4个数据包。第5个数据包不适合,必须等待下一个连接间隔开始。

这意味着这些参数的有效吞吐量为:

4 *(251 – 4 – 3)字节/ 7500 us = 130,133字节/秒= 1,041,066 bps

为避免跳过的程序包带来的开销,您可以调整连接间隔,以使连接间隔结束时的剩余时间最少。更长的连​​接间隔通常意味着较少的开销,这是因为重新调整的频率降低了。

但是,如果连接间隔过长,请小心

等待下一个连接间隔时,可能有太多的数据包排队,您可能会用完内存,
如果由于连续的CRC错误而导致连接中断,您可能需要等待更多时间才能重新同步。因此,在可能出现CRC错误的嘈杂环境中,建议不要使用较长的连接间隔。
2.5 无需ACK即可实现的最大爆炸
如果发生未经确认的操作,则可以使用以下参数实现最大吞吐量:

连接间隔: 12.5毫秒
PDU大小: 251个字节
使用的属性协议操作: 无响应写入/通知
PHY比特率:2 Mbps
在这种情况下,8个数据包适合一个连接间隔(8 * 1400 us = 11200 us),理论吞吐量为:

8 *(251 – 4 – 3)字节/ 12,500 us = 156,160字节/秒= 1,249,280 bps

3.智能手机注意事项
连接参数和MTU大小取决于参与连接的两个设备。连接到智能手机时,设备开始协商连接间隔和MTU大小。根据智能手机和操作系统版本的不同,最小连接间隔可能远远大于7.5 ms,最大MTU大小可能小于Blue Gecko支持的MTU大小。这对吞吐量有关键影响。协商的参数由堆栈事件gecko_evt_le_connection_parameters和 gecko_evt_gatt_mtu_exchanged发出信号,因此您可以检查手机支持哪些参数。

(上述文章阐述归伦茨科技公司所有,转载请注明出处,更多相关信息欢迎关注微信公众号:lenze_tech或微信号:lenzetech,点击http://www.lenzetech.com/)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值