微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > BLE 读写数据延迟问题

BLE 读写数据延迟问题

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

 我在使用官方提供的例子 BluetoothLeGatt  调用 wirteCharacteristic向蓝牙模块写入数据,同时启动readCharacteristic方法去读取数据(每隔50毫秒读一次),因为在蓝牙模块那边设定了收到数据后回复一条数据给手机端,结果在手机端从发出数据到收到数据之间有时会延迟300毫秒,有时又只是延迟几十毫秒。觉得很不正常,因为每次只写入20个字节,如果要传1M的文件,那不是要花好几个小时?传输音频那不是无从谈起?我也搞不清楚这些耗时到底是在哪个环节消耗了。请教各位,是不是wirteCharacteristic方法以及readCharacteristic方法里面有延时设定,是不是调用这些方法后,会延迟100毫秒或更多的时间之后才真正执行写或读数据?看api似呼没有看到有这方面的描述;另一方面我怀疑是蓝牙模块的问题,因为整个模块是供应商提供的,蓝牙忒片已经贴好在模块上,只给我们提供了读写数据的接口,也就是说该模块里面的程式不是我们写的,所以我怀疑是该模块中设定了隔300毫秒左右读一次数据,所以导致手机端收到数据延迟,请各位帮忙分析下到底问题出在哪,谢谢!

Hi maizi

请留意从机中以下这几个参数的设置:

    1.connect interval    //每两次射频通信事件的时间间隔

    2.slave latency        //从机无数据需发送时可跳过的连接事件的次数

更多的参数设置可参考开发包的文档说明。

首先,你要纠正一个概念 蓝牙BLE协议 和传统蓝牙是两个概念,走的是两个不同的协议,BLE的数据吞吐量最大只能到5.9KB/s,(http://processors.wiki.ti.com/index.php/CC2540_Data_Throughput),所以你提到的用其传输音频 是不现实的

BLE的数据连接参数有下面几个 连接间隔 连接潜伏 和 超时时间   连接间隔最小能到7.5ms,这个影响响应速度。所以没有延时 不可能

7.5ms 已经完全满足我的需求,即使在50MS以下也是可以接受的,问题是现在达到300ms呢。

Hi maizi

    7.5ms是理论上的最低连接间隔,实际的连接间隔要取决于你的参数设置,有的手机App并不接受这么低的连接间隔的。

正如前面说的,你需先检查你自己从机的连接间隔的设置,如果你的连接参数本来就设置为300ms,那不是很正常吗?

Hi,shaokai Lin

      这个连接间隔在哪里设置呢?在主机 请求与外设连接时是否可以带上这些参数呢?

Hi mai zi

    你可以尝试这么做,在从机的初始化程序中修改各项参数的设置,如

GAPRole_SetParameter( GAPROLE_MIN_CONN_INTERVAL, sizeof( uint16 ), &desired_min_interval );//设置最小连接间隔
GAPRole_SetParameter( GAPROLE_MAX_CONN_INTERVAL, sizeof( uint16 ), &desired_max_interval );//设置最大连接间隔

然后再设置使能自动连接更新,主机就能收到连接更新请求。

    TI官方的资料做的很详细,很好懂的。

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

网站地图

Top