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

前言

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

1、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之间的关系架构

2、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 的间隙。svg

BLE 频段共分为40个信道,每一个信道的频宽为2 MHz,其中3七、3八、39三个信道为广播信道(频率选择刻意避开了Wi-Fi 最经常使用的一、六、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)加密

更多文章: