前篇博文Bluetooth 协议栈设计与演进已经分别介绍了蓝牙协议的四大应用场景及对应的技术解决方案,为知足物联网设备的需求,蓝牙协议新增了室内精准定位技术、基于MESH 的大规模自组网技术和基于6LoWPAN 的IPv6 组网技术,逐渐在物联网无线技术中占稳短距离低速率无线通讯的生态位,将来前景可期。
蓝牙技术联盟SIG 已经将重心放到BLE 低功耗协议上,为知足物联网设备需求新推出的技术方案也都是基于BLE 协议的,随着LE Audio 技术的发布,蓝牙设备的主要应用场景均可以在BLE 协议上承载,而再也不依赖于BR/EDR 协议。因为BR/EDR 协议即将迟暮,且与LE 协议是相对独立的,两者并无继承关系,后续将基于BLE 协议介绍蓝牙技术。web
对照上面的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 引入的一些新概念,好比Profile、Service、Characteristic、Descriptor、Attribute 之间的关系以下图所示(右图每一行对应一个Attribute,四列分别对应每一个Attribute 的四个元素):
架构
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 选择的 ISM 频段虽然免受权,但也意味着面临严重的同频干扰(Wi-Fi、Zigbee等无线局域网技术都使用该频段),为了加强抗干扰性能,ISM 为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 侧重于低功耗,如何实现低功耗呢?功耗跟数据的传输速率、传输时间、发射功率、调制效率等因素正相关,要想下降功耗,能够从下降传输速率、减小传输时间、下降非传输时间的待机功耗、下降传输时的发射功率、提升调制效率等方面着手,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 Link Layer 状态机与数据报文结构见下一篇博文:LE Link Layer States + Air Interface Packets(Core_v5.2)。加密