详解BLE连接建立过程

更新时间:2023-06-22 23:28:30 阅读: 评论:0

详解BLE连接建⽴过程
同⼀款⼿机,为什么跟某些设备可以连接成功,⽽跟另外⼀些设备⼜连接不成功?同⼀个设备,为什么跟某些⼿机可以建⽴连接,⽽跟另外⼀些⼿机⼜⽆法建⽴连接?同⼀个⼿机,同⼀个设备,为什么他们两者有时候连起来很快,有时候连起来⼜很慢?Master是什么?slave⼜是什么?什么⼜是Connection event和slave latency?希望这篇⽂章能帮助你回答上述问题。
BLE连接⽰例
附红细胞体假设我们有⼀台⼿机A(以安卓⼿机为例),⼀个设备B(设备名称:Nordic_HRM),如下所⽰,我们可以通过安卓设置菜单⾥⾯的蓝⽛界⾯,让两者连接起来。
1. 打开安卓设置菜单
2. 选择“蓝⽛”条⽬
3. 打开蓝⽛
4. 等待系统搜索结果,不出意外的话,设备“Nordic_HRM”会出现在结果列表中
5. 点击“Nordic_HRM”,⼿机将与此设备建⽴连接
上述即为⼤家直观感受到的“连接”,那么⼿机要与设备Nordic_HRM建⽴连接,具体包含哪些流程?他们为什么可以连接成功?下⾯给⼤家⼀⼀道来。
⼴播(advertising)
在⼿机跟设备B建⽴连接之前,设备B需要先进⾏⼴播,即设备B(Advertir)不断发送如下⼴播信号,t为⼴播间隔。每发送⼀次⼴播包,我们称其为⼀次⼴播事件(advertising event),因此t也称为⼴播事件间隔。虽然图中⼴播事件是⽤⼀根线来表⽰的,但实际上⼴播事件是有⼀个持续时间的,蓝⽛芯⽚只有在⼴播事件期间才打开射频模块,这个时候功耗⽐较⾼,其余时间蓝⽛芯⽚都处于idle状态,因此平均功耗⾮常低,以Nordic nRF52810为例,每1秒钟发⼀次⼴播,平均功耗不到11uA。
上⾯只是⼀个概略图,按照蓝⽛spec,实际上每⼀个⼴播事件包含三个⼴播包,即分别在37/38/39三个通道上同时⼴播相同的信息,即真正的⼴播事件是下⾯这个样⼦的。
霸王花排骨汤设备B不断发送⼴播信号给⼿机(Obrver),如果⼿机不开启扫描窗⼝,⼿机是收不到设备B的⼴播的,如下图所⽰,不仅⼿机要开启射频接收窗⼝,⽽且只有⼿机的射频接收窗⼝跟⼴播发送的发射窗⼝匹配成功,⼿机才能收到设备B的⼴播信号。由于这种匹配成功是⼀个概率事件,因此⼿机扫到设备B也是⼀个概率事件,也就是说,⼿机有时会很快扫到设备B,⽐如只需要⼀个⼴播事件,⼿机有时⼜会很慢才能扫到设备B,⽐如需要10个⼴播事件甚⾄更多。
建⽴连接(connection)
根据蓝⽛spec规定,advertir发送完⼀个⼴播包之后150us(T_IFS),advertir必须开启⼀段时间的射频Rx窗⼝,以接收来⾃obrver 的数据包。Obrver就可以在这段时间⾥给advertir发送连接请求。如下图所⽰,⼿机在第三个⼴播事件的时候扫到了设备B,并发出了连接请求conn_req。
上图的交互流程⽐较粗略,为此我们引⼊下图,以详细描述连接建⽴过程。
图5:连接建⽴过程
注:图中M代表⼿机,S代表设备B,M->S表⽰⼿机将数据包发给设备B,即⼿机开启Tx窗⼝,设备B开启Rx窗⼝;S->M正好相反,表⽰设备B将数据包发给⼿机,即设备B开启Tx窗⼝,⼿机开启Rx窗⼝。
如图所⽰,⼿机在收到A1⼴播包ADV_IND后,以此为初始锚点(这个锚点不是连接的锚点),T_IFS后给Advertir发送⼀个connection request命令,即A2数据包,告诉advertir我将要过来连你,请做好准备。Advertir根据connect_req命令信息做好接收准
备,connect_req包含如下关键信息:
Transmit window offt,定义如图5所⽰
Transmit window size,定义如图5所⽰
武汉大学mbaconnect_req数据包完整定义如下所⽰
归脾丸的副作用与禁忌
connect_req其实是在告诉advertir,⼿机将在Transmit Window期间发送第⼀个同步包(P1)给你,请在这段时间⾥把你的射频接收窗⼝打开。设备B收到P1后,T_IFS时间后将给⼿机回复数据包P2。⼀旦⼿机收到数据包P2,连接即可认为建⽴成功。后续⼿机将以P1为锚点(原点),Connection Interval为周期,周期性地给设备B发送Packet,Packet除了充当数据传送功能,它还有如下两个⾮常重要的功能:
1. 同步⼿机和设备的时钟,也就是说,设备每收到⼿机发来的⼀个包,都会把⾃⼰的时序原点重新设置,以跟⼿机同步。
2. 告诉设备你现在可以传数据给我了。连接成功后,BLE通信将变成主从模式,因此把连接发起者(⼿机)称为Master或者Central,把被连接者(之前的
纳闷的近义词
Advertir)称为Slave或者Peripheral。BLE通信之所以为主从模式,是因为Slave不能“随性”给Master发信息,它只有等到Master给它发了⼀个packet 后,然后才能把⾃⼰的数据回传给Master。
连接失败
有如下⼏种典型的连接失败情况:
1. 如图5所⽰,如果slave在transmit window期间没有收到master发过来的P1,那么连接将会失败。此时应该排查master那边的问题,看看master为什么
没有在约定的时间把P1发出来。
2. 如果master在transmit window期间把P1发出来了,也就是说master按照connect_req约定的时序把P1发出来了,但slave没有把P2回过去,那么连接也
会失败。此时应该排查slave这边的问题,看⼀看slave为什么没有把P2回过去
游艺场3. 如果master把P1发出来了,slave也把P2回过去了,此时主机还是报连接失败,这种情况有可能是master软件有问题,需要仔细排查master的软件。
4. 还有⼀种⽐较常见的连接失败情况:空中射频⼲扰太⼤。此时应该找⼀个⼲净的环境,⽐如屏蔽室,排除⼲扰后再去测试连接是否正常。Connection events
连接成功后,master和slave在每⼀个connection interval开始的时候,都必须交互⼀次,即master给slave发⼀个包,slave再给master发⼀个包,整个交互过程称为⼀个connection event。蓝⽛芯⽚只有在connection event期间才把射频模块打开,此时功耗⽐较⾼,其余时间蓝⽛芯⽚都是处于idle状态的,因此蓝⽛芯⽚平均功耗就⾮常低,以Nordic nRF52810为例,每1秒钟Master和Slave通信1次,平均功耗约为6微安左右。Master不可能时时刻刻都有数据发给slave,所以master⼤部分时候都是发的空包(empty packet)给slave。同样slave也不是时时刻刻都有数据给master,因此slave回复给master的包⼤部分时候也是空包。另外在⼀个connection event期间,master也可以发多个包给slave,以提⾼吞吐率。综上所述,连接成功后的通信时序图应该如下所⽰:
图7:连接成功后的通信时序图(每个connection event只发⼀个包)
图9:连接成功后的通信时序图( connection event可能发多个包)
图10:connection event细节图IAD
Slave latency
图10中出现了slave latency(slave latency = 2),那么什么叫slave latency?
如前所述,在每⼀个connection interval开始的时候,Master和Slave必须交互⼀次,哪怕两者之间交互的是empty packet(空包),但如果slave定义了slave latency,⽐如slave latency = 9,此时slave可以每9个connection interval才回复⼀次master,也就是说slave可以在前⾯8个connection interval期间⼀直睡眠,直到第9个connection interval到来之后,才回复⼀个packet给master,这样将⼤⼤节省slave的功耗,提⾼电池续航时间。当然如果slave有数据需要上报给master,它也可以不等到第9个connection interval才上报,直接像正常情况进⾏传输即可,这样既节省了功耗,⼜提⾼了数据传输的实时性。
小宝宝怎么画
GAP层⾓⾊总结
对上⾯提到的⼿机和设备B,在BLE通信过程中,随着时间的推移,他们的状态在发⽣变化,两者的关系也在发⽣变化,为此蓝⽛spec根据不同的时间段或者状态给⼿机和设备B取不同的名字,即GAP层定义了如下⾓⾊:
advertir。发出⼴播的设备
obrver或者scanner。可以扫描⼴播的设备
initiator。能发起连接的设备
master或者central。连接成功后的主设备,即主动发起packet的设备
slave或者peripheral。连接成功后的从设备,即被动回传packet的设备
图11通过时间把obrver,initiator和central串起来了,其实这三个⾓⾊是相互独⽴的,也就是说⼀个设备可以只⽀持obrver⾓⾊,⽽不⽀持initiator和central⾓⾊。同样,图11也把advertir和peripheral串起来了,其实advertir和peripheral也是相互独⽴的,即⼀个设备可以只作为advertir⾓⾊,⽽不⽀持peripheral⾓⾊。
图11:GAP层⾓⾊

本文发布于:2023-06-22 23:28:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1050505.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设备   连接   时候   失败   射频   数据包   打开   功耗
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图