????????使用demo代码 ble_uart,它的作用是通过芯片作为载体,然后手机通过与芯片连接蓝牙,然后通过蓝牙进行数据传输,然后可以通过芯片的串口打印出传输的数据,这样理解是对的吧?
? ? ? ? 有个问题就是通过手机蓝牙APP发数据给芯片,手机与芯片传输最快速度也只有4KB/s,通过串口发送数据给芯片,然后手机蓝牙APP上面最快的接受速度也只有800B/s,请问怎么样能使速度增加呢?
????????使用demo代码 ble_uart,它的作用是通过芯片作为载体,然后手机通过与芯片连接蓝牙,然后通过蓝牙进行数据传输,然后可以通过芯片的串口打印出传输的数据,这样理解是对的吧?
? ? ? ? 有个问题就是通过手机蓝牙APP发数据给芯片,手机与芯片传输最快速度也只有4KB/s,通过串口发送数据给芯片,然后手机蓝牙APP上面最快的接受速度也只有800B/s,请问怎么样能使速度增加呢?
将串口收发的波特率调高,如调整至1M,打印波特率也调高;
开启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、配置可以参考: