我们现在用CH582+一个SPI的摄像头通讯,通讯的时候不能停直到读完摄像头的图片数据,整个时间差不多要2S多,蓝牙要么收不到广播或蓝牙断开连接,手机要一直跟CH582通讯的
你的这个问题可能是蓝牙的连接间隔过小导致的,由于其间隔过小,而你的任务过长,导致蓝牙本身任务受到阻碍被打断
因此,
1、拆分你的任务,缩短你的任务长
2、调整连接间隔,这里所提供的是连接间隔的范围(间隔时间:6~3200,单位是1.25ms,所以实际的连接间隔时间是6*1.25~3200*1.25ms),你可以将它适当增大一些,然后观察一下打印的信息,查看具体连接间隔。
因为发送的是图片数据,数据有点大,如果改小连接间隔是不是发送就会慢一点了,读数据是要连续的,拆分了图片数据就会不完整,如果用定时器中断去处理蓝牙事件可以吗
不可以
这里使用单芯片就不合适了,建议使用两个芯片,一个作为MCU,一个使用BLE功能,通过①芯片MCU读取图片数据,然后通过②芯片BLE发送。
你好, 我也遇到类似问题。
// Minimum connection interval (units of 1.25ms, 20=25ms)
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 20
//最大可以调整为3200=4000ms
// Maximum connection interval (units of 1.25ms, 100=125ms)
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 100
这两个宏只是定义了一个参考范围,但是 在哪里具体定义 实际的连接间隔时间的呢?
还是说 通过调整这两个宏,有ble库,或者主机来决定最终的连接间隔呢?
最终的连接间隔是通过主机与从机的协商来决定的,也许你定义了范围,但是实际连接间隔仍然不一定在这范围以内。
这里是原本打印实际连接间隔的地方,你可以写一个多次协商的函数,这里提供的函数供参考。
感谢! 的确可以调整间隔了