不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我
欢迎大家加入2022届数字IC交流群,QQ群号 1060380138
版权声明:本文为CSDN博主「流云IoT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_37621078/article/details/117399744
前篇博文Bluetooth 协议栈设计与演进[1]已经分别介绍了蓝牙协议的四大应用场景及对应的技术解决方案,为满足物联网设备的需求,蓝牙协议新增了室内精准定位技术、基于MESH 的大规模自组网技术和基于6LoWPAN 的IPv6 组网技术,逐渐在物联网无线技术中占稳短距离低速率无线通信的生态位,未来前景可期。
Bluetooth 5.2 协议架构
蓝牙技术联盟SIG 已经将重心放到BLE 低功耗协议上,为满足物联网设备需求新推出的技术方案也都是基于BLE 协议的,随着LE Audio 技术的发布,蓝牙设备的主要应用场景都可以在BLE 协议上承载,而不再依赖于BR/EDR 协议。由于BR/EDR 协议即将迟暮,且与LE 协议是相对独立的,二者并没有继承关系,后续将基于BLE 协议介绍蓝牙技术。
对照上面的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 协议栈各层功能描述如下:
BLE 引入的一些新概念,比如Profile、Service、Characteristic、Descriptor、Attribute 之间的关系如下图所示(右图每一行对应一个Attribute,四列分别对应每个Attribute 的四个元素):
Profile/Service/Characteristic/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 的间隙。
BLE 频段共分为40个信道,每个信道的频宽为2 MHz,其中37、38、39三个信道为广播信道(频率选择刻意避开了Wi-Fi 最常用的1、6、11三个信道以减少干扰),剩余37个信道为数据信道(为提高广播能力,Bluetooth 5.0 新增了扩展广播功能,也即将数据信道作为第二广播信道使用),信道分布如下图示:
BLE 物理广播信道与数据信道频率分配
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使用的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 状态机与数据报文结构见下一篇文章
[1]
Bluetooth 协议栈设计与演进: https://blog.csdn.net/m0_37621078/article/details/106995704
[2]
《Bluetooth Core Specification_v5.2》: https://www.bluetooth.com/specifications/bluetooth-core-specification/
[3]
《BLE技术揭秘》: http://doc.iotxx.com/BLE技术揭秘
[4]
《蓝牙协议分析》: http://www.wowotech.net/sort/bluetooth
END