BLE 技术(二)--- 协议栈架构与物理层设计 (Core_v5.2)

前言

前篇博文Bluetooth 协议栈设计与演进已经分别介绍了蓝牙协议的四大应用场景及对应的技术解决方案,为满足物联网设备的需求,蓝牙协议新增了室内精准定位技术、基于MESH 的大规模自组网技术和基于6LoWPAN 的IPv6 组网技术,逐渐在物联网无线技术中占稳短距离低速率无线通信的生态位,未来前景可期。
Bluetooth 5.2 协议架构
蓝牙技术联盟SIG 已经将重心放到BLE 低功耗协议上,为满足物联网设备需求新推出的技术方案也都是基于BLE 协议的,随着LE Audio 技术的发布,蓝牙设备的主要应用场景都可以在BLE 协议上承载,而不再依赖于BR/EDR 协议。由于BR/EDR 协议即将迟暮,且与LE 协议是相对独立的,二者并没有继承关系,后续将基于BLE 协议介绍蓝牙技术。

一、BLE System Architecture

对照上面的Bluetooth 协议结构图,屏蔽掉左边的BR/EDR Controller和右边的AMP Controller,只保留中间的LE Controller,将LE Controller 抽象为Physical Layer 和Logic Link Layer 两个层级(如果要进行LE Audio 开发,需要突出 Isochronous Adaptation Layer,本文就将其折叠进抽象的Link Layer了)。

LE Controller 与Host 之间有一个HCI 主机控制器接口层,该层定义了Host 与Controller 之间的通信接口规范。最早蓝牙是跟随手机发展的,蓝牙模块和手机处理器芯片都是一个独立的芯片,而且各自都有很多种,为了保证蓝牙模块与CPU 芯片之间通信的兼容性,SIG 就定义了一套统一的通信接口规范HCI,只要符合HCI 标准,不同的CPU 芯片与不同的蓝牙Controller 模块之间就能顺畅的通过HCI over UART/USB 接口完成通信(下图中间的方案,比如 CPU 芯片常采用Bluez 来实现Host 功能)。在低功耗低成本的物联网设备中,通常把Host 与Controller 放到同一个Soc 芯片上,这时物理的HCI 就没有存在的必要了,Host 与Controller 之间直接通过API 来交互(下图左边的方案,比如Nordic的蓝牙协议栈Softdevice 实现了整个蓝牙协议栈的功能)。下图右边的方案需要使用蓝牙芯片供应商提供的专有通信协议,通用性和兼容性受限。
蓝牙协议栈方案

Host 部分直接与Controller Link Layer 通信的是L2CAP (Logical Link Control and Adaptation Protocol) Layer,像音频这种ISO 数据流不经过L2CAP 处理,直接与ISO Adaptation Layer 通信更高效。BLE 协议的GATT 已经将所有服务信息都放到ATT 中了,因此不再需要单独的SDP 服务发现协议。Host 上面的应用层就是各种Profiles 服务了,BLE 协议架构图示如下(Core_V5.2 为LE Audio 服务新增了等时同步信道,没有在下图显式展示):
BLE 协议栈结构
BLE 协议栈各层功能描述如下:

  • Physical Layer(PHY):指定BLE 所用的无线频段(ISM 频段被分成40个channel,每个channel 占用2M Hz频宽,比特速率可支持到 2 Mbps,40个信道分为 3 个广播信道和37 个数据信道,为避开同频干扰采用跳频技术切换信道)、调制解调方式(BLE 采用GFSK 高斯频移键控调制)、射频性能(比如发射功率、接收灵敏度)等;
  • Link Layer(LL):该层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者ATT;
  • Host Controller Interface(HCI) :定义Host 与Controller 模块之间的通信接口规范,HCI 主要用于Host 模块与Controller 模块分别在2 颗芯片上实现BLE协议栈的场合,用来规范两者之间的通信协议和通信命令等;
  • L2CAP(Logic link control and adaptation protocol):对Link Layer 进行了简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。同时为上层应用提供多路复用、分片重组、流量控制等机制,有点类似TCP 协议Port 的概念;
  • SMP(Security Manage Protocol) :用于管理BLE 连接通信的加密、认证和安全,比如密钥生成、信息加密、数字签名、认证鉴权、安全配对等,类似于TLS/SSL 协议的功能;
  • ATT(Attribute Protocol):“Attribute”是被编址并打上标签的一小块数据,属性协议提供一些方法供对端设备读取、修改这些属性的值(Attribute value),每个属性由四个元素构成:Attribute Handle用来唯一标识该属性、Attribute Type(UUID)用来标识存储数据的类型、Attribute Value用来存储数据的值、Attribute Permissions用来定义属性的访问权限(比如一个属性值为“25” 、属性类型为“℃”的数据,可能放在句柄标识为0x01DE 的属性中,客户端对该属性有只读权限);
  • GATT(Generic Attribute Profile):引入了“Characteristic”、“Service”、服务之间的“Include”关系、特性的“Descriptor”等概念,还定义了一些规范用来发现服务、特性、服务之间的关系,并读取、修改这些特性值。Profile 可以看作一种应用规范或者一组相关服务的集合,BLE 是面向服务的模块化设计,每个服务封装一组相关的“Attribute”及其访问方法(可以把每个“Service”类比为面向对象编程中的“class”,两者都是对一组元素据及其操作方法的封装,且都尽量封装为可重用的);
  • GAP(Generic Access Profile) :定义了设备如何发现其它设备、连接到其它设备、读取其它设备的信息并和它们进行绑定的相关Profile,以及设备如何实现可发现、可连接、可绑定的相关Profile;
  • Profiles :根据业务需求提供的一个个应用服务,比如血压、心率、温度、电量、接近检测和HID人机交互设备等,每个Profile 包含一个或多个Service(BLE 采用Client/Server架构,Server 实现并对外提供相应的应用服务,Client 可以发现并访问相应的服务数据);

BLE 引入的一些新概念,比如Profile、Service、Characteristic、Descriptor、Attribute 之间的关系如下图所示(右图每一行对应一个Attribute,四列分别对应每个Attribute 的四个元素):
Profile/Service/Characteristic/Attribute之间的关系

二、LE Physical Layer

BLE 低功耗蓝牙使用2.4 GHz ISM(Industrial Scientific Medical) 频段传输信息,这个频段是唯一一个在所有国家都无需授权的频段,Wi-Fi、Bluetooth、Zigbee 等无线局域网协议都选择该频段进行通信。ISM 2.4 GHz 频段范围是2400 – 2483.5 MHz,BLE 使用的频率范围是2402 - 2480 MHz,BLE 低频与高频部分与ISM 2.4 GHz 频段边界分别保留2 MHz 和3.5 MHz 的间隙。

BLE 频段共分为40个信道,每个信道的频宽为2 MHz,其中37、38、39三个信道为广播信道(频率选择刻意避开了Wi-Fi 最常用的1、6、11三个信道以减少干扰),剩余37个信道为数据信道(为提高广播能力,Bluetooth 5.0 新增了扩展广播功能,也即将数据信道作为第二广播信道使用),信道分布如下图示:
BLE 物理广播信道与数据信道频率分配
BLE 选择的 ISM 频段虽然免授权,但也意味着面临严重的同频干扰(Wi-Fi、Zigbee等无线局域网技术都使用该频段),为了增强抗干扰性能,ISM 为BLE 做了如下设计:

  • 广播信道频点的选择避开了Wi-Fi 常用的信道,同时三个固定广播信道之间频率至少相差24 MHz,避免因为某个频段受干扰严重而影响所有广播信道通信;
  • 采用跳频技术在多个数据信道间有规律的切换,比如跳频算法 fn+1 = (fn + hop) mod 37 其中hop 是一个 5 – 16 范围内的值,当检测到到在某数据信道通信受影响时,按调频算法切换到下一个信道继续通信,由于跳频算法切换的前后信道并不连续,可以避开某频段集中干扰;
  • 采用自适应跳频技术避开受干扰的信道,当检测到受干扰信道时会将其标记为坏信道,并将已知坏信道映射到已知好信道,降低跳频算法跳到坏信道的概率,从而减少对数据信道通信的干扰;
  • GFSK 频移键控有个缺点,接收连续相同比特的能力比较差,如果遇到全0 或全 1 的比特序列,接收机会认为发射机频率偏移了,为了避免该问题,BLE 使用了“白化器”来随机化要发送的数据,接收端也使用“白化器”恢复原数据,避免传输连续相同的比特序列。

BLE 采用GFSK(Gauss frequency Shift Keying) 高斯频移键控对传输数据进行调制,前面介绍的信道频率都是指中心频率,相对中心频率负频偏的代表bit 0,相对中心频率正频偏的代表bit 1,BLE 4.x 的调制比特率为 1 Mbps,Bluetooth 5.x 版本又新增了 2 Mbps 可选项,为支持LE Audio 音频传输打下基础。FSK 频移键控中的最小频偏随调制比特率提升而增大,调制比特率为1 Mbps 时的最小频偏约为 185 KHz,调制比特率为2 Mbps 时的最小频偏约为 370 KHz。
BLE使用的GFSK 调制技术
BLE 侧重于低功耗,如何实现低功耗呢?功耗跟数据的传输速率、传输时间、发射功率、调制效率等因素正相关,要想降低功耗,可以从降低传输速率、减少传输时间、降低非传输时间的待机功耗、降低传输时的发射功率、提高调制效率等方面着手,BLE 也正是依靠长时间深度睡眠、周期性唤醒并传输数据实现大幅降低平均功耗、延长续航时间的。BLE 规定的最大发射功率为 +20 dBm,最小发射功率为 -20 dBm,分为四个功率等级,根据业务对传输速率和功耗的需求选择相应的功率等级。

BLE 要顺利解调出有效信号,对接收到的最小信号也有规定,BLE 针对不同的调制方法规定的接收灵敏度上限也不相同。在功耗不变的情况下,信号传输速率与传输距离呈负相关,也即信号传输速率越高对应的最小解调信号强度越大(接收灵敏度上限越大),想增大传输距离可以使用传输速率更低的调制技术实现(接收灵敏度上限越小)。电磁波在空气中传播是存在路径损耗的,BLE 在空气中传播允许的最大损耗功率 = 发射功率 - 接收灵敏度,对照BLE 频段电磁波的路径损耗与距离关系曲线就可以获知BLE 正常通信允许的最大距离,比如Bluetooth 5.0 宣称LE Coded PHY with S=8(每个数据位由 8 个符号表示)调制方式的传输距离可以达到LE Uncoded 1M PHY 的 4 倍。
LE Tx Power / Rx Sensitivity / Path loss 关系
LE Link Layer 状态机与数据报文结构见下一篇博文:LE Link Layer States + Air Interface Packets(Core_v5.2)

更多文章:

猜你喜欢

转载自blog.csdn.net/m0_37621078/article/details/107411324