微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > BLE的传输速率为什么一直提高不上去

BLE的传输速率为什么一直提高不上去

时间:10-02 整理:3721RD 点击:

     我分别修改simpleBLEPeripheral和simpleBLECentral两个示例建了一个工程,根据在其他帖子里的内容看,peripheral和central之间的传输速率最高应该能有4~5KB/s,但是我简单测试了一下发现我这里的传输速率只有760B/s左右,我又找来三个手机(都是安卓机)测试,用peripheral向手机发送数据,有两个是160B/s左右,一个是380B/s左右。

    我已经将simpleBLEPeripheral中的DEFAULT_DESIRED_MIN_CONN_INTERVAL 和DEFAULT_DESIRED_MAX_CONN_INTERVAL以及simpleBLECentral中的DEFAULT_UPDATE_MIN_CONN_INTERVAL和DEFAULT_UPDATE_MAX_CONN_INTERVAL都修改成了8。

    另外,我的测试方法是在peripheral中模拟了1000组数据(每组16个字节)每次连接发一组数据,并在central中加了一段程序,测试从开始接收数据到结束所用的时间。

我的问题是:

    1、我测试的传输速率这么低,是不是我的测试方法有问题导致的?如果是,应该怎样测试?

    2、每个连接事件发送的最大字节只能是20个字节吗?可不可以修改?

    3、不同central与同一peripheral有不同的传输速率,是因为连接间隔等参数是由central规定的,我这样理解有没有错?那么peripheral是否可以主动修改这些参数?

   4、除了修改连接间隔和每次发送的字节数,还有没有什么方法可以提升传输速率?

1.每个连接间隙只能发3个包。你可以设定一个定时事件,时间跟连接间隙一样,每次就发3个包看看。我的项目之前可以做到每秒收到140个长度为20的包,也就是2.8KB每秒,连接间隙是15ms,不丢包。理论上5KB/s就是极限了。

2.Notification的PDU最大就是20字节,不能修改。

3.参数都是由central决定的,peripheral可以发起请求要求更新,如果你用的是TI的固件,Central里应该默认是同意参数请求更新的。

4.BLE 1.4里多了一个所谓overlappedprocessing的特性,可以一个连接间隙发超过3个包。我自己试了一下,偶尔丢包,而且经常出现数据错乱的现象,虽然用sniffer看的确是一个间隙发了好多包。而且让我感觉郁闷的是,我是直接读取spi接口的传感器数据然后直接发送,数据错乱的原因似乎出现在spi读取上。

回答很详细,十分感谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top