目录
摘要
故事背景
启示
摘要
当使用HC-05蓝牙模块一次性连续发送大量数据时,需要将数据进行拆分,分包发送,每个数据包之间适当加时间间隔,否则当连续传输的数据量达到一定程度时,蓝牙模块容易宕机。
分包建议:(建议数据来自于广州汇承信息科技有限公司的官方淘宝技术客服)
每个数据包的大小建议为500-1k(1024)个的8bit数据
115200波特率下,1K大小的数据包建议间隔100ms
230400波特率下,1K大小的数据包建议间隔50ms
故事背景
做课设时需要将上位机的一张图片数据传输到FPGA上,传输的图片在MATLAB上进行预处理,将图片裁剪成640*480的大小,图片数据转化为RGB565的格式,即一个像素点的数据为16位数据。故一张图片共有640*480*2=614400个8位数据,即上位机给FPGA发送数据一次需发送约61万个8bit数据。
数据的发送与接收通过两个HC-05蓝牙模块实现,一个为主机模式、一个为从机模式,波特率为115200。上位机软件将这61万个数据一次性发送给FPGA,多次发送时发现,经常在发送到35万-50万个数据时,蓝牙模块出现宕机。虽然两个蓝牙模块的LED指示灯仍显示两个蓝牙之间仍保持连接状态,但这两个蓝牙模块实际上已经不能再次通信,发送端不管怎么发,接收端一直接收不到数据,需要将任一蓝牙模块断电重启重新连接后,才能重新收发数据。
咨询汇承官方技术客服得知,原来HC-05蓝牙模块不能一次性连续发送太多数据,需要将数据进行拆分,分包发送,每个数据包之间适当加时间间隔。分包建议见摘要。这个分包建议以及宕机情况没有在模块的资料里提及到,若没有咨询技术客服还真难以发现问题所在以及解决方案。
按他们的建议进行分包发送,蓝牙模块确实不会再出现宕机情况。FPGA能够成功接收图片的所有数据。
波特率改用为230400时,测试发现,一次性连续发送约15万个8bit数据时,蓝牙模块就出现宕机情况。按建议的时间间隔进行分包发送确实也没有了这种宕机情况。
启示
以后采用一些通信模块进行数据通信时,当一次性连续传输的数据量大到一定程度时,要有分包发送的意识,这样有利于通信模块保持正常稳定地工作。
当一次性连续传输的数据量大到一定程度时,若数据前面一部分能够正常接收,后面出现连接断开、数据丢失的情况,可以尝试进行数据拆分、分包发送、延长间隔时间。