我是靠谱客的博主 贪玩睫毛,最近开发中收集的这篇文章主要介绍BLE技术参数(广播 连接 UUID 功耗)简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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”就是被用来歹意的部分。

蓝牙技术联盟所用的基本UUID不能用于任何定制的属性、服务和特性。对于定制的属性,必须使用另外完整的128位UUID。

5 参考文献

BLE简介及连接过程_谁de如花的博客-CSDN博客_ble连接过程

从空中截获BLE数据包看蓝牙5协议流程【第四部分:Ellisys蓝牙5连接分析】_BLECODER的博客-CSDN博客_蓝牙空中包分析

最后

以上就是贪玩睫毛为你收集整理的BLE技术参数(广播 连接 UUID 功耗)简介的全部内容,希望文章能够帮你解决BLE技术参数(广播 连接 UUID 功耗)简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部