低功耗蓝牙BLE4.0的数据收发问题

最近有项目需要在做一些硬件开发,使用的是Bluno beetle,一个可穿戴设备开发板,自带了BLE 蓝牙。

本来并没有太在意蓝牙之间的区别,感觉集成了蓝牙芯片挺好的。项目是在IMU上采集传感器数据传给上位机,通过USB连接电脑显示串口数据正常。

但是通过android手机连接蓝牙接受到的数据总是丢帧,有头无尾的。一直在找问题所在,本来以为是波特率的问题,但波特率115200已经够用了。

后来才发现是这个低功耗蓝牙芯片的问题,BLE协议规定每次只能发20B左右的数据,ASCII码的话其实发不了几个东西,而且每次发送完一次都要delay80-100ms,对于传感器来说采样率基本上算是降低了10倍。

所以说低功耗蓝牙还是应用在控制中比较好,数据传输的话还是得靠传统蓝牙。

但如果非要用BLE来传大量的数据,不考虑率效率的话,可以对数据进行20B的分包,自己定义一下帧格式,传输完成后再校验一下。

这里有已经实现好的分包黏包方法库,感兴趣的可以看一下。

猜你喜欢

转载自blog.csdn.net/yq_forever/article/details/80493105