首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BLE外围设备吞吐量限制

BLE外围设备吞吐量限制
EN

Stack Overflow用户
提问于 2013-08-15 03:49:44
回答 5查看 17.5K关注 0票数 10

我们正在开发与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字节的吞吐量?

EN

回答 5

Stack Overflow用户

发布于 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中得到解决。)

我目前有:

代码语言:javascript
复制
// 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条消息,没有任何问题。

票数 10
EN

Stack Overflow用户

发布于 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控制着链路层,所以我怀疑你搞砸了。

票数 2
EN

Stack Overflow用户

发布于 2018-02-26 15:17:15

下面是我们在使用BLE在iPhone上执行RnD时发现一些关于吞吐量的观察结果。以下数据基于write with response。

  1. iPhone 8(BLE5.0)作为中央台式机和Linux台式机(带BLE 4.0的Ubuntu 16.04 ):MTU = 2048 :吞吐量-每sec.
  2. iPhone 8的2.5 KiloBytes (BLE5.0)作为中央台式机,使用BLE4.2作为外围设备的安卓操作系统(小米A1):MTU = 180 :吞吐量-每sec.
  3. iPhone 8的2.5 KiloBytes (BLE5.0)作为中央台式机,iPhone 7 plus (BLE4.2)作为中央台式机外围设备: MTU = 512 :吞吐量-每个sec.
  4. iPhone 8的7.1 KiloBytes (BLE5.0)作为中央设备,三星S8 (BLE5.0)作为外围设备:作为中央设备的三星S8无法作为peripheral
  5. iPhone 8(BLE5.0)工作,作为外围设备的iPhone 8 plus (BLE5.0)无法工作: MTU = 512 :每个sec.

的吞吐量- 15.5 KiloBytes

正如您所看到的,随着MTU值的增加,我们可以获得最大吞吐量。但我们不能增加到任何限制。以上MTU值是根据给定配置默认的最大允许MTU值。MTU -最大传输单位。即在一个写请求中可以发送的最大字节数

欢迎对上述数据提出意见。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18240978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档