关于电气工程 Stackexchange 的后续问题 https://electronics.stackexchange.com/questions/30964/improving-throughput-of-a-bluetooth-low-energy-connection
我想写出a的值蓝牙低功耗在短时间内重复特征(作为一个可能的用例,想象一只鼠标)。
- 128位UUID的特点是20 bytes长的。因此,它可以写入单个低能耗交易中。
- 写入以 50 Hz 的速率发生,这等于写入每20毫秒一次.
- 因此,20 * 50 * 8 =8 kbit/s被写。
- 我正在使用Command / 写了没反应模式来写入特征。因此,属性层上不会发生任何确认。
- 未连接其他蓝牙或蓝牙低功耗设备。不通过 WLAN 执行任何操作。测试期间不会读取或写入其他特征。
我通过从 iPhone 4S 发送包含序列号的数据包来测试该程序。每发送一个数据包后,序列号就会加一。
在接收端,一个可编程开发板,包含一个CSR1000 http://www.csr.com/products/45/csr-energyBLE 芯片用于接收数据包并将接收到的序列号打印到串行连接。
我的问题如下:
-
一段时间后,数据包开始丢失。前 100 个数据包在 50 Hz 下工作正常。从那时起,数据包开始被丢弃。
0x00 - 0x46 received
0x47, 0x48 missing
0x49, 0x4a, 0x4b, 0x4c received
0x4d missing
0x4e, 0x4f, 0x50, 0x51 received
0x52 missing
0x53, 0x54, 0x55, 0x56 received
0x57 missing
...
大多数情况下,一包四个数据包可以很好地传输(很少情况下,只有 2 个数据包)。然后,有 1-7 个数据包丢失。
当我减小特征值大小时,问题仍然存在。
当我以 100Hz 而不是 50Hz 写入时,情况是一样的 - 只是在大约 35 个数据包之后开始发生丢弃,并且在成功传输 4 个数据包之间有 5-7 个数据包被丢弃。
对于丢失的数据包,无论写入频率如何,最终的传输速率约为 5 kbit/s。这显然低于低功耗蓝牙在技术上可能达到的约 305 kbit/s。
当我从开发板向 iPhone 4S 发送数据包时,问题也会出现在相反的方向。同样,5 kbit/s 是我获得的最大值。通知机制就用于这种场景。同样,属性层上没有发生任何确认。
当我尝试同时向两个方向发送时,事情开始变得严重,以至于我必须重置开发板和 iPhone 4S。
问题:
市场上存在蓝牙低功耗鼠标。鼠标的典型轮询率为 125 Hz,并且必须至少发送两个 16 字节值以及每个时钟周期的额外 HID 开销。因此,我的问题应该有一个解决方案。
Update
The LE 连接完成事件描述于蓝牙规范版本 4.0 第 2 卷 E 部分第 7.7.65.1 节。我收到以下不同连接参数的值:
Parameter Value Description
--------------------------------------------------
Conn_Interval 0x0054 Time = 105 ms
Conn_Latency 0x0000 Time = 0 ms
Supervision_Timeout 0x00fc Time = 2520 ms
Master_Clock_Accuracy 0x05 50 ppm
发出一个连接参数更新解决了问题并将吞吐量从 5 kbit/s 提高到〜33 kbit/s。然而,这仍然低于预期的约 305 kbit/s。
Conn_Interval = 0x000f = 18.75 ms
Conn_Latency = 0x0000
Supervision_Timeout = 0x00fc
有没有什么方法可以达到完整的~305 kbit/s?
关于电气工程 Stackexchange 的后续问题 https://electronics.stackexchange.com/questions/30964/improving-throughput-of-a-bluetooth-low-energy-connection
烧掉一个 TSI 并等待一个月就能得到苹果的回复。
基本上,他们告诉我们该行为是在 iOS 5.1 中设计的。它
某种程度上是有道理的,因为他们不希望你的应用程序
性能取决于其他应用程序是否使用蓝牙或 WiFi。
根据工程师的评论 - 在 iOS 5.1 下,连接间隔期间应该有 6 对通知,这意味着
6*数据包大小*1000/间隔。这应该转换为 ~55kbps max(最小
间隔为 20 毫秒,数据包大小为 23 字节)。我们决定
限制每个间隔的对数,并有一个最小间隔
iPhone 和 iPad 之间共享天线
BT 经典、BT LE 和 WiFi。
iOS LE 被设计为低功耗传输。对于更高的吞吐量,经典 BT 是更好的传输方法。
回到我这里 - 根据上面工程师的评论,如果希望实现 200 kbs 的吞吐量,经典蓝牙就是答案。
但是,如果希望使用 iPhone 上的应用程序,我
可以理解,这不是简单的改变——经典BT需要MFI
许可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)