我是靠谱客的博主 失眠白羊,最近开发中收集的这篇文章主要介绍蓝牙5传输率估算 (BLE5 Throughput),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

蓝牙物理层支持的速率

蓝牙5物理层支持1M PHY,2M PHY和Coded PHY。1M和2M又称为Uncoded PHYs,因为它的每个信号单位(1-symbol)代表了一个bit位。而Coded PHY有两种,分别是每2个(S2)和每8个(S8)信号单位构成一个bit位。

PHY

理论相对传输距离

优势

2M2 Mbps~0.8x

能耗低和频段占比低

1M1 Mbps1x

兼容性好

Coded S2500 kbps2x

传输距离相对远

Coded S8125 kbps4x

传输距离远

实际传输率要低于理论速率

造成实际传输率低于PHY支持速率的因素有:

  • 每个连接间隔(connection interval)内所能包含的数据包个数限制 

        两个蓝牙设备连接后其传输频率是跳频的,即每隔一段时间转换一个频道。每次转换称为一个连接事件(connection event),而每个连接事件的间隔(connection interval)是以1.25ms为单位在6(7.5ms)至3200(4.0s)之间可调的。

        每个连接事件内可以传输多个包,而可传输包的个数因系统不同而有不同的限制。但它肯定小于连接间隔时间除以单个包的传输时间。

  • 数据包之间的间隔时间段(IFS:Inter Frame Space)

        蓝牙协议规定在同一频道内前一数据包的尾部与下一个包的头部之间的间隔应为150us。

  • 空数据包的时间

        蓝牙设备接收到数据包后,即使没有数据要返回,也需要返送一个空包。

  •  数据包内由于包头的存在,有效数据要小于包的整体大小
  • 上图ATT payload中包含着有效数据。蓝牙4.0和4.1版本规定其最大尺寸是20字节,4.2和5.0版本以后,最大尺寸是244字节。

  • 实际传输率的估算

    • 假设每包传输最大数据长度,即ATT MTU为257字节。

              整个包的字节数 (1M) = 1 + 4 + 2 + 4 + 247 + 3 = 261 bytes

              整个包的字节数 (2M) = 2 + 4 + 2 + 4 + 247 + 3 = 262 bytes

      如果是1M速率:

              一个数据包的传输时间 = 261 * 8 bits = 2088 bits = 2088 us

              一个空包的传输时间 = 10 * 8 bits = 80 bits = 80 us

              每个包的总传输时间 = 数据包 + 间隔 + 空包 + 间隔 = 2088 + 80 + 2 * 150 = 2468 us

      如果是2M速率:

               一个数据包的传输时间 = 262 * 8 bits / 2 = 2096 bits / 2 = 1048 us

               一个空包的传输时间 = 11 * 8 bits / 2 = 88 bits / 2 = 44 us

               每个包的总传输时间 = 数据包 + 间隔 + 空包 + 间隔 = 1048 + 44 + 2 * 150 = 1392 us

      假设连接间隔是50ms,

               每个连接事件中的最大数据包数 (1M) = 50 * 1000 us / 2468 us <= 20

               每个连接事件中的最大数据包数 (2M) = 50 * 1000 us / 1392 us <= 35

      最大传输率估算:

               估算 (1M) <= 20 * 244 * 8 bit / 50 ms = 780.8 kbps

               估算 (2M) <= 20 * 244 * 8 bit / 50 ms = 1366.4 kbps

最后

以上就是失眠白羊为你收集整理的蓝牙5传输率估算 (BLE5 Throughput)的全部内容,希望文章能够帮你解决蓝牙5传输率估算 (BLE5 Throughput)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部