CH592关于蓝牙透传的问题

????????使用demo代码 ble_uart,它的作用是通过芯片作为载体,然后手机通过与芯片连接蓝牙,然后通过蓝牙进行数据传输,然后可以通过芯片的串口打印出传输的数据,这样理解是对的吧?

? ? ? ? 有个问题就是通过手机蓝牙APP发数据给芯片,手机与芯片传输最快速度也只有4KB/s,通过串口发送数据给芯片,然后手机蓝牙APP上面最快的接受速度也只有800B/s,请问怎么样能使速度增加呢?

  1. 将串口收发的波特率调高,如调整至1M,打印波特率也调高;

  2. 开启MTU功能,参考博客的第二点:

    蓝牙BLE从机Peripheral讲解十二(MTU) - SweetTea_lllpc - 博客园 (cnblogs.com)


        我修改了MTU(修改成了496),并且也将波特率(500000)修改了。但是在保证数据不丢包的情况下,从手机APP通过蓝牙发送数据给芯片,再从串口接收。 最快的速度也就只能达到7KB/s,如果再加快发送速度,则会出现丢数据的情况
       
        然后就是我测试从串口发送数据给芯片,芯片通过蓝牙发送给手机,手机的接收速率最快也只能达到9.7KB/s,如果串口的发送速度再快一点则也会出现丢包的情况

         请问有什么办法可以在不丢包的情况下,使速度增加呢?


     请问有办法解决上面的问题嘛?


确认下MTU是否成功交互为496,一般BLE调试助手交互时下方会有显示,

波特率不要设置为5M,设置为5M误差很大,设置为1M即可(串口3的波特率),

确认连接间隔是多少,刚连接上时串口1会有相关打印,默认例程设置的是8-20,实际交互一般是0x0c,即15ms,

将BLE_BUFF_MAX_LEN设置为516,BLE_TX_NUM_EVENT设置为5.


1、蓝牙无线传输可以使用speedtest例程测试,近距离可以达到60KB/s;

2、蓝牙转串口的测试,需要将串口收发的波特率提高,如1.5Mbps。蓝牙连接间隔配置为6-8。MTU开启并配置为251(一般手机APP支持247)。单连接多发包开启。缓存增大;

3、建议添加代码进行重传管理。因为MCU在进行蓝牙转串口的时候,资源调度消耗会比较大。同时如果环境有干扰或者蓝牙距离较远,对无线传输的性能影响是比较大的。出现丢包则进行重传的处理,蓝牙端接收数据及时校验并及时重传,将串口的流控功能开启,目前暂无专门的代码提供参考,需要自行开发;

4、配置可以参考:

image.png


只有登录才能回复,可以选择微信账号登录