同时支持BLE和BR / EDR的设备称为双模式设备。 通常,除非另有特别说明,否则在蓝牙生态系统内部,移动电话或便携式计算机被视为双模式设备。 仅支持BLE的设备称为单模设备。
单模(BLE或低功耗蓝牙)设备仅实现BLE,并且能够与单模和双模设备通信,但是不能与仅支持BR / EDR的设备通信。 BLE支持是单模式设备处理传入消息并发出响应的必备条件。
双模低功耗蓝牙设备,同时实现了BR / EDR和BLE,并且能够与任何蓝牙设备进行通信。
有集成处理器和外部处理器两种实现方式。功能强大的计算设备(如智能手机和平板电脑)通常会选择外部处理器,以及相应的HCI协议。大多数传感器应用趋向于使用集成处理器(SoC)硬件配置,因为它会降低整体系统复杂性以及相关的印刷电路板(PCB)成本。
图1:集成与外部处理器BLE硬件配置
BLE设备使用两种不同的通信方法,每种方法都有其特定的优点和局限性:广播和连接。 两种方法均遵循通用访问配置文件(GAP)建立的某些过程。
使用无连接广播时,BLE设备会将数据发送到可接受的收听范围内的任何扫描设备或接收器。 本质上,此机制允许BLE设备执行以下操作:
将数据单向发送给任何能够进行传输的人或任何事物。
广播定义了两个单独的角色:
●广播者:定期将不可连接的广告包发送给愿意接收它们的任何设备。
●观察者:重复扫描预设频率以接收任何不可连接的广告数据包。
广播是设备一次向多个配对方传输数据的唯一方法。 这些广播的数据通过使用BLE的广告功能发送出去。
对于BLE中的双向数据传输,需要存在一个连接。 BLE中的连接无非是涉及的两个BLE对等点之间在特定的特定时间点(连接事件)建立的定期数据交换。 通常,仅在两个BLE连接对等方之间交换数据,并且不涉及其他设备。 连接定义两个单独的角色:
●中央(主机):重复扫描预设的BLE频率以查找可连接的广告数据包,并在适当时启动连接。 建立连接后,中央管理定时并启动定期数据交换。
●外围设备(从属设备):一种设备,该设备定期发送可连接的广告包并接受传入的连接。 一旦建立活动连接,外围设备就会按照中心的时间进行定时并与之定期交换数据。
蓝牙规范明确区分了协议和配置文件的概念。 进行这种区分是由于每个概念服务的目的不同,并且总体规范分为:
●协议:它们是所有符合Bluetooth规范的设备使用的构造块; 协议本质上构成了实现不同数据包格式,路由,多路复用,编码和解码的层,从而允许在配对设备之间有效地发送数据。
●配置文件:是垂直功能的切片,定义了所有设备所需的基本操作模式(例如通用访问配置文件和通用属性配置文件)或特定用例(邻近配置文件,葡萄糖配置文件); 配置文件实质上指定了应如何使用协议来实现特定目标,无论是通用的还是特定的。
通用配置文件由蓝牙规范定义,其中两个是基础,因为它们可确保来自不同供应商的BLE设备之间的互操作性:
从架构的角度来看,类似于所有蓝牙设备,单模BLE设备分为三个部分:控制器,主机和应用程序。 每个基本构建模块都由几层组成,这些层使设备可操作,并紧密集成在所谓的协议栈中,如图2所示:
控制器包括BLE设备进行通信所需的所有较低级别的功能; 它由物理层(PHY),链路层(LL)和主机控制器接口(HCI)的控制器端组成。
在物理层(PHY)中,核心是1 Mbps自适应跳频高斯频移键控(GFSK)无线电,该无线电工作在未经许可的2.4 GHz工业、科学和医学(ISM)频段。
LL执行的许多计算在成本上都是昂贵的,因此通常在硬件中实现自动化功能,以避免使运行堆栈中所有软件层的中央处理器(CPU)过载,因此LL的实现是通过自定义组合实现的LL提供的功能通常包括前同步码,访问地址和空中协议成帧,CRC生成和验证,数据白化,随机数生成和AES加密,并且通常与协议栈的较高层保持隔离。隐藏这种复杂性及其实时要求的界面。
LL原则上控制设备的射频(RF)状态,并管理设备的连接方式,即设备与其他设备的连接方式。 BLE设备可以是主设备,从设备或两者,具体取决于用例和相应的要求。一个主节点可以连接到多个从节点,而一个从节点可以连接到多个主节点。通常,智能手机或平板电脑往往会充当主设备,而更小、更简单且受内存限制的设备(例如独立传感器)会充当从设备。设备只能处于以下五个状态之一:待机,通告,扫描,启动或连接,如图3所示:
图3:链路层状态
链路层定义了4种角色:
●Advertiser:发送广告包的设备。
●Scanner:扫描广告数据包的设备。
●Master:启动连接并在以后进行管理的设备。
●Slave:接受连接请求并遵循主机时序的设备。
从逻辑上讲,这些角色可以分为两对:Advertiser和Scanner(不在活动连接中时),
Master和Slave(在连接中时)。
控制器侧的主机控制器接口(HCI)接口提供了通过标准化接口与主机进行通信的方式; 蓝牙规范将HCI定义为主机和控制器相互交互的一组命令和事件,以及数据包格式以及流控制和其他过程的一组规则。 此外,规范还定义了几种传输方式,每种传输方式都针对特定的物理传输方式(UART,USB,SDIO等)增强了HCI协议。
主机模块由一组层组成,每个层具有特定的角色和功能,这些层的协作使整个模块可操作。 如图2所示,这些层是逻辑链路控制和适配协议(L2CAP),属性协议(ATT),安全管理器(SM),最后是通用属性配置文件(GATT)和通用访问配置文件(GAP)。
主机端的HCI接口提供了通过标准化接口与控制器通信的方式。与控制器端HCI相似,该层可以通过软件API或通过UART或SPI等硬件接口来实现。
逻辑链路控制和适配协议(L2CAP)层向上层提供数据封装服务,从而允许使用数据传输进行逻辑端到端通信。从本质上讲,它充当协议多路复用器,该协议多路复用器从上层获取多个协议,并将其封装为标准BLE数据包格式,反之亦然。 L2CAP还负责封装的分段和重组。在此过程中,源自发送方上层的大数据包将装入BLE数据包的最大27字节有效负载大小。反向过程发生在接收端,在此,分段的较大的上层数据包由多个较小的BLE数据包重新组合,并向适当的上层实体向上游传输。
L2CAP层负责路由两个主要协议:属性协议(ATT)和安全管理器协议(SMP)。
此外,L2CAP可以创建自己的用户定义的通道来进行高通量数据传输,这一功能称为基于LE信用的流量控制模式。
ATT层使BLE设备可以将某些数据(称为属性)提供给另一个BLE设备。 在ATT的上下文中,公开属性的设备称为服务器,而对这些属性感兴趣并使用它们的对等设备称为客户端。 设备的链路层状态(主设备或从设备)独立于设备的ATT角色。 例如,主设备可以是ATT服务器或ATT客户端,而从设备也可以是ATT服务器或ATT客户端。 设备也可能同时是ATT服务器和ATT客户端。
本质上,ATT是基于设备提供的属性的简单客户端/服务器无状态协议。客户端从服务器请求数据,服务器将数据发送到客户端。该协议是严格的,意味着在未决请求的情况下(即尚未收到针对已发出请求的响应),在接收到响应并进行处理之前,无法提交其他请求。在两个对等方同时充当客户端和服务器的情况下,这独立地适用于两个方向。
每个ATT服务都包含以属性形式组织的数据,每个属性都分配有一个16位的属性句柄,称为通用唯一标识符(UUID),一组权限以及最后一个值。
实际上,属性句柄仅仅是用于访问属性值的标识符。 UUID指定值中包含的数据的类型和性质。当客户端想要从服务读取属性值或向服务写入属性值时,客户端会使用属性句柄向服务器发出读取或写入请求。服务器将使用属性值或确认进行响应。在读取操作的情况下,由客户端根据属性的UUID解析值并了解数据类型。另一方面,在写操作期间,期望客户端提供以下数据:与属性类型一致的服务,如果不是这种情况,则服务器可以自由拒绝该操作。
安全管理器(SM)层定义了配对和密钥分发的手段,并为协议栈的其他层提供了功能,以安全地连接和交换与另一个BLE设备的数据。它包括一个协议和一系列安全算法,旨在为BLE协议栈提供生成和交换安全密钥的能力,以允许对等方通过加密链路安全地通信,以信任远程设备的身份。 如果需要可以隐藏公共蓝牙地址。
与所有其他类型的系统一样,应用程序位于最高层,并且负责包含与该应用程序实现的实际用例相关的所有内容的逻辑,用户界面和数据处理。 应用程序的体系结构高度依赖于每个特定的实现,并且在BLE中,它通常使用BLE配置文件提供的功能。