我基于处理BLE5的nRF52 SOC构建了一个自定义ARM设备。我使用核心蓝牙框架在SWIFT/X代码/IB中编写了一个自定义应用程序,无法以超过12Kbps的速度从ARM设备传输数据。使用数据包嗅探器,我可以看到ARM设备实时发送了所有数据包,但iPhone读取它们的速度不会超过每秒几次。在极少数情况下,iPhone读取所有内容的速度很快。蓝牙连接协商为12-24毫秒的延迟。我使用的是北欧BLESDK16版。当时iPhone没有连接到任何其他nRF52设备。
其他人也有这个问题吗?如果有用,我可以发布ARM设备上使用的代码和XCode代码。
发布于 2020-05-14 15:44:53
首先,我假设你是通过通知发送的。其次,你需要知道是什么形成了你的数据速率。它们是:
您还可以排队存储多个数据包,直到它们通过通知发送(填充缓冲区)。
所以一些有用的设置。首先,也是最重要的,最大化每个数据包发送的数据。例如,如果您要发送10字节的数据发送更多,这将被限制为北欧电路板上的最大数据大小(247)。然后增加间隙长度。因此,我建议开始的一些设置是:
然后在电路板上运行,你可能会得到一个错误,说改变内存和开始位置。这将被打印到终端。您可以通过以下方式完成此操作:
我也不确定iphone应用程序的API,但android具有将蓝牙硬件设置为高功率模式的功能,这增加了我在传输数据时的吞吐量,只需在数据传输后禁用它。您使用的API可能具有类似的功能。
对于参考代码,sdk中有一个名为maximum_throughput的示例,这应该是一个很好的参考点。
https://stackoverflow.com/questions/61740663
复制相似问题