蓝牙BLE传输到底有多快?

蓝牙BLE传输到底有多快?

  我们在开发蓝牙产品的时候,经常会被问到,这个文件传输用蓝牙可以做吗? 多长时间可以传完? 蓝牙的传输速率是多大?很多人对蓝牙的传输速率可能只有一个大概的概念几KB?几十KB? 下面就来看一下蓝牙的传输速率到底有多快?

众所周知,对于无线连接,链路维护和数据包冗余会产生一定的传输成本,以保持蓝牙连接的健壮和高效。对于蓝牙 LE 连接,从一台设备到其对等设备的一个完整传输周期是这样的:

在这里插入图片描述

  • “T”槽为传输包;它包括帧头、有效载荷和完整性检查字段,有用的数据将位于有效载荷中进行传输。
  • “R”槽是从对端设备接收数据包;当设备向对等设备发送一个数据包时,对等设备将返回一个具有最小数据包长度的数据包,以指示先前的传输成功。
  • “T_IFS”是帧间空间;它定义了两个连续数据包之间的时间间隔。无论您使用的是蓝牙 5 还是蓝牙 4.0,“T_IFS”都应为 150 µs。关于“T_IFS”的详细信息,请参阅蓝牙 5核心规范第 6 卷 B 部分第 4.1 节。

因此,连接的低功耗蓝牙数据吞吐量的公式为:

在这里插入图片描述

使用这个公式,我们将在建立连接时计算从 4.0 到 5 的数据吞吐量。

蓝牙 v4.0/4.1

蓝牙® v4.0/4.1 具有相同的低能量数据包格式和相同的调制速率,1Mb/s,这意味着发射器具有在一秒钟内传输 1 兆比特的能力。

在这里插入图片描述

上图表示4.0/4.1链路层数据包的包格式、PDU格式和报头格式。从图上图 中可以看出,长度字段的长度为 5 位(已突出显示;5 位等于二进制的 0b11111,十六进制的 0x1F,十进制的 31),它的范围为 0 到 31 个八位字节,表示长度有效载荷和 MIC(如果包括)。Payload 字段的长度应小于或等于 27 个八位字节,因为 MIC 的长度为 4 个八位位组,31 – 4 = 27。

在这里插入图片描述

上图是一个完整的周期图。从图3可以看出,一个完整周期的时间包括:

  • “R”槽

空 PDU 长度为:10 个八位字节,因为:

前言访问地址标题CRC
1423

空 PDU 的长度 = 1 + 4 + 2 + 3 = 10 个八位字节。

它将消耗 80 µs x 1Mb/s,因为:
在这里插入图片描述

  • T_IFS, 150 m
  • “T”槽

最大数据包长度为:

前言访问地址标题有效载荷麦克风CRC
1422743

1 + 4 + 2 + 27 + 4 + 3 = 41 个八位字节

它将消耗 328 µs,因为:

在这里插入图片描述

对于 4.0/4.1 吞吐量,计算为:

在这里插入图片描述

蓝牙 v4.2

对于蓝牙v4.2,调制速率与 4.0 和 4.1 相同,仍为 1Mb/s。但数据包格式不同。区别如下图,图4。

在这里插入图片描述

从上图中可以看出,长度字段的长度为 8 位(已突出显示,8 位等于二进制的 0b11111111,十六进制的 0xFF,十进制的 255),它的范围为 0 到 255 个八位字节,表示长度有效载荷和 MIC(如果包括)。Payload 字段的长度应小于或等于 251 个八位字节,因为 MIC 的长度为 4 个八位字节,255 – 4 = 251。

在这里插入图片描述

上图是一个完整周期图,从图5可以看出,一个完整周期的时间包括:

  • “R”槽

与 v4.0/4.1 相同,80 µs。

  • T_IFS, 150 m
  • “T”槽

最大数据包长度为:

前言访问地址标题有效载荷麦克风CRC
14225143

1 + 4 + 2 + 251 + 4 + 3 = 265 个八位字节

它将消耗 2120 µs,因为:

在这里插入图片描述

对于 4.2 吞吐量,计算为:

在这里插入图片描述

蓝牙 5

对于蓝牙5,调制速率有两个选项。第一个是1Mb/s,如蓝牙v4.0/4.1/4.2;第二个是我们接下来要讨论的,2Mb/s。从蓝牙 v4.2 到蓝牙 5 的数据包格式相同:有效载荷为 251 个八位字节。因此蓝牙5 1Mb/s 的数据吞吐量与蓝牙 4.2 相同。

但是开启2Mb/s后就不一样了。您可以在图 6 中看到这一点。

在这里插入图片描述

上图是一个完整的周期图。从上图可以看出,一个完整周期的时间包括:

  • “R”槽

空 PDU 的长度为 10 个八位字节:

前言访问地址标题CRC
1423

空 PDU 的长度 = 1 + 4 + 2 + 3 = 10 个八位字节。

它将消耗 40 µs x 2Mb/s,因为:

在这里插入图片描述

  • T_IFS, 150 m
  • “T”槽

最大数据包长度为:

前言访问地址标题有效载荷麦克风CRC
14225143

1 + 4 + 2 + 251 + 4 + 3 = 265 个八位字节

它将消耗 1060 µs,因为:

在这里插入图片描述

对于蓝牙 5 吞吐量,计算公式为:

在这里插入图片描述

结论

对于蓝牙®低功耗理论上的吞吐量,下图说明了蓝牙低功耗规范之间的差异。您可以看到蓝牙 5 的带宽是 4.0/4.1 的约 4.6 倍和 4.2 的约 1.7 倍。更高的带宽可以转化为更高的速度,这将使低功耗蓝牙能够比以往更快地传输数据流——更高效、更少的频段占用,更适合快速数据传输。对于无线固件升级或可穿戴设备数据日志同步等应用场景,蓝牙 5 将带来出色的用户体验,而更高的速度将为未来的高数据速率流传输构建坚实的平台。
在这里插入图片描述

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Android Studio开发一个蓝牙BLE传输的App相对简单,以下是一个基本的步骤: 1. 首先,在Android Studio中创建一个新的项目。选择Empty Activity模板,并在后续配置中选择使用Kotlin或Java作为开发语言。 2. 在AndroidManifest.xml文件中添加蓝牙相关的权限和特性声明,例如: <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 3. 在build.gradle(Module:app)文件中添加Bluetooth API的依赖项,例如: implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:cardview-v7:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' 4. 创建一个新的Activity用于扫描和连接蓝牙设备,例如BluetoothActivity。 5. 在BluetoothActivity的布局文件中添加一个RecyclerView用于显示扫描到的蓝牙设备列表,并在代码中初始化RecyclerView的适配器。 6. 在BluetoothActivity的代码中,使用BluetoothAdapter类扫描周围的蓝牙设备,并将它们添加到RecyclerView的适配器中。 7. 在RecyclerView的适配器中,为每个蓝牙设备创建一个点击事件监听器,以便用户可以选择一个设备来建立BLE连接。 8. 创建一个新的Activity用于处理已连接的蓝牙设备,并在该Activity的布局文件中添加一个读写蓝牙数据的按钮。 9. 在该Activity的代码中,使用BluetoothGatt类来连接已选中的设备,并实现相应的监听器来处理BLE连接状态和数据传输。 10. 使用BluetoothGatt类的方法来读取、写入和监听蓝牙数据的变化。 11. 最后,在Manifest文件中为每个Activity添加相应的声明,以便在运行时访问蓝牙权限。 通过以上步骤,你就可以使用Android Studio开发一个简单的蓝牙BLE传输的App。当然,具体的代码实现细节还需要根据你的需求和具体的蓝牙设备进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网布道师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值