WCH沁恒单片机
直播中

岳臻俊

8年用户 1095经验值
私信 关注
[问答]

CH579断开后有广播无法连接是什么原因?

调试许久无法定位问题点,无奈只能求助各位大佬,还望指点
现象是手动断开后有时有一定概率设备就无法被连接了,单重启中心设备后仍无法连接,单重启设备后可以正常连接
再说下结构,就是我的CH579是作为从设备,中心设备也是一片579实现的,通讯逻辑是这样的:
  • 中心设备调用 GATT_WriteCharValue 向从设备写一定量的数据 (连接后配置MTU为236 ,实际最大通讯包长为208字节)
  • 从设备收到后执行一定操作(用时比较短,十几毫秒以内)后,调用 GATT_Notification 以通知形式向主设备发送响应数据
以上是通讯过程,实际测试时多数时候能正常工作,但有时断开连接(我测试的方法是直接断掉中心设备电源),这是中心设备就再也无法连接到从设备了,此时仍能收到从设备广播数据,但不完整,调用 GAPRole_CentralEstablishLink 方法返回成功,但是无法收到GAP_LINK_ESTABLISHED_EVENT事件,用手机端软件同样可以扫描到从设备,广播数据不完整,无法连接,
下面放两种状态的广播数据图


基本就是这样的现象,无法连接后从设备其他程序运行正常 请教下这种问题有可能是哪里的问题或者怎么去查找原因呢?
  

回帖(1)

张雷

2022-8-11 09:43:12
补充一下,观察发现,如果每次断开连接后进入的GAPROLE_ADVERTISING事件中,

多数情况是进入2这个分支,之后就可以再次连接上。但是偶尔进入1这个分支后,就变成之前叙述的无法连接了


再或者请教下工程师 有没有不重启设备重置BLE协议栈的标准流程,如果实在解决不了我打算检测到断开连接后就重置协议栈,这样解决问题应该也行
举报

更多回帖

发帖
×
20
完善资料,
赚取积分