- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已阅读技术规范并试图了解为什么 BLE 4.2 比 BLE 4.1 更快?
我们能否发送大于 20 字节的数据包或者连接间隔是否更快?
我想了解是什么让 BLE 4.2 更快。
最佳答案
与早期相比,蓝牙 4.2 中唯一提供更高吞吐量的是链路层的长度扩展。它使得发送长度为 251 字节的数据 pdus 成为可能,而不是之前的限制 27 字节。以前,如果由于 header 大小以及 rx 和 tx 数据包之间以及从 tx 到 rx 之间所需的时间而发送多个数据包,这意味着很大的开销。数据本身以 1 MBit/s 的速度通过无线方式发送。
请注意,双方都需要支持此新功能,并且新的最大长度必须在设备之间协商才能使用。
这里我将解释一个典型的连接事件,同时中央写入多个 GATT Write 命令数据包,每个数据包 20 个字节。由于无线传输速率为 1 MBit/s,因此传输每位需要 1 μs。链路层头部和底部总共 80 位,包括以下内容:1 个字节的前导码 + 4 个访问地址(用于将数据包识别到正确目的地的内容)。 1 个字节包含流/确认和数据类型。 1 个字节包含数据包的长度。然后是数据,后跟一个 3 字节的 CRC 校验和。用户数据包本身封装在 ATT 数据包(带有操作码和 ATT 句柄的 3 字节 header )中,后者又封装在 L2CAP 数据包(2 字节 channel ID 和 2 字节长度)中。所以 20 字节的大数据包现在变成了 37 字节,通过空中发送。在空中,主机和从机在发送和接收之间交替。所以如果master发送了很多数据包而slave没有什么可发送的,slave仍然必须用一个80位头的空包来响应。此外,在所有数据包之间,必须有 150 μs 的 radio 静默,以便让 radio 有时间在 RX 和 TX 之间切换。因此,一个包含 4 个数据包的连接事件,每个数据包填充了 20 个字节的用户数据,如下所示:
所有这些加起来为 2554 μs
1. Master -> Slave:296 μs 第一个数据包
2.静默150μs
3. Slave -> Master: 80 μs 空包
4.静默150μs
5. Master -> Slave:296 μs 第二个数据包
6.静默150微秒
7. Slave -> Master: 80 μs 空包
8. 静默 150 μs
9. Master -> Slave:296 μs 第 3 个数据包
10.静默150微秒
11. 从站 -> 主站:80 μs 空包
12. 静默 150 μs
13. Master -> Slave:296 μs 第 4 个数据包
14.静默150微秒
15. 从站 -> 主站:80 μs 空包
使用新的数据包长度扩展,我们可以在一个数据包中发送相同的 80 字节(仍然是 17 字节 header + CRC 的开销)= 97 字节 = 776 位。
1. Master -> Slave:776 μs 数据包
2.静默150μs
3. Slave -> Master: 80 μs 空包
这加起来只有 1006 微秒,比以前快两倍多! radio 现在可用于为来自另一个连接的连接事件提供服务。
如您所见,吞吐量增加了。但是要使这个新功能有用,您需要确保用数据包填充连接事件。您当然可以在一个连接事件期间更快地发送相同数量的数据,但如果您只是在下一个连接事件之前将剩余时间闲置,您并不能真正更快地发送数据。
关于bluetooth-lowenergy - 为什么 BLE 4.2 比 BLE 4.1 快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39371797/
来自 this book它说 A peripheral can be connected to multiple centrals. 任何 BLE 模块都可以做到这一点吗?更具体的可以bluegiga
对于从 BLE 设备读取数据 block (9000 字节)的应用程序,我需要尽可能快地修改连接间隔。 我正在使用 linux 内核 = 3.14.43 运行 BlueZ 堆栈 4.101 目前,我可
BLE广告最多可以发送31个字节。在广告内,可能有多个广告。 我想知道制作一个广告仅包含一个制造商特定数据广告是否有效,并且这种广告是否可以填满所有31个字节(长度字段为1个字节,类型字段为(0xff
在尝试研究 BLE 时,我想知道是否可以通过 Wireshark 和 snort 等工具对其进行分析?我遇到了一个名为“ubertooth”的设备,但这是一个需要购买的 USB 设备,以便我们在 BL
LE随机地址是怎么产生的,一般用什么算法产生? 最佳答案 这是一个随机数。所以除非特殊情况,否则不应该是可逆的。地址中的高 2 位指示其余部分是否可通过 key 解析。建立关联时, key 在服务器和
我的问题是关于服务请求。在 BLE 中,广告数据包中有服务请求的选项。服务征集是什么意思??在什么情况下,我们将服务请求数据包含在广告数据包中? 最佳答案 想法是,当设备扫描广告设备时,在其广告数据中
我的问题是关于服务请求。在 BLE 中,广告数据包中有服务请求的选项。服务征集是什么意思??在什么情况下,我们将服务请求数据包含在广告数据包中? 最佳答案 想法是,当设备扫描广告设备时,在其广告数据中
我想知道处于从属角色的 LE 设备的链路层是否可以有多个主控。我知道master可以有多个slave,但是一个slave可以有多个master吗? 最佳答案 来自 1.2 蓝牙低功耗操作概述、蓝牙 v
我知道 iBeacon 的定义是它正在传输的广告数据包的固定规范: 9 字节 iBeacon 前缀 16 字节 UUID 2 个字节主要 2 字节次要 1 字节 TX 功率 话虽如此,是否有任何东西可
阅读文档,我构建了 2 个使用 BLE 连接 2 个 iDevices 的应用程序。 一个设备是中央设备,另一个是外围设备。 Central在寻找Peripheral,当找到它时,探索它的服务和特性,
这个问题与Android notificatinos无关,但与BLE通知有关(标题可能暗示) 我在Android-L上有基本的BLE外设模式 有什么方法可以在Android-L预览中实现BLE通知。我
我正在从事一个需要 Windows 通用应用程序与 BLE 设备通信的项目。我正在尝试找到一种方法,以查看如何扫描、配对和发送/接收数据的低功耗蓝牙设备。 最佳答案 Windows.Devices.E
我正在研究使用多个 iBeacons 进行“粗略”室内定位的可能性。该应用程序是一种“博物馆”设置,能够更容易地形成一个包含不同对象位置的网格,然后形成单独的信标(尽管这也不是不可能的)。 是否有使用
BLE的GATT架构适用于固定的小数据块(每个特性最大20字节)。但是在某些情况下,您最终想要“流式传输”任意长度的数据,该长度大于20个字节。例如,即使您知道固件升级很慢,也可以进行固件升级。 我很
蓝牙 5.1 规范宣布了一项新的测向功能,该功能有望显着提高蓝牙定位服务解决方案的性能。新功能允许设备确定蓝牙信号的方向,从而能够开发能够理解设备方向的蓝牙近距离解决方案以及能够实现厘米级定位精度的蓝
我正在阅读蓝牙核心规范。 v 4.2 文档,但我找不到有关特征长度限制的任何信息。 BLE 服务特性的长度限制是多少? 最佳答案 限制由属性值的可能值设置,请参阅 ATT 部分(第 3 卷,第 F 部
我的应用程序需要同时连接9个Ble设备。 在此article和任何其他资源中,它写到android 4.4+只能连接到7个设备。 M或N版本有什么新功能吗? 谢谢。 最佳答案 连接数受常数MAX_L2
我一直在寻找在一次扫描中扫描大量 BLE 标签 (StickNFind) 的可能性。我注意到,当我扫描 10 秒时,我可以轻松检测到大约 20 个 BLE。当我将扫描间隔增加到 30 秒左右并尝试扫描
总结:Micropython Bluetooth BLE scan() 不返回完整的广告负载,特别是缺少“完整的本地名称”。 设置: ESP32-WROOM-32 esp32-idf4-2021020
我正在尝试自动重新连接到 BLE 设备,在这种情况下是 Taidoc 温度计。我已经扫描了设备,然后发出了一个成功的“pair”命令,然后发出了一个也成功的“trust”命令。 如果我在设备上执行“信
我是一名优秀的程序员,十分优秀!