从应届生开始做ble开发也差不读四个月的时间了,一直在在做上层的应用,对蓝牙协议栈没有过多的时间去了解,对整体的大方向概念一直是模糊的状态,在开发时也因此遇到了许多问题,趁有空去收集了一下资料来完成了本次专栏,来增加自己对ble大框架的了解,当然,也仅仅是对协议栈做一个大概的介绍,太复杂细节的东西还需要自己未来去悟了。
0. 协议栈总体介绍
如下图,ble协议栈大体可以主要分为host和controller两个层次,其中
- 主机层(Host)位于BLE协议栈的上层,通常运行在主机设备上,如智能手机、电脑或其他嵌入式系统。它提供与应用层和用户接口的交互,并处理高层协议的逻辑,如GAP(Generic Access Profile)和GATT(Generic Attribute Profile)。主机层负责管理BLE设备的连接、数据传输、设备发现、安全性等。
- 控制器层(Controller)位于BLE协议栈的下层,通常是嵌入在BLE芯片中的硬件模块。控制器层负责处理与无线传输相关的物理层和链路层细节,如频率管理、调制解调、数据包解析等。它与主机层之间通过主机控制器接口(Host Controller Interface,HCI)进行通信。
- 主机层和控制器层之间的分界主要是基于功能和实现的考虑。主机层关注的是高层的协议逻辑和应用接口,而控制器层则负责处理底层的物理层和链路层操作。通过将主机层和控制器层分离,可以实现模块化的设计和开发,使得主机和控制器可以独立进行优化和升级。
- 主机层和控制器层之间的通信是通过主机控制器接口(HCI)实现的。HCI定义了主机层与控制器层之间的命令和事件传输的格式和协议。主机通过HCI发送命令给控制器,控制器执行相应的操作,并通过HCI向主机发送事件和数据。
但我们又可以看到host和controller又可以细分为多个层次,其中
- 物理层(Physical Layer):物理层是BLE协议栈的最底层,负责处理与无线传输相关的物理层面的细节。它定义了无线通信的频率、调制方式、传输速率以及功耗管理等。物理层的主要作用是将数字数据转换为无线信号,并实现与硬件设备的接口。
- 链路层(Link Layer):链路层位于协议栈的第二层,负责建立和管理BLE连接,并提供数据传输的可靠性和安全性。它定义了BLE的数据包格式、连接管理、错误检测与纠正等功能。链路层还处理BLE设备之间的广播和扫描过程。
- 主机控制器层(Host Controller Layer):主机控制器层位于协议栈的第三层,负责与物理层和链路层进行交互,并提供对上层协议的接口。它在主机(如智能手机、电脑)和BLE设备之间充当中间层,处理命令和数据的传输、设备发现、连接管理以及安全性等。
- 逻辑链路控制器层(Logical Link Control and Adaptation Protocol Layer,L2CAP):逻辑链路控制器层位于协议栈的第四层,提供数据通信的逻辑通道。它负责分段和重组数据包,并处理数据流控制、流量管理和服务质量(QoS)等功能。L2CAP层还支持多个上层协议,如Attribute Protocol(ATT)和Security Manager Protocol(SMP)。
- 属性协议(Attribute Protocol):属性协议是BLE协议栈中的一个子协议,用于定义BLE设备之间的数据交换格式和规范。它支持设备之间的读取、写入和通知等操作,用于实现BLE设备之间的数据传输和交互。
- 安全管理协议(Security Manager Protocol,SMP):SMP负责处理BLE连接的安全性。它定义了BLE设备之间的配对、加密和认证过程,以确保通信的安全性和隐私性。
本专栏是对每个层相关内容的讲解。
1. 物理层(Physical Layer)简介
物理层(Physical Layer)是BLE协议栈最底层,它规定了BLE通信的基础射频参数,包括信号频率、调制方案等。BLE工作频率是2.4GHz,它使用GFSK频率调制,并使用跳频机制来解决频道拥挤问题。
BLE 5的物理层有三种实现方案,分别是1M Sym/s的无编码物理层、2M Sym/s的无编码物理层和1M Sym/s的编码物理层。其中1M Sym/s的无编码物理层与BLE v4系列协议的物理层兼容,另外两种物理层则分别扩展了通信速率和通信距离。
2. 频段和跳频
大多数无线通信的频段需要申请授权才可以使用,不同地区开辟了少量免授权频段,只要产品满足当地无线电规范,即可免授权使用。下图展示了全球免授权的频段及其分布
从上图可以发现:
- 图中2.4GHz的频段很强势,覆盖了整个地图,是专为工业(Industrial)、科学(Scientific)和医学(Medical)三个机构使用,称为ISM频段。全球范围都可以免授权使用ISM频段。BLE即工作在2.4GHz频段。
- 2.4GHz频段信号有明显的优缺点,优点是免费、技术成熟,缺点是频段拥挤、信号传播特性差、遇水衰减。目前除了蓝牙信号外,WIFI、ZigBee、无线键盘、无线玩具甚至微波炉都工作在这个频段,当一个空间内同时运行着多个无线设备时,频带占用情况如下图
其中绿色的脉冲为BLE信号,红色信号分别是WIFI、微波炉和无线设备,它们形成了干扰噪声。
BLE工作在2.400GHz – 2.480GHz频率区间,并将这个区间均匀分为40个频道,相邻频道间隔2MHz。在不引起误解的情况下,频道也称为信道,40个信道的频率和分布如下图:
3. 调制
3.1 调制方式
物理层定义了两种调制方式。
一种方案采用高斯频移键控GFSK,具有1MSym/s的符号速率。第二种方式是与第一种相似(Similar),但是具有2MSym/s的符号速率。
第一种方式又分成两种类型:
- LE 1M Uncoded PHY。该方式的比特率为1Mb/s,它是BLE v4版本协议保持兼容。
- LE 1M Coded PHY。该方式对报文进行编码,使接收端收到的报文具有前向纠正的能力,在相同误码率条件下,能够显著降低误码重传次数,从而提高通信速率。 如果采用8符号编码,比特率为125kb/s,如果采用2符号编码,比特率为500kb/s。
LE 1M Uncoded PHY是BLE协议强制要求实现的物理层,而LE 1M Coded PHY则是可选方案。
这两种实现方式符号速率都是1MSym/s。
符号速率中的“符号”是指单次采样所得到的信息,这个信息可能包含多个比特,也可能多个信息等效于一个比特。比如一个电压幅度调制系统中,用+5V表示11b, +2V表示10b, -2V表示01b, -5V表示00b,那么采样一次电压可以获得两个比特信息,此时比特率是符号速率的两倍。在LE 1M Coded PHY机制中,用8个符号表示1个比特,此时比特率是符号速率的1/8。
第二种物理层实现方式为:
- LE 2M Uncoded PHY。该方案的比特率为2Mb/s,是可选的实现方式。
官方文档使用LE 1M PHY、LE Coded PHY、LE 2M PHY来表示以上三种不同的物理层实现方式:
物理层 | 调制方式 | 编码方案 (报头部分) | 编码方案 (有效载荷) | 比特率 |
---|---|---|---|---|
LE 1M PHY | 1Msym/s 方式 | 无编码 | 无编码 | 1Mb/s |
LE 2M PHY | 2Msym/s 方式 | 无编码 | 无编码 | 2Mb/s |
LE Coded PHY | 1Msym/s 方式 | 编码S=8 | 编码S=8;编码S=2 | 125kb/s;500kb/s |
表中的S=8表示8个符号编码成1个比特。
3.2 GFSK
频率调制是将低频数据信号加载到高频载波上,数据的变化反映为调制波频率的疏密变化,如下图所示:
数字化的信号仅有0、1变化,在调制时,可以定义载波频率正向偏移视为1,负向偏移视为0。这种调制方式称为“频移键控(FSK)”。数字信号发生0/1变换时,会产生大量噪声,引入高斯滤波器能够延展0/1变换时间,从而降低噪声。这种做法称为“高斯频移键控(GFSK)”。
GFSK技术成熟,实现简单,适合低功耗BLE的需求。
BLE协议规定,中心频率正向偏移大于等于185kHz视为比特1, 负向偏移大于等于185kHz视为比特0。如果选择2402MHz作为中心频率,比特1的频率应为2402.185MHz, 比特0的频率应为2401.815MHz。
星闪技术调制
插一个题外话。我们也可以对比一下最近很火的星闪技术使用的调制OFDM技术:OFDM使用正交子载波来传输数据。将数据分成多个低速子载波,这些子载波之间正交(垂直),以避免干扰。每个子载波可以使用不同的调制方式,例如QPSK、16-QAM或64-QAM。
相较于GFSK,OFDM有以下优点:
- 频谱效率高:OFDM能够将频谱划分为多个子载波,每个子载波可以以较高的符号速率传输数据。这种频域划分和高速传输使得OFDM能够实现高频谱效率,充分利用可用的频带资源。
- 抗多径衰落:OFDM对多径衰落(信号在传播路径上经历多个反射和折射)具有较好的抗干扰性能。由于OFDM将数据分散在多个子载波上,即使某些子载波受到多径干扰,其他子载波仍然可以正常工作,从而减少了信号质量的下降。
- 高容量支持:OFDM可以在不同的子载波上使用不同的调制方式,例如QPSK、16-QAM或64-QAM,以适应不同的信道条件和要求。这使得OFDM能够支持高容量的数据传输,满足现代高速通信的需求。