“低功耗蓝牙(BLE)是物联网(IoT)生态系统的一项关键技术。BLE最初是作为一种无线协议开发的,用于取代键盘、鼠标和耳机等消费电子产品中的线缆,但时至今日,它的功能已经大大拓展,不再仅仅是线缆的替代方案。目前,它在医疗、零售、汽车等多个行业及位置标签、仪器控制等工业应用中发挥着重要作用。
”作者:Erick John Reyes,高级固件工程师
Mary Grace Legaspi,固件工程师
Eric Peňa,嵌入式系统架构师
摘要
本文深入介绍了低功耗蓝牙(BLE)协议栈架构,并探讨了如何运用现有的BLE应用,充分发挥低功耗无线通信的潜力。为了能够高效可靠地开展设计、解决问题和优化应用,这些知识必不可少。
引言
低功耗蓝牙(BLE)是物联网(IoT)生态系统的一项关键技术。BLE最初是作为一种无线协议开发的,用于取代键盘、鼠标和耳机等消费电子产品中的线缆,但时至今日,它的功能已经大大拓展,不再仅仅是线缆的替代方案。目前,它在医疗、零售、汽车等多个行业及位置标签、仪器控制等工业应用中发挥着重要作用。
根据《2023年蓝牙市场更新报告》(2023 Bluetooth Market Update),从2023年到2027年,支持蓝牙无线技术的设备出货量的复合年增长率(CAGR)为9%。1 在这种增长态势下,预计到2027年,BLE设备出货量将翻一番以上,并且在所有支持蓝牙技术的设备中,97%会采用BLE。1
BLE是一种无线技术,于2010年7月随蓝牙4.0规范推出。BLE前称为Bluetooth Smart(蓝牙智能),专为超低功耗设备而设计。
我们熟悉的传统蓝牙技术主要用于将智能手机与耳机配对、传输音乐和照片等大量数据,而BLE则有着不同的用途。传统蓝牙虽然能够处理大量数据传输,但会因此而消耗更多的电池电量。相比之下,BLE针对不需要大量数据传输的应用进行了优化,因而成为各种功耗敏感应用的理想选择。传统蓝牙即使在不使用时,仍会保持活动状态并消耗电量,而BLE大部分时间处于休眠模式,仅在建立连接时才会唤醒,并且连接时间通常仅维持几毫秒。这种高效的电源管理,结合最高1 Mbps(BLE 5.0中达到2 Mbps)的数据速率,使得BLE设备能够以极低的功耗运行。

图1.(a)经典蓝牙和(b)低功耗蓝牙规范要点2

图2.(a)经典蓝牙和(b)低功耗蓝牙的应用2
蓝牙规范
如图1和图2所示:
BLE应用概述
典型的BLE应用由两个设备组成:外围设备和中心设备。在建立连接之前,外围设备会通过一个称为BLE广播的过程对外宣告自身的存在。中心设备会扫描可用的外围设备。一旦中心设备找到所需的外围设备,两者之间就会建立连接。然后,每个设备中的应用可以通过BLE协议栈的不同层传输数据,实现相互通信。参见图3。
例如,智能手机可以充当中心设备,而健身追踪器可以充当外围设备。健身追踪器作为服务器,收集心率、血压、ECG、步数甚至睡眠模式等数据。健身追踪器向附近设备广播自身的存在,包括作为客户端的智能手机。智能手机从健身追踪器中检索这些数据,并显示在用户易于理解的应用程序上。这只是BLE支持实现的众多应用中的一个例子,我们将在文章的后半部分讨论更多应用。

图3.外围设备和中心设备的各层
BLE协议栈架构
BLE协议栈架构(如图4所示)是实现BLE设备之间通信的结构化软件框架。它定义了必要的层级和协议,用于建立、维持和终止蓝牙连接,方便设备间交换数据。
BLE协议栈架构通常分为三个主要层级:应用层、主机层和控制器层。应用层是协议栈的最顶层。BLE设备上运行的应用程序在这一层利用和处理实际数据。主机层位于协议栈中的应用层和控制器层之间,实现了BLE通信所需的所有较高级别协议和配置文件。此外,它还提供高级应用程序编程接口(API),使得应用程序能够与协议栈的较低层交互。控制器层是BLE协议栈的硬件部分,负责蓝牙信号的发送和接收。控制器层处理信号的跳频、调制和解调等任务。上述层级协同工作,实现BLE设备之间高效可靠的通信。


图4.BLE协议栈架构
应用
应用层用于实现BLE设备具体应用需求。应用层通过GATT(通用属性规范)与协议栈下层进行交互,基于GATT定义的服务、特征和相应数据。
设备的特性和行为在应用层设计。其中包括定义服务和特征,指定数据交换方式,实现连接、断开连接、数据更新等事件处理逻辑。应用层的主要作用是根据设备及其预期使用场景的具体需求来定制BLE协议栈。
主机
主机层包含BLE协议栈的其余上层协议,具体包括逻辑链路控制与适配协议(L2CAP)、安全管理器协议(SMP)、属性协议(ATT)、通用属性规范(GATT)和通用访问规范(GAP)。L2CAP作为上下层协议之间的通道接口,负责应用数据的分割和封装,并使用ACL链接传输数据包。L2CAP通过通道标识符(CID)和通道复用来正确定位设备上的端点。参见图5。

图5.L2CAP数据包
L2CAP信号
在BLE协议栈中,命令以请求和响应的形式在设备之间交换。以下是有关命令的一些要点:

图6.L2CAP帧格式
SMP定义了BLE设备之间的配对、认证和加密程序。SMP命令使用L2CAP服务执行这些程序。SMP命令包由代码字段和数据字段组成。代码字段用于标识命令的类型,而数据字段的长度和格式取决于命令类型。所有SMP程序都实现了30秒超时,用于判断程序是否失败。参见表1。
表1.SMP命令代码
|
代码 |
说明 |
相位 |
|
0x00 |
保留 |
— |
|
0x01 |
配对请求 |
相位1 |
|
0x02 |
配对响应 |
相位1 |
|
0x03 |
配对确认 |
相位2 |
|
0x04 |
随机配对 |
相位2 |
|
0x05 |
配对失败 |
相位2 |
|
0x06 |
加密信息 |
相位3 |
|
0x07 |
主节点标识 |
相位3 |
|
0x08 |
识别信息 |
相位3 |
|
0x09 |
身份地址信息 |
相位3 |
|
0x0A |
签名信息 |
相位3 |
|
0x0B |
安全请求 |
相位1 |
|
0x0C至0x0FF |
保留 |
— |
ATT定义了访问设备属性或数据的规则。它支持发现、读取和写入远程设备上的属性。ATT遵循客户端-服务器模型。服务器公开一组属性,而客户端可以发现、读取和写入这些属性。ATT中的属性结构由句柄、类型、值和权限组成。属性句柄是分配给服务器上每个属性的唯一非零标识符。属性类型通过通用唯一标识符(UUID)指定属性的含义。UUID可以是由蓝牙技术联盟(SIG)分配的16位UUID,也可以是自定义的128位UUID。属性值是属性的实际数据值,而属性权限决定了属性允许的访问级别。参见图7。

图7.属性结构
ATT定义了六种协议数据单元(PDU)类型:请求、响应、命令、确认、通知和指示(图8)。请求PDU由客户端发送给服务器,请求回复。响应PDU是请求回复时服务器对客户端的回复。命令PDU由客户端发送给服务器,无需回复。指示PDU由服务器发送给客户端,需要回复。确认PDU由客户端发送给服务器,作为对指示的回复。通知PDU由服务器发送给客户端,无需回复。通过这些PDU类型,客户端和服务器可以在BLE协议栈的ATT层交换信息和进行控制。

图8.不同类型的属性PDU
ATT PDU包由操作码、属性参数和身份验证签名构成(图9)。操作码字段用于标识PDU的方法/类型,例如请求或响应。它还包括一个命令标志,用于指示PDU类型是否为命令;以及一个身份验证签名标志,用于指示数据包是否使用身份验证签名。

图9.ATT PDU包格式

图10.BLE层数据包格式
图10总结了BLE协议栈架构中各层的数据包格式,并概要显示了数据的结构。
沿着主机层往上,下一个更高的层级是GATT。通用属性规范(GATT)负责定义数据或属性的格式化、封装以及设备之间的交互规则。GATT程序包括属性发现、读取、写入、通知和指示。它为管理BLE设备中的数据提供了一个标准框架。
一个BLE设备中可能存在多个GATT配置文件(图11)。蓝牙规范中定义了标准配置文件,以确保不同制造商生产的BLE设备能够互操作。但是,基于特定应用要求,也可以实现自定义配置文件。因此,了解GATT配置文件的结构至关重要。
GATT配置文件由服务组成。服务指ATT协议中定义的一组相关属性。在GATT中,“特征”一词通常用于指代属性,但特征可能包含本身即为属性的描述符。特征是用户数据的容器,而描述符提供有关用户数据的说明或附加信息。

图11.GATT配置文件结构
与ATT类似,GATT中也有两个角色:GATT客户端和GATT服务器。GATT客户端是访问远程GATT服务器上数据的设备。GATT服务器是支持远程GATT客户端访问数据的设备。在GATT中,一个设备的角色由数据访问的方向决定。
在BLE协议栈的主机层中,通用访问规范(GAP - Generic Access Profile) 是顶层协议,定义了蓝牙设备如何相互访问和通信。GAP涵盖了设备的工作模式、发现流程、连接建立和安全机制。所有支持蓝牙技术的设备都需要实现GAP,因为它为BLE设备的控制提供了标准框架。
GAP根据BLE设备的活动状态为其提供不同的角色。当不需要连接时,BLE设备可以充当广播者或观察者。广播者是一种在邻近范围内宣告自身存在的设备。它主要利用链路层的广播者角色发送广播。观察者与广播者相反,它利用链路层的扫描者角色扫描相关区域,以接收来自附近设备的广播。在现实生活中,广播者的例子有BLE信标,而观察者的例子有收集数据的BLE集线器。参见图12。

图12.广播者向观察者发送广播数据包
当可以建立连接时,GAP为BLE设备提供两个额外的角色:外围设备和中心设备。外围设备与广播者类似,它会宣告自身的存在,并等待来自远程中心设备的连接请求。中心设备则充当观察者,扫描外围设备,并向所需外围设备发起连接请求。如前所述,外围设备的例子有智能手表、健身追踪器和家庭自动化传感器,而中心设备的例子有智能手机、平板电脑和笔记本电脑。参见图13。

图13.中心设备/外围设备 vs 广播者/观察者
根据蓝牙规范的要求,在一个配置文件中GAP服务必须由GATT服务器实现。GAP服务涵盖有关设备基本信息的各种特征,通常包括:设备名称、设备外观、外围设备首选连接参数、中心设备地址解析,以及仅能通过解析获得的私有地址。
控制器
控制器包含两层:链路层和物理层。物理层位于BLE协议栈的底层,负责无线信号的实际传输和接收。物理层工作在2.4 GHz ISM频段,采用高斯频移键控(GFSK)调制方案。这种调制方案通过改变载波信号的频率来实现高效的数据传输。
物理层由40个信道组成,每个信道彼此间隔2 MHz:
在蓝牙5核心规范发布前,BLE仅使用3个固定广播信道(37、38、39)。而蓝牙5引入的扩展广播功能,允许将原本用于数据传输的37个数据信道作为辅助广播信道使用。此扩展解锁了蓝牙5中的新特性,扩展了物理层的编码方案选择。参见图14。

图14.BLE信道
蓝牙5引入了三种不同的物理层(PHY)类型,支持三种调制方案和四种数据传输速率(表2)。默认物理层(PHY)为LE 1M,以每秒1兆符号率(1 Msym/s)的调制方案运行,实现和每秒1兆比特率(1 Mbps)的数据传输速率,无线传输距离可达100米。另一类型物理层(PHY)为LE 2M,使用2 Msym/s调制方案,数据传输速率提升至2 Mbps。第三种物理层(PHY)为LE Coded,支持125Kbps和500Kbps两种数据传输速率。类似LE 1M模式,LE Coded采用1 Msym/s符号率调试方案。采用数据速率125Kbps的编码,每1比特数据扩展为8个符号(S=8),而采用数据速率500Kbps的编码,每1比特数据扩展为2个符号(S=2)。这种编码方案使得LE Coded PHY用于长距离模式应用,在空旷空间中传输距离可达1000米。(支持前向纠错,降低误码率。)
表2.BLE中的不同PHY
|
PHY |
调制 方案 |
编码方案 |
数据速率 |
|
|
访问标头 |
有效载荷 |
|||
|
LE 1M |
1 Msymps调制 |
未编码 |
未编码 |
1 Mbps |
|
LE 2M |
配对请求 |
未编码 |
未编码 |
2 Mbps |
|
LE Coded |
配对 响应 |
S = 8 |
S = 8 S = 2 |
125 kbps 500 kbps |

图15.链路层状态转换
除了不同的状态之外,链路层还定义了如下事件:广播事件和连接事件。广播事件涉及使用广播信道传输数据包,而连接事件涉及通过数据信道在已连接状态下传输数据包。
链路层还定义了由物理层传输的BLE数据包的格式。数据包格式分为编码PHY(Coded PHY)和未编码PHY(Uncoded PHY)。

图16.未编码PHY的BLE数据包
如图16所示,未编码PHY的BLE数据包以前导码开始,之后是访问地址、PDU和循环冗余校验(CRC)。
如图17所示,编码PHY的BLE数据包由前导码、前向纠错(FEC)块1和FEC块2组成。

图17.编码PHY的BLE数据包
无论未编码PHY还是编码PHY,其使用的BLE数据包PDU都可以分为两类:广播信道PDU和数据信道PDU。参见图18至图21。

图18.广播物理信道PDU

图19.广播物理信道PDU标头
如图19所示,广播信道PDU用于广播事件。它由2字节的标头和最多255字节的有效载荷组成。
标头包含以下字段:PDU类型、RFU(保留以备将来使用)位、ChSel、TxAdd、RxAdd和长度。ChSel、TxAdd和RxAdd位的值取决于PDU类型,而长度字段用于描述有效载荷的长度(以字节为单位)。

图20.数据物理信道PDU

图21.数据物理信道PDU标头
如上图所示,数据信道PDU由连接事件使用。它由2或3字节的标头、有效载荷以及用于加密链路的消息完整性校验(MIC)组成。
数据信道PDU标头包含以下字段:LLID、NESN、SN、MD、CP、长度和CTEInfo。
主机控制器接口(HCI)
HCI充当主机和控制器之间的中介。它提供了一组标准化的命令和事件,用于支持这两层之间的通信。
HCI支持多种类型的传输层,包括UART、USB、SDIO和三线UART。每种传输层都有自己的规范和要求。本概述着重介绍UART传输层。
根据蓝牙5.2规范,UART传输层支持五类数据包:命令、事件、异步无连接(ACL)数据、同步(SCO)数据和等时(ISO)数据。

图22.蓝牙应用
为何如此重要?
BLE广泛应用于从消费类产品到工业环境的各种场景中,因此了解BLE及其重要性会大有裨益。BLE是一种不断发展和升级的协议,为应用开发提供了无限的可能性。
用例
BLE广泛应用于众多行业,在不知不觉中影响着我们的日常生活(图22)。熟悉BLE有助于人们在各种应用场景中理解并运用BLE的优势。BLE为很多领域做出了巨大贡献,推动了现有流程的革新。以下是其中的一些领域:
BLE在医学领域的应用
BLE在医学领域发挥着至关重要的作用。BLE技术让血糖仪、血压监测仪等设备得以使用,甚至像起搏器这样要求超低功耗的植入式设备也能够更好地发挥作用。这些设备可以收集数据,并向患者和医疗机构传输实时报告。BLE还能用于患者追踪,定位房间或楼层号码,向医疗响应人员传输信息等。
BLE在定位追踪中的应用
借助BLE技术,先进的追踪器或智能标签可以附着在包、钥匙甚至宠物上,以便追踪所在位置。这些标签设计得非常小巧且节能,因此BLE的低能耗特性至关重要。很多行业也在利用BLE技术,例如仓库货位监控、杂货店管理及室内导航。
BLE在可穿戴设备中的应用
可穿戴设备对轻巧便携和长久续航的要求,使得BLE技术成为理想之选。智能手表、健身手环和智能眼镜等设备普遍采用BLE来实现无线连接并降低能耗。
BLE在音频流传输中的应用
BLE在音频流传输应用中发挥着重要作用。随着LE Audio的推出,BLE现在支持低延迟的音频流传输,带来更佳的音质体验。LE Audio采用低复杂度通信编解码器(LC3),能够在低数据速率下保证音频质量不受影响。这为无线音频消费开辟了新的可能性。
BLE在自动化家居中的应用
在自动化家居领域,BLE是实现智能家居的基础技术。物联网在智能家居中得到广泛应用,而BLE支持各种智能设备之间无缝连接。市面上有各种各样支持BLE的智能设备可用于自动化家居,例如钥匙扣、家庭信标、开关等。BLE让用户能够控制和监控家里的方方面面,例如智能照明、高效节能的家庭能源管理、智能门锁、无线扬声器系统、家用机器人和安保系统。
结论
在BLE协议栈中,应用数据需经过多层协议处理,才能到达另一台设备的远端应用程序(该设备也拥有自身的BLE协议栈)。完整流程如下:
在接收端,远程BLE设备接收数据包,并执行逆过程来提取数据。
在不同应用中实现BLE时,选择合适的硬件是实现最佳效率和优化的关键。针对不同的要求和应用,ADI公司提供了多种支持BLE的微控制器。
MAX32665/MAX32666/MAX32667/MAX32668DARWIN系列低功耗微控制器针对广泛的实际应用而设计。这些MCU支持蓝牙5低功耗无线电连接,可以与多个设备进行无线连接以实现物联网应用,同时仍维持尽可能低的活动功耗和保持功耗3。DARWIN MCU还拥有同类产品中最大的嵌入式存储器,支持更大规模的应用和更多的协议栈。这种灵活性和能力为物联网领域的设计和应对各种挑战提供了无限可能性,既夯实了现代物联网解决方案的基石,又为未来发展铺平了道路。
参考文献
1 2023 Bluetooth Market Update,Bluetooth,2023年。
2 Bluetooth Technology Overview,Bluetooth。
3 “了解DARWIN:一种全新低功耗物联网MCU”,ADI公司,2022年10月。
4 Madhur Bhargava,“IoT Projects with Bluetooth Low Energy”,Packt Publishing Limited,2017年。
5 “Bluetooth Core Specification Version 5.2 Feature Overview”,Bluetooth。
6 “Core Specification 5.4”,Bluetooth。
7 Naresh Gupta,“Inside Bluetooth Low Energy”,Artech House,2013年。
8 “Stack Architecture”,Zephyr Project。
Bluetooth®文字标记和徽标是Bluetooth SIG, Inc.的注册商标,ADI公司已获得许可使用此类标记。其他商标和商号均属各自所有人所有。
分享到:
猜你喜欢