蓝牙断线原因分析

pengam · 185次点击 · 9个月前

1、蓝牙断线原因分析,首先要打印出断线的原因的id是多少:

     OM6621E、OM6621F对应的是蓝牙断线事件BLE_GAP_EVT_DISCONNECTED的参数p_ble_evt->evt.gap_evt.params.disconnected.reason,其id的原因说明头文件是co_util.h中;

     HS6621x的断线原因定义在gapc_disconnect_ind的reason中,其id的原因说明头文件是co_error.h中;

     在蓝牙规范中的Vol1的part F有对每一个断线原因的说明;    

image.png

      以下原因的分析都是假定通讯双方都已经遵守了蓝牙规范,因为不遵守规范的情况就只能具体问题具体分析了;

2、几个常见的断线原因的分析

image.png

         这是最常见的断线原因,协议栈在没有收到对端的任何蓝牙交互数据的时间超过连接参数的 Supervision timeout时间后产生的断线,该问题可能是超出距离,也可能是信号太弱等因素;

image.png

         协议栈在instant类型的命令的响应过程中,出现了错过了instant的情况,属于instant的命令有LLCP Connection Update Indication、LLCP Channel Map Indication、LLCP PHY Update,分别是连接参数更新和channel map的更新,这2种命令是在命令下发的时候,双方约定在instant所指示的,双方经历若干个interval个后的那个连接事件开始实际更新,如果错过了,没有成功,则产生0x28。如果在这2种类型的命令执行过程中超时收不到对端信号,其断线原因就是0x28,所以,这个也是和0x08的原因类似;

image.png 

         这是LMP或者LL命令执行响应超时,超时的时间是30s,意思是比如只发出了request却在30s内依然没有收到对端的response, 如果发现这样的情况,协议栈会以0x22的原因断线。也就是通常其它通讯正常,就某个指令30s都没有响应,大概率是对端的兼容性出现问题造成;

image.png

         这是表示建立连接的第一数据就没有成功收到,通常也是信号不好导致;

image.png

         这个断线原因是收到的数据的CRC校验通过,但是数据包AES解码却不正确,蓝牙协议判定为可能有入侵,所以管这个叫完整性错误,所以必须立刻断线,这种实际原因可能是RF收到了错误的数据包,应该是低概率事件;

image.png

         这个断线原因是由于对端发起断线命令导致的断线,比如手机关闭蓝牙的时候会造成从机这样的断线原因。

image.png

        这就是芯片本地发起的断线命令导致的断线,也就是应用层主动发起的断线。


被收藏 1  ∙  1 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站