use*_*370 9 peripherals throughput ios bluetooth-lowenergy
我们正在开发一种可与iPad配合使用的BLE传感器外设,它需要使用TI CC2541 BLE模块和自定义配置文件的BLE通知特性(无应答)的以下吞吐量数据:
每10ms一个20字节(GATT最大标准数据包),或者因为我们似乎每个连接间隔限制4个数据包,这相当于每40ms一个连接间隔.所需吞吐量为每秒2,000字节,TI网站建议将CC2541 BLE解决方案用于需要此级别数据吞吐量的多个传感器设备.
BLE模块的配置文件设置为最小和最大连接间隔分别为20ms和40ms,这应该足够了."Apple产品的蓝牙配件设计指南"文档表明,我们设置的最小和最大连接间隔如上所述是正确的.我们在新的Mac Mini/Mac Book上使用适用于iOS 6的最新iPad和Apple工具.
通过iPad上的简单测试程序,我们可以使链接能够以20ms的间隔向BLE外设发送20字节数据包,但是一旦我们按需要将其降低到10ms,我们就开始丢失数据包或者获取损坏的数据包,我们有FIFO空中断关闭,因此我们可以更快地处理向BLE模块FIFO的发送,我们使用最大波特率230400将20字节数据包从微处理器发送到BLE TX FIFO.
我们意识到我们处于BLE转移限制的最高端,并且是可能的.任何人都可以建议使用带有最新iPad的TI CC2541 BLE芯片/模块是否有解决方案来实现每秒2000字节的吞吐量?
我们使用TI 2540(BLE堆栈版本1.3.2)成功使用iPad/iPod/iPhone(iOS 6.x和7.x).我们目前发送75个每秒20个字节的通知=> 1500字节/秒.但我试图发送125个通知,但也有效.
当然,您发送的数据越多,丢失数据的可能性就越大,例如,重新发送NACK消息的时间就越短.
我已经体验到iOS'BLE堆栈可能会进入一种模式,它开始持续NACK消息.如果发生这种情况,您将丢失大量消息.我向Apple报告了一个错误.(此问题似乎已在iOS 7.1.beta3/4中修复.)
我目前有:
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 10
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 20
Run Code Online (Sandbox Code Playgroud)
是的,它不符合Apple的指导方针.但我相信他们可以放松一下.
更新:我还尝试使用iDevice作为外设,即两个iDevices之间的BTLE.在这里,我每秒发送150条消息,没有任何问题.在这里查看代码.
| 归档时间: |
|
| 查看次数: |
14519 次 |
| 最近记录: |