BLE理论基础:协议栈、角色分类

此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。
此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。
本文首发于CSDN,其他网站均为转载。网络媒体或个人转载请注明出处和链接,否则属于侵权行为。

原博客链接:https://blog.csdn.net/qq_38305370
原博主昵称:城外南风起
————————————————

BLE理论基础

从蓝牙4.0开始,蓝牙核心规范中适时更新了关于低功耗蓝牙( BLE)的部分。截止蓝牙5.0协议,可选的核心配置( CC)的简称及全称如表所示。带有LE(Low Energy)核心配置的蓝牙即为低功耗蓝牙。

BLE理论基础:协议栈、角色分类
目前,蓝牙设备一般分为两类:
①单模设备:仅支持低功耗模式蓝牙。
②双模设备:同时支持经典蓝牙( )和低功耗蓝牙。可以和市场上所有蓝牙设备进行通信,目前使用的蓝牙大部分是双模设备。
两种设备均要求支持BLE,可见,BLE将是未来的主流蓝牙技术。

1 BLE协议栈

BLE协议栈如图所示。它的组成总共涉及三个单元:控制器、主机、应用程序。控制器是一个硬件装置,可以收发无线信号,并将这些信号转换为数据包;主机以软件形式存在于控制器上,管理设备间的通信;应用程序享受最高层的地位,通过主机指挥控制器执行用户规定的行为;主机控制器接口(Host Controller Interface, HCI)分为两个环节,第一环节位于主机,第二环节位于控制器。主机包含三个协议:逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol, L2CAP)、属性协议(Attribute Protocol, ATT)和安全管理器协议(Security Manage Protocol, SMP),还包含两个规范:通用属性规范(Generic Access Profile, GAP)、通用访问规范(Generic Attribute Profile, GATT)。

BLE理论基础:协议栈、角色分类
①控制器:通常包含射频电路和一些数模电路。控制器通过天线与大气相连,通过主机控制器接口与主机相连。分为以下四个部分:

1)物理层:通过无线电完成数据收发。针对小范围内有大量无线电传输的情形,在无线电的频段内分隔出40个RF信道,单个宽度2MHz,总计2.4GHz。

2)直接测试模式:可以使用该模式收发测试用的数据包。该部分提供了一种统一的、标准化的测试方法,为产品制造商节省了大量的资源。

3)链路层:控制设备的五种状态:准备、广播、扫描、初始化以及连接,是协议栈中最复杂的部分。

4)主机控制器接口:提供了主机与控制器双向通信的标准接口,使得两者可以方便地在物理和逻辑结构上进行分割。

②主机:主机来自硬件抽象,包含协议栈的配置文件和应用接口,与用户应用程序共同运行在处理器上。

1)逻辑链路控制和适配协议:可实现数据分割和重组、各通道流控制、错误控制,直接对更上一层的属性协议和安全管理器协议负责,提供数据服务。

2)属性协议:是在蓝牙4.0规范中新增的通信机制,实现了与对端设备通信的点对点协议。

3)安全管理器协议:用于配对和密钥分发, 只在BLE中有,经典蓝牙的类似功能被集成到了链路管理协议(link management protocol, LMP)中。该协议负责密钥生成,并管理密钥存储。

4)通用属性规范:建立在属性协议的基础上,引入了服务和特征的概念。它描述了一个通用框架,将数据包装在服务和特征中,基于此框架,可以规范地传输和存储数据。用户可使用属性协议访问对端设备的特征。

5)通用访问规范:代表各类蓝牙所共有的基础功能,如发现设备、连接设备、建立绑定、安全认证以及为用户提供信息等。

③应用:应用层由特征、服务、规范组成,层级依次升高。其框架如图2. 3所示。规范可由一个或多个服务构成,实现某个具体应用。例如,在脑电采集应用中,有脑电测量和设备信息等服务。一个服务包括一个或多个特征,也可包括其他服务。一个特征包含特征属性、值、特征描述符(若有必要)三个部分。

BLE理论基础:协议栈、角色分类
1)特征:采用128位的通用唯一识别码(Universally Unique Identifier, UUID)标识的数据块。常用的UUID有两种。

a.蓝牙特别兴趣小组( Bluetooth Special Interest Group, Bluetooth SIG)规定的UUID:SIG已预先分配了一系列UUID给常用的服务。分配的第一个UUID称作蓝牙基本UUID,其最高的32位为00000000,第0位到95位0000-1000-8000-00805F9B34FB。这些预分配的UUID可用16位UUID代替,因为16位已经能满足目前的服务量需求。这16位代表着128位UUID的95至110位,即,可将最高的32位写成0000xxxx,“xxxx”代表16位UUID。因此,16位UUID和蓝牙基本UUID可通过下式转换。显然,相较于128位UUID ,16位UUID降低了存储和传输的成本。

128位UUID=16位UUID×2^96+蓝牙基本UUID

b.供应商规定的UUID:为了区别于SIG的UUID,一些蓝牙供应商自行规定了UUID。例如,使用Nordic Semiconductor的蓝牙解决方案时,可通过nRFgo Studio软件产生蓝牙基本UUID。在此基础上,加上自定义的16位UUID即可生成128位UUID。

2)服务:描述了一组特征及特征的使用方法。服务分为首要服务和次要服务。首要服务包含次要服务,并解释这些次要服务间以及次要服务和首要服务间如何交互引用。

3)规范:是应用层的具体实现,规范可以发现服务和特征,并调用服务完成目标任务。规范和服务的关系是相互独立的、多对多的。同一服务可被多个规范调用,一个规范也可调用多个服务。

2 BLE角色分类

①GAP规定的角色:在低功耗蓝牙中,一般都存在发送器和接收器,但GAP规定了四种角色,分别是广播者、观察者、外围设备和*设备。在控制器中,这些角色都有对应的要求,使得厂商可以针对特定角色优化控制器,去掉发送器或者接收器。

1)广播者:该角色针对仅发送信息的功能进行了优化,使用广播功能来广播数据。该角色带有发送器,但可能无接收器。该角色不支持连接。

2)观察者:该角色针对仅接收信息的功能进行了优化,是广播者的补充角色,可接收广播中的广播数据。该角色带有接收器,但可能无发送器。该角色不支持连接。由于无法建立连接,广播者和观察者在应用范围上不如后两种角色。

3)外围设备:该角色针对支持单个连接且无需进行复杂处理的功能进行了优化。该角色带有接收器和发送器,在链路层的连接状态为从机。

4)*设备:该角色支持多个连接,是与外围设备角色进行连接的发起者,其需要处理的任务相对复杂。该角色带有接收器和发送器,在链路层的连接状态为主机。

②GATT规定的角色:GATT定义了服务器和客户端。通常来说,建立连接后,提供数据服务的设备(一般是智能传感器或可穿戴设备,如智能水表、血压监测仪等)是服务器,读写该数据的设备是客户端。例如,笔记本(客户端)从脑电检测装置(服务器)读取数据以判断使用者的心理活动。

GATT角色与GAT角色容易混淆,它们所依据的规范不同,所以本质上是无关的。在实际应用案例中,两类角色比较常见的关系是:外围设备用作服务器,*设备用作客户端。

————————————————
感谢您的阅读,如果您有收获,请给我一个三连吧!
如果您觉得这还不够,可以点击 打赏 按钮,告诉我: 你币有了!

上一篇:【小tips】regionprops函数的使用方法


下一篇:ryu控制器与mininet连接的简单使用(2021.6.16)