Follow-Up question on Electrical Engineering Stackexchange
我想在短时间内重复编写蓝牙低功耗特性的值(作为可能的用例,想象一下鼠标)。
我通过从iPhone 4S发送包含序列号的数据包来测试程序。在每个发送的数据包之后,序列号加一。
在接收方,使用了集成了CSR1000 BLE芯片的可编程开发板来接收数据包,并将接收到的序列号打印到串行连接中。
我的问题如下:
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个数据包之后开始丢弃,并且在成功传输四个数据包之间丢弃了5-7个数据包。
对于丢失的数据包,无论写入频率如何,最终的传输速率约为5 kbit/s。明显低于蓝牙低功耗技术上可能达到的〜305 kbit/s。
问题:
如果是,为什么在iPhone充当接收器的情况下,问题也朝相反的方向发生?
市场上是否有支持高频访问特性的开发板?
除假设外,还请尝试引用Bluetooth规范/演示幻灯片/文章的各个部分。
市场上有蓝牙低功耗鼠标。小鼠的典型轮询速率为125 Hz,并且每跳至少必须发送两个16字节值以及额外的HID开销。因此,应该可以解决我的问题。
更新
在蓝牙规范版本4.0第2卷E部分第7.7.65.1节中描述了LE连接完成事件。对于不同的连接参数,我收到以下值:
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的速度?
Follow-Up question on Electrical Engineering Stackexchange