实战经验|关于连接参数更新进程后导致断连的问题分析

原创 STM32单片机 2024-02-29 17:19


关键词:连接,参数更新,断连


目录预览

1、引言

2、连接参数更新进程简述

3、客户可能的测试逻辑和问题现象描述

4、问题分析

5、小结


01

引言


通常客户在做低功耗蓝牙模块设计的时候,如果蓝牙模块在实际使用场景中和手持移动设备(如手机等)绑定使用的话,往往会非常注意蓝牙模块与不同品牌、不同型号的手机的兼容性测试。这些测试项目可能包括长时间连接状态的保持,频繁建立连接,或主动断连后再次建立连接等场景。本文描述的问题是客户在其兼容性测试中发现的一个比较典型的问题,即当从设备在与手机端处于连接状态下,从设备启动连接参数更新进程后,会导致断连的问题。由于是兼容性测试,测试设备,特别是作为主设备的手机来自不同的供应商,在兼容低功耗蓝牙协议的基础上,某些细节部分的差异难以避免。所以,本文只论述了该客户问题的分析过程及得出的结果,并不期望涵盖所有类似场景下导致断连的原因。


02

连接参数更新进程简述


低功耗蓝牙的核心规范中有规定,当主从设备建立连接后,可以通过启动特定的进程改变当前连接的相关参数,如连接间隔(ConnInterval),从设备延迟(SlaveLatency)和监控超时(SupervisionTimeout)等。 


低功耗蓝牙的核心规范中定义了几个不同的连接参数更新流程,有的流程主设备和从设备都可以启动,有的流程只能由从设备或主设备启动。为避免引入过多对本文关注话题的无用信息,我们在这里只介绍一种由从设备启动的连接参数更新的流程。即由从设备通过调用L2CAP 层的命令的方式启动的连接参数更新流程。 


流程图如图 1 所示。流程图的前提条件是主从设备端之间已建立连接,从设备希望改变当前已建立连接的连接参数。 


整个流程的步骤解析如下: 


第一步:从设备发起 Connection Parameter Update Request,提交新的连接参数给主设备,希望主设备可以采用这些参数。主设备接收到从设备的 Request 后,会根据自身当前条件(是否能支持这些连接参数)决定是否接受请求。如果接受,则执行第二步;如不接受,则直接跳到第四步拒绝该 Request。 


第二步:主设备接受请求,给从设备发送链路层数据包LL_CONNECTION_UPDATE_REQ,该数据包中包含了主设备在分析了从设备在第一步中提交连接参数后,决定最终使用的目标连接参数,并约定在后续的特定连接事件开始使用新的连接参数。 


第三步:从设备在接收到 LL_CONNECTION_UPDATE_REQ 数据包后发送一个链路层的空包作为响应,并结束当前连接事件。 


第四步:主设备发送 L2CAP 层的 Connection Parameter Update Response 命令,作为对第一步中 Request 命令的回复,回复中的相关标志标明是接受(Accept)还是拒绝(Reject)之前的 Request 命令。如果是接受,则主从设备双方会在第二步中LL_CONNECTION_UPDATE_REQ 数据包中所指定的后续特定连接事件中开始使用新的连接参数,并成功完成连接参数更新过程。


图1.连接参数更新流程


03

客户可能的测试逻辑和问题现象描述


客户使用智能手机和 ST 的 BlueNRG LP 作为测试的主从设备。客户的兼容性测试中需要使用预设连接间隔和监控超时时间。为了在测试过程中可以实时调整相关参数,需要手机端作为主设备通过私有逻辑将新的连接参数通过低功耗蓝牙连接发送给从设备( BlueNRGLP ), 并由从设备启动上述的更新流程,以完成连接参数的更新并继续执行后续的其他测试项。 


问题现象: 


主从设备在完成上述流程第四步后,且主设备发送 Connection Parameter UpdateResponse 命令所给出的响应也是接受的情况下,主从设备在上述流程中第二步LL_CONNECTION_UPDATE_REQ 命令所指定的特定连接事件中开始采用新的连接参数时会发生断连。从设备重新进入广播状态。 


客户的疑惑点在于主从设备已经完成了上述连接参数更新的交互,意味着应该可以顺利切换到新的连接参数,没有道理会导致后续的断连,由于作为主设备的智能手机是某大品牌产品,怀疑 BlueNRG 的协议栈是否存在兼容性问题。


04

问题分析


根据问题复现时使用低功耗蓝牙抓包工具所抓取的 log 数据,做如下分析。


4.1.分析 LL_CONNECTION_UPDATE_REQ 数据包内容


4.1.1. 如图 2 所示,LL_CONNECTION_UPDATE_REQ 数据包内容,需要重点关注如下数据:


1. Event counter:29, 表示 LL_CONNECTION_UPDATE_REQ 发送时所在的连接事件编号为 29。
2. Instant:35:约定在第 35 个连接事件中,主从设备开始使用新的连接参数。
3. Interval:816(1020msec), 表示新的连接间隔为 1.02 秒。
4. Window Size/Window Offset:第 35 个连接事件中,主从设备开始使用新的连接参数进行第一次数据包交互时,接收、发送窗口的定时信息。


图2.LL_CONNECTION_UPDATE_REQ PDU 抓包数据


4.1.2. 从下图 3 中获取从连接事件 29 到从设备进入广播状态这个过程中每个连接事件及连接时间中数据包收发的时间戳。


图3.时间戳


从图 3 中可以看出:


1. 从连接事件 29 到连接事件 34,连接间隔为 30ms,即旧的连接间隔。
2. 连接事件 35 中主设备的发包时间和连接事件 34 的开始时间差大大超过 30ms,所以可以再次确认是在连接事件 35,主从设备开始使用新的连接参数。
3. 从连接事件 35 开始及后续的 3 个连接事件中,只有主设备发送空包,从设备没有发送空包。
4. 由于新的连接参数的监控超时时间在客户的测试中为 4 秒,所以从设备没有发送空包的 4 个连接事件结束后,即发送了断连。然后,从设备重新开始发送广播包。


4.1.3. 如下图 4,通过分析抓包 LOG 中各个连接事件、即数据包发送的时间戳后发现:


1. 通过 LL_CONNECTION_UPDATE_REQ 数据包中 transmitWindowOffset 计算出TransmitWindow 的开始时间点应该在 11.477925s
2. 从抓包的 log 信息中发现,主设备实际的发包时间点在 11.477909s,也就是主设备的发包时间先于蓝牙协议中规定的 TransmitWindow 的起始点,导致从设备无法接收到来自主设备的空包,从而无法在同一连接事件(连接事件 35 及后续的 3 个连接事件)中反馈一个空包,进而导致 4 秒监控超时,最终导致断连。从设备退出连接态后重新进入广播态。


图4.连接事件即数据包发送时间分析


05

小结


上述问题的根本原因是作为主设备的智能手机虽然完成了连接参数更新流程中主从设备之间的交互,但由于其在后续规划的连接事件,规划的射频任务的时间点的偏差而导致了断连。

导致低功耗蓝牙断连的可能原因有很多,上述的情况只是其中一种。本文的意图是介绍上述问题的分析过程,读者可以参照本文展现的分析方法、将其运用到类似问题的解决过程中。

通过对抓包 LOG 中的时间戳的分析,有很大机会可以帮助找到解决问题的突破口。


完整内容请点击“阅读原文”

STM32单片机 ST MCU (产品+工具+资料+技术+市场+活动)x 您的关注x您的支持 = STM32 单片机蝴蝶乐园
评论
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 150浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 73浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 390浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 164浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 195浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 221浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 121浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 111浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 49浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 100浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 183浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 38浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 182浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦