BLE4.0 CC2540之间数据通讯实时性问题请教
我用两个CC2540,BLE 1.4.0协议栈,想实现 IC---->串口(CC2540)------蓝牙-------串口(CC2540)----》IC这个数据传输过程。串口通过每隔30ms,发送9个字节为一帧的数据;
实验中,我开了两个串口精灵模拟收发数据,发现串口接收端有丢帧现象,不是丢某个字节。
两种情况,在主端CC2540,串口发出的数据个数,与实际进行蓝牙发送后,再输出到主端串口的数据个数不一致;
另一种情况, 主端CC2540串口发出数据,与实际进行蓝牙发送后,输出到主端串口数据一致,但从端2540的串口输出个数与主端不一致。
代码里,我更改了主从的连接时间间隔为:
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 6
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 6
更改了从机的#define DEFAULT_DESIRED_CONN_TIMEOUT 100
请问,还有没有再优化的空间,以保证数据不丢包。
谢谢。
Sunny hua,
你可以参考一下这个例子:http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1
Hi,Y,
谢谢你的帮助。
针对这个例子,我有一个疑问,我看到在串口回调里需要对接收来的数据进行按格式判断,如果串口数据传送过来的非常快,可能串口回调正在处理这组数据的时候,下一组又过来了,会不会导致串口数据有未来得处理的情况,或者如果是一大串的串口数据很快的过来,DMA的缓冲满了,是否也会有串口数据未来得及处理的可能,因为DMA的速度很快,但是CPU的处理速度要慢一些。会不会有这种可能。
谢谢。