BLE 连接和通信 的实现
文章目录1、从机广播2、主机扫描3、建立连接4、发送与接收数据为了创建和维护一个BLE连接引入角色这一概念。一个BLE设备不是主机Master集中器角色就是从机Slave外围设备角色。这是根据是谁发起这个连接来确定的主机Master设备总是连接的发起者而从机Slave总是被连接者。这个访问与连接过程都在通用访问规范GAP进行实现的。1、从机广播从机要被主机连接它就必须先被主机发现。这个时候从机设备把自身信息以广播形式发射出去。比如设备AAdvertiser需要先进行广播设备AAdvertiser不断发送 广播信号T 为广播间隔。每发送一次广播包称为一次广播事件Advertising Event因此 T 也称为广播间隔。广播间隔它的范围是20ms到10.24s。广播间隔影响建立连接的时间。当广播发出的时候每一个广播事件包含三个广播包即分别在 37/38/39 三个信道上同时广播相同的信息。下图 Observer 为主机观察者Advertiser 就是从机广播。2、主机扫描设备AAdvertiser不断发送广播信号给主机Observer如果手机不开启扫描窗口主机是收不到设备A的广播的。如下图所示不仅手机要开启射频接收窗口而且只有主机的射频接收窗口跟广播发送的发射窗口 匹配成功手机才能收到设备A的广播信号。由于这种匹配成功是一个概率事件因此手机扫到设备A也是一个概率事件。也就是说主机有时会很快扫描到设备A比如只需要一个广播事件主机有时又会很慢才能扫到设备A比如需要10个广播事件甚至更多。下面图表示了 主机主动扫描广播的过程控制器收到扫描数据包后将向主机发送一个广播报告事件adv_report该事件同样包括了 链路层数据包的广播类型。因此主机能够判断 对端设备 是否可以连接或者扫描并且区分出广播数据包和扫描响应数据包。3、建立连接如图所示手机在收到A1广播包ADV_IND后以此为初始点T_IFS 后给Advertiser 发送一个Connection Request命令即A2数据包告诉Advertiser我将要过来连你请你做好准备。Advertiser 根据Connect_req命令信息做好接收准备。Connect_req其实是在告诉 Advertiser手机将在 Transmit Window 期间发送第一个同步包P1给你请在这段时间里把你的射频接收窗口打开。设备B收到P1后在 T_IFS 时间后将给手机回复数据包P2。一旦手机收到数据包P2连接即可认为建立成功。后续手机将以P1为锚点原点Connection Interval 为周期周期性地给设备B发送Packet。4、发送与接收数据连接成功后Master和Slave在每一个 Connection Interval 开始的时候都必须交互一次即Master给Slave发一个包Slave再给Master发一个包整个交互过程称为一个 Connection Event。蓝牙芯片只有在 Connection Event 期间才把射频模块打开此时功耗比较高其余时间蓝牙芯片都是处于Idle状态的。因此蓝牙芯片平均功耗就非常低。Master不可能时时刻刻都有数据发给Slave所以Master大部分时候发的都是空包Empty Packet给Slave。同样 Slave 也不是时时刻刻都有数据给 Master因此Slave回复给Master的包大部分时候也是空包。另外在一个 Connection Event 期间Master 也可以发多个包给 Slave以提高吞吐率。综上所述连接成功后的通信时序图应该如下所示图中主从数据发送的数据包TX和RX表示方向性的数据通道也就是蓝牙的空中属性空中操作时间都是采用蓝牙操作句柄来进行的因此句柄能够唯一表示各个属性。空中特性的性质包括1、主机RX从机TX方向1通知从机 上传数据给 主机不需要主机回复一个响应2指示从机 上传数据给 主机需要主机发一个确认给服务器通知和指示之间不同点 在于指示有应用层上的确认而通知没有。2、主机TX从机RX方向1写2没有回应的写3读
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2525677.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!