概述
1 技术背景
BLE技术是蓝牙技术联盟(Bluetooth Special Interest Group,简称Bluetooth SIG)制定的通信协议,在协议被做成具体的代码之前,都只存在协议文档中,TI、Nordic、Silicon Labs等厂商,根据SIG发布的BLE技术协议,配合自身的芯片开发了一整套源码,并且这套源码通过了SIG的测试,也被叫做协议栈,协议栈是协议的实现。不同芯片厂商都有各自的协议栈,而这不同的协议栈,SIG是不允许厂商开源的,所以厂商们的BLE芯片资料中协议栈都是做成库的形式提供,只开放部分的API层,但实际对我们开发终端产品来说足够了。
本次不介绍BLE技术的开发,主要涉及应用基础知识,在BLE实际应用中,即使没有蓝牙开发经验,但有必要掌握其关键参数,才能更好地把握其应用。我们需要掌握的参数有:广播间隔、连接间隔、连接过程、UUID和功耗等。下面将依次介绍,文档会根据实际情况不定期更新,也欢迎指正与分享补充!
2 蓝牙协议栈结构
2 广播(Advertising)
2.1 广播间隔(Advertising interval)
蓝牙协议栈规定蓝牙广播间隔在20ms~10.24ms之间,且是"0.625ms"的整数倍,是两次广播事件之间的最小时间间隔。
可以知道,广播间隔越小,广播时间发生越密,功耗越大。
2.2 广播事件(advertising event)
在一个广播事件中,广播包会分别在三个广播信道(37,38,39)中被发送一次。蓝牙芯片只有在广播事件期间才打开射频模块,这个时候功耗相对较高,其余事件蓝牙芯片处于休眠状态,因此平均功耗也非常低,不同厂商能做到的低功耗范围不同。
3 BLE连接通信
在BLE通信中,数据的接收和发送都发生在连接事件中,如下图,连接事件是周期性发生的,这个周期由连接参数决定。连接参数是由主机决定的,从机可以向主机发起更新连接参数请求,但是最终使用的参数是由主机决定的,主机可以接受也可以拒绝。
可以知道,连接间隔越小,连接事件的发生越密,功耗越大。
3.1 连接间隔(Connection interval)
连接间隔决定了主从设备间的交互间隔,指两个相邻的连接事件之间的间隔,参数范围在7.5ms--4s,且必须是1.25的整数倍。
3.2 连接事件(Connection Events)
主从设备之间的通信都是发生在连接事件中的,换句话说,在连接事件之外,主从设备之间不发送任何数据包,在BLE设备建立连接后,所有的通信事件都是通过连接事件进行。
连接成功后,主从机在每一个连接间隔开始的时候,都必须交互一次,即主机给从机发一个包,从机再给主机发一个包,整个交互过程称为一个连接事件。蓝牙芯片只有在连接事件期间才把射频模块打开,此时功耗比较高,其余时间蓝牙芯片都处于休眠状态,因此蓝牙芯片平均功耗非常低。主机不可能时时刻刻都有数据发给从机,所以主机大部分时候都是发的空包(empty packet)给slave。同样从机也不是时时刻刻都有数据给主机,因此从机回复给主机的包大部分时候也是空包。在一个连接事件期间,主机也可以发多个包给从机,以提高吞吐率。
3.3 Slave latency
如前所述,在每一个connection interval开始的时候,主机和从机必须交互一次,哪怕两者之间交互的是空包,但是如果从机定义了slave latency,比如Slave latency=6,此时Slave可以每6个Connection interval才回复一次master,也就是说slave可以在前面5个Connection interval期间一直休眠,直到第6个Connection interval到来之后,才回复一个packet给master,这样将大大节省slave的功耗,提高电池续航时间。当然如果slave有数据需要上报给master,它也可以不等到第6个connection interval才上报,直接像正常情况传输即可,这样既节省了功耗,又提高了数据传输的实时性。
3.4连接过程
下面描述蓝牙从机设备从被发现到被连接的整个过程(包括数据交互):
首先要清楚的是,两个设备进入连接状态,发起方称为Master(主机),而广播方称为Slave(从机)。
在主从机建立连接之前,Advertiser需要先进行广播,如果Scanner不开启扫描窗口,就收不到Advertiser的广播,不仅Scanner要开启射频接收窗口,而且只有Scanner的射频接收窗口和广播发送的发射窗口匹配成功,才能收到从机的广播信号。由于这种匹配成功是个概率事件,因此Scanner扫到Advertiser也是一个概率事件,也就是说,Scanner有时候会很快扫到Advertiser,比如只需要一个广播事件,有时又会很慢才能扫到,比如可能需要3个广播事件甚至更多,一般来说3~4个广播间隔就能被扫到。
Advertiser广播,Scanner开着扫描模式(假设开的主动扫描),Scanner收到从机的广播包,就会发一个扫描请求,从机有扫描应答包的话回应答包,通过广播包和扫描应答包的属性判断可否连接,这时如果Scanner判断该从机可以被连接,则会发连接请求,此时Scanner转变为Initiator,然后从机发连接响应,约定时隙、连接间隔等连接参数,发起连接的为Master,被连接的为Slave。
3.5 角色总结
advertiser 发出广播的设备
observer或者Scanner 可以扫描广播的设备
initiator 能发起连接的设备
master或者central 连接成功后的主设备,即主动发起packet的设备
slave或peripheral 连接成功后的从设备,即被动回传packet的设备
4 UUID
蓝牙技术联盟制定了两种不同的UUID,一种是基本的UUID,一种是代替基本UUID的16位UUID。
所有的蓝牙技术联盟定义UUID共用了一个基本的UUID:0000xxxx-0000-1000-8000-00805F9B34FB
“xxxx”就是被用来歹意的部分。
5 参考文献
BLE简介及连接过程_谁de如花的博客-CSDN博客_ble连接过程
从空中截获BLE数据包看蓝牙5协议流程【第四部分:Ellisys蓝牙5连接分析】_BLECODER的博客-CSDN博客_蓝牙空中包分析
最后
以上就是贪玩睫毛为你收集整理的BLE技术参数(广播 连接 UUID 功耗)简介的全部内容,希望文章能够帮你解决BLE技术参数(广播 连接 UUID 功耗)简介所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复