概述
蓝牙物理层支持的速率
蓝牙5物理层支持1M PHY,2M PHY和Coded PHY。1M和2M又称为Uncoded PHYs,因为它的每个信号单位(1-symbol)代表了一个bit位。而Coded PHY有两种,分别是每2个(S2)和每8个(S8)信号单位构成一个bit位。
PHY | 速率 | 理论相对传输距离 | 优势 |
---|---|---|---|
2M | 2 Mbps | ~0.8x | 能耗低和频段占比低 |
1M | 1 Mbps | 1x | 兼容性好 |
Coded S2 | 500 kbps | 2x | 传输距离相对远 |
Coded S8 | 125 kbps | 4x | 传输距离远 |
实际传输率要低于理论速率
造成实际传输率低于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)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复