BLE 连接和通信 的实现



为了创建和维护一个BLE连接,引入角色这一概念。
一个BLE设备不是 主机Master(集中器)角色,就是 从机Slave(外围设备)角色。

这是根据是谁发起这个连接来确定的:
主机Master 设备总是连接的发起者,而 从机Slave 总是被连接者

这个访问与连接过程,都在 通用访问规范(GAP)进行实现的。


1、从机广播

从机要被主机连接,它就必须先被主机发现。这个时候,从机设备把自身信息,以广播形式发射出去。
比如,设备A(Advertiser)需要先进行广播,设备A(Advertiser)不断发送 广播信号,T 为广播间隔。每发送一次广播包,称为一次广播事件(Advertising Event),因此 T 也称为广播间隔

广播间隔,它的范围是20ms到10.24s。广播间隔影响建立连接的时间。

在这里插入图片描述
当广播发出的时候,每一个广播事件包含三个广播包,即分别在 37/38/39 三个信道上,同时广播 相同的信息。

下图 Observer 为主机观察者,Advertiser 就是从机广播。
在这里插入图片描述

2、主机扫描

设备A(Advertiser)不断发送广播信号给主机(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)读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值