CH573 / 571 蓝牙发送延迟丢包

自己在STM32上写了个程序,移植到CH571 573上后自己写的程序执行没什么问题,1s能循环 70多次,但是每次执行完后使用BLE HID 发送回电脑总是有延迟,串口打印的数据很快,但是BLE传回来的数据有很大延迟,使用CH57X BLE keyboard 程序改的,把官方的Keyboard 例程循环改为跟我自己写的程序执行延迟一样大以后不会出现这个问题,也就是说不是因为数据量过大导致蓝牙发送阻塞了,试着修改过BLE_BUF_NUM 和?DEFAULT_DESIRED_MIN_CONN_INTERVAL 还有?DEFAULT_DESIRED_MAX_CONN_INTERVAL 都无法解决问题


1693405306631735.png

UART 传回来的数据都对着呢,而且执行速度也足够快,但是电脑这边接收蓝牙就有很大的延迟


蓝牙发送函数如下图,发送数据为8bytes 而且 如果数据没变化的时候不启动发送程序

1693405306209128.png

1693405306150825.png

最大最小间隔都试着修改过,并没有明显的改善



1693404821275312.png

1693404821210303.png

代码大概就是这么个过程,主机蓝牙收到的要远远慢于串口显示的按键扫描的频率


找到原因了,CH573 的 18K内存炸了,编译完以后显示占用了92%的内存,估计是在蓝牙发送阶段Alloc不到内存了,所以蓝牙总是发送不了


需要注意的是,在蓝牙发送数据时,会动态申请内存使用,所以需要预留足够的RAM空间给协议栈使用。

可以尝试预留90%左右的空间。


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