我们正在开发与iPad配合使用的BLE传感器外设,它需要使用TI CC2541 BLE模块和自定义配置文件提供以下有关BLE通知特征(无确认)的数据吞吐量:
每10ms一个20字节(GATT最大标准包),或者由于我们似乎每个连接间隔有4个包的限制,这相当于每40ms一个连接间隔。所需的吞吐量为2,000字节/秒,因此TI网站建议将CC2541 BLE解决方案用于需要此级别数据吞吐量的多个传感器设备。
BLE模块的配置文件设置为最小和最大连接间隔分别为20ms和40ms,这应该足够了。“Apple Products的蓝牙附件设计指南”文档建议我们如上所述设置的最小和最大连接间隔是正确的。我们在新的Mac Mini / Mac Book上使用了iOS 6的最新iPad和苹果工具。
与一个简单的测试程序在iPad上,我们可以得到的链接,以20个字节的数据包发送到BLE20毫秒的时间间隔,但是,一旦我们降低到10ms的需要,我们开始丢失数据包或得到损坏的数据包,我们有先进先出空中断关闭,以便我们可以更快地处理发送到BLE模块先进先出,我们使用230400的最大波特率发送20字节的数据包,从微到BLE。
我们意识到我们处于BLE转会限制的最高端,以及可能发生的事情。有没有人能告诉我们,有没有办法使用TI CC2541 BLE芯片/模块和最新的iPad来达到每秒2000字节的吞吐量?
发布于 2013-11-18 22:23:46
我们在iPad/iPod/iPhone (iOS 6.x和7.x)上成功地使用了TI 2540 (BLE堆栈版本1.3.2)。我们目前每秒发送75个20字节的通知,=>为1500字节/秒。但我已经试着发送了125条通知,效果也不错。
当然,您发送的数据越多,丢失数据的可能性就越大,例如,重新发送NACK‘’ed消息的时间越短。
我已经经历过iOS的BLE堆栈可能会进入一种模式,在该模式中,它开始连续地对消息进行NACK。如果发生这种情况,您将丢失大量消息。我已经向苹果报告了一个关于这方面的错误。(此问题似乎已在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是的,它不符合苹果的指导方针。但我相信在我们的情况下,他们可以放松下来。
更新:我也尝试过使用iDevice作为外围设备,即两个iDevices之间的BTLE。在这里,我每秒发送150条消息,没有任何问题。
发布于 2014-07-04 03:39:18
你在发送"write without response“命令吗?您可以通过这种方式为每个连接事件发送4个数据包。使用之前的20ms连接间隔,您将每0.02秒发送4个20字节的数据包。放在一起: 4*20/0.02 = 4000字节/秒很容易。
我非常怀疑你是否得到了损坏的数据。链路层向BLE分组添加CRC和2比特的“下一期望”,以确保A)所有比特都被正确接收,并且b)分组没有被乱序发送。TI堆栈和iOS控制着链路层,所以我怀疑你搞砸了。
发布于 2018-02-26 15:17:15
下面是我们在使用BLE在iPhone上执行RnD时发现一些关于吞吐量的观察结果。以下数据基于write with response。
的吞吐量- 15.5 KiloBytes
正如您所看到的,随着MTU值的增加,我们可以获得最大吞吐量。但我们不能增加到任何限制。以上MTU值是根据给定配置默认的最大允许MTU值。MTU -最大传输单位。即在一个写请求中可以发送的最大字节数
欢迎对上述数据提出意见。
https://stackoverflow.com/questions/18240978
复制相似问题