CH582广播和连接间隔的优先级可以调高吗?

我们现在用CH582+一个SPI的摄像头通讯,通讯的时候不能停直到读完摄像头的图片数据,整个时间差不多要2S多,蓝牙要么收不到广播或蓝牙断开连接,手机要一直跟CH582通讯的

你的这个问题可能是蓝牙的连接间隔过小导致的,由于其间隔过小,而你的任务过长,导致蓝牙本身任务受到阻碍被打断

4d28cd64baecddeab0c40ead0c6b47e.jpg


因此,

1、拆分你的任务,缩短你的任务长

2、调整连接间隔,这里所提供的是连接间隔的范围(间隔时间:6~3200,单位是1.25ms,所以实际的连接间隔时间是6*1.25~3200*1.25ms),你可以将它适当增大一些,然后观察一下打印的信息,查看具体连接间隔。

2.png

1647142917(1).png



因为发送的是图片数据,数据有点大,如果改小连接间隔是不是发送就会慢一点了,读数据是要连续的,拆分了图片数据就会不完整,如果用定时器中断去处理蓝牙事件可以吗


不可以

这里使用单芯片就不合适了,建议使用两个芯片,一个作为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库,或者主机来决定最终的连接间隔呢? 

 


最终的连接间隔是通过主机与从机的协商来决定的,也许你定义了范围,但是实际连接间隔仍然不一定在这范围以内。

这里是原本打印实际连接间隔的地方,你可以写一个多次协商的函数,这里提供的函数供参考。

1.png


感谢!j_0006.gif 的确可以调整间隔了


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