蓝牙BLE模块传输大量数据的解决方案

本文介绍了在蓝牙BLE4.0模块下传输大量数据,如JPEG图片时遇到的稳定性问题。通过实验发现,一次性发送数据过多会导致错误,正确做法是分段发送,每段数据长度控制在40字节左右,并且每次发送后需要加入至少100ms的延时。问题解决后,数据传输的稳定性显著提高。
摘要由CSDN通过智能技术生成

使用环境(蓝色粗体字为特别注意内容)

1、软件环境:Keil uv5.15

2、硬件环境:STM32F103C8T6、蓝牙BLE4.0模块

在一个项目中需要用到蓝牙BLE传图片,(巨坑,亏我想的出来。。。。),没办法自己选的路趴着也要走下去_^_ ,还好图片是用JPEG压缩过的,数据量小了不少!我用的蓝牙模块如下图所示:

 需要将摄像头采集到JPEG图片通过蓝牙传输到上位机,图片大小大约有18kb左右,调来调去,直接将单片机和电脑串口相连数据传输就很稳定,但是通过蓝牙模块串口透传之后数据变得很不稳定,出错的概率很大,导致crc校验失败。后来发现是蓝牙模块传输的问题,在使用蓝牙传输大量数据的时候,需要注意以下两点:

①一次性不能给太多数据

如使用 printf("%02X", databuf[i]);的方式将大量数据传送出去即databuf的长度很大的话容易出问题,正确的处理方式是将所有数据拆分成多段发送出去,这时候databuf就不会太长,测试中取40比较合适,超过50就容易出现误码。

②每次给完数据需要delay一小段时间。

测试中必须大于100ms

这里贴上一些关键代码:


                
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值