专栏首页摸鱼范式【二】Bluetooth 技术||协议栈架构与物理层设计 (Core_v5.2)

【二】Bluetooth 技术||协议栈架构与物理层设计 (Core_v5.2)

不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我

欢迎大家加入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 协议介绍蓝牙技术。

一、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 状态机与数据报文结构见下一篇文章

更多文章

  • 《Bluetooth Core Specification_v5.2》[2]
  • 《BLE技术揭秘》[3]
  • 《蓝牙协议分析》[4]

参考资料

[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

本文分享自微信公众号 - 摸鱼范式(icparadigm)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【涂鸦物联网足迹】物联网常见通信协议

    一种因其支持 TCP/IP,可以直接接入物联网,如 Wi-Fi、GPRS/3G/4G 等;

    涂小航说智能
  • 【四】Bluetooth 技术||链路层五种通信模式和空口协议设计 (Core_v5.2)

    前篇博文LE States and Packets[1] 已经介绍了LE 设备在不同通信模式下承担不同的角色,为了方便管理蓝牙设备在多个角色间的切换,链路层使用...

    空白的贝塔
  • 蓝牙协议分析(1)_基本概念

    自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到Bluetooth V4.0(最新的为V4.1,2013年底...

    233333
  • 蓝牙协议分析(2)_协议架构

    本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。

    233333
  • 带你解锁蓝牙skill(0)

    蓝牙系列文章之前言篇 0.0 一直以为自己对蓝牙很是了解,但前段时间跟一个很熟悉蓝牙的人进行交谈,才发现自己对蓝牙的学习太浅,所写的只是蓝牙最上层的东西而已,甚...

    fanfan
  • 物联网常见通信协议梳理

    本文将对常用的通信协议进行剖析,重点面向市场上使用率较高的,且又不是诸如TCP/IP之类老生常谈 的。

    木禾wen
  • 通信协议详解

    传统意义上的“通讯”主要指电话、电报、电传。通讯的“讯”指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端。媒体讯息的内容主要是话音、文字、图片...

    PM吃瓜
  • 物联网通信协议和标准相关的术语表

    06.26.19-Introduction-to-IoT-Standards-and-Protocols.jpg

    用户4122690
  • BT、BLE、MESH关联和区别简介

    大家在IoT平台上创建产品时,在通讯协议中会看到蓝牙(Bluetooth,或简写BT)、BLE、MESH(SIG)的字样,这几个名称分别代表什么,有什么关联和差...

    涂小航说智能
  • BLE低功耗蓝牙与经典蓝牙(持续更新)

    BLE设备分单模和双模两种,双模简称BR,商标为Bluetooth Smart Ready,单模简称BLE或者LE,商标为Bluetooth Smart。低功耗...

    紫兮木溪
  • 蓝牙技术的前世今生

    世界是蓝色的,而不知不觉这个世界将有 40 亿蓝牙设备了。这篇文章,我们将带你一起回顾蓝牙 1.0 到 5.0 的技术变迁,从音频传输、图文传输、视频传输,再到...

    鲜枣课堂
  • 常用物联网应用协议汇总

    本文罗列下市面上物联网通信中的各类消息技术-即工作在网络通信的应用层协议,总结下它们各自特点、特定的物联网应用场景等。 这类协议都直接用于在无线或有线网络环境下...

    CSDN技术头条
  • ibeacon蓝牙技术简介

    概述 在讲解ibeacon技术之前,我们首先来看一下蓝牙实际到现在经历了哪些发展。截止目前,蓝牙共有八个版本 V1.0/1.1/1.2/2.0/2.1/3.0/...

    xiangzhihong
  • 【持续更新中】物联网(NB-IOT/LoRa/RFID/NFC/5G)的架构,协议及应用入门汇集

    本文作为一个对物联网感兴趣的爱好者的一些收集信息,包括物联网的架构,协议及应用入门,涉及NB-IOT,LoRa,MQTT,NFC,RF-ID,5G等技术,并持续...

    辉哥
  • 深入浅出低功耗蓝牙(BLE)协议栈

    一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的...

    FB客服
  • 蓝牙BLE技术

    蓝牙低功耗无线电的调制速率由规范规定为恒定的1Mbps(兆比特每秒)。当然,这是理论上的上限。在实践中,根据所使用设备的限制,您可以期望每秒5- 10kb。就距...

    心跳包
  • 如约而至|2018年5月期技术雷达正式发布!

    ThoughtWorks每年都会出品两期技术雷达,这是一份关于技术趋势的报告,由 ThoughtWorks 技术战略委员会(TAB)经由多番正式讨论给出,它以独...

    ThoughtWorks
  • CCS 2019论文解读:基于自动化App分析的BLE设备指纹识别

    低功耗蓝牙(BLE,Bluetooth Low Energy)是一种成本低廉的低功耗无线解决方案,在物联网设备中得到了广泛的应用。在一个典型IoT场景中,用户需...

    绿盟科技研究通讯
  • NR-3GPP协议清单汇总

    3GPP TS 38.101-1 UE无线发送与接收:FR1-Standalone

    用户6184845

扫码关注云+社区

领取腾讯云代金券