低功耗蓝牙BLE的通信可靠性分析

无线通信属于不能100%成功的通信方式,低功耗蓝牙BLE通信可靠性会受到如下因素的影响:

影响BLE通信可靠性因素

传输信道冲突

如上图,设备A和设备B同一时间错开在不同通道上传输数据不会发生冲突,但它们同一时间在信道2上传输数据,则会发生冲突。

多径效应和时间弥散

蓝牙WIFI等无线电信号与光一样,可以被表面反射或者在通过物体时被折射。在通信系统中,会导致一个信号从不同方向多次到达接收器,这被称为多路径传播。

多路径传播的一个后果是,采取不同路径的信号副本可能会在略微不同的时间到达接收器,这种现象称为时间弥散。时间弥散会造成符号间干扰(Inter-Symbol Interference, ISI)

发射方和接收器的同步

如上图所示,蓝牙设备中使用的无线电类型是半双工无线电(half-duplex radio),这意味着两个设备可以在每个方向上相互通信,但不能同时进行通信。先由一个无线电发射,另一个无线电接收;然后由另一个无线电发射,前一个无线电接收。这种类型的无线电在任何时间点上都可以处于以下三种状态之一:

  1. 在给定的无线电通道上发射
  2. 在收听某个通道
  3. 处于闲置状态。

如果当另一个范围内设备在传输数据时,接收设备没有监听或者没有在发射器使用的通道上监听,则无

法接收到传输的数据。设备用于监听传输的时间百分比称为接收占空比(RX duty cycle)。接收占空比越高,接收器在发射器发送数据时进行监听的可能性就越高。当两个设备没有同步发送/接收时间时,这一点尤为重要。

上图描述的是涉及两个设备的情况。设备A正在周期性地传输数据。设备B正在周期性地扫描(监听)传输,但其扫描时间段的安排与设备A的传输时间不同步。因此,设备B在设备A传输数据包的整个时间内扫描了一些时间,所以能够完整地接收数据包。有时则不然,导致设备A传输的数据包会丢失。请注意,设备B的扫描时间约为该时间的四分之三。因此其接收占空比约为75%。

信号强度和接收器灵敏度

  • 由接收设备测量的信号强度称为接收信号强度指标(Received Signal Strength Indicator, RSSI)。信号强度会对可靠性产生多方面的影响。
  • 强传输信号会使无线电接收器饱和,在试图解码接收信号时可能会产生错误。
  • 信号越弱,其水平就越接近任何背景噪声的水平。这里的噪声是指由自然产生的和人为电磁辐射引起的多余无线电信号。信号强度与背景噪声水平之间的关系称为信噪比(signal to noise ratio)。当信噪比降低时,很难准确无误地解码传输信号中包含的信息。尝试对接收到的模拟符号进行解码,以产生相应数位的失败率称为误码率(Bit Error Rate, BER)。当误码率足够高时,通信完全失效。
  • 根据香农定理,接收器距离发射器越远,接收信号强度指标就越低,因此信噪比越低,出现错误的可能性就越大。信号强度随发射器距离的增加而降低称为路径损耗。
  • 蓝牙核心规格规定,在信号强度为-70 dBm时,接收器的误码率不能超过0.1%。这被称为接收器灵敏度。接收器灵敏度是衡量蓝牙芯片的一个重要指标,如下是BES某款芯片的接受灵敏度参数:
    Up to 96 MHz STAR-MC1 for the Bluetooth host
     Dual-mode BT 5.3 with LE audio
     Support multipoint connectivity
     Bluetooth transmit power:
    − BDR: up to 15 dBm
    − EDR: up to 13 dBm
    − BLE: up to 16 dBm
     Bluetooth receiver sensitivity:
    − BDR: -97 dBm
    − EDR: -96 dBm (π/4 DQPSK)
    − EDR: -90 dBm (8DPSK)
    − BLE: -101 dBm

蓝牙BLE传输物理层

首先看一下BLE数据传输物理层的包结构:

前导码:

所有低功耗蓝牙数据包中的第一个字段被称为前导码。前导码长8位,包含一个二进制1和0的交替模式。其用途是为接收器提供可以用来寻找剩余数据包中用于编码数字1和0的频率的材料。它还被优化信号强度的无线电自动增益控制所使用。

准确确定信号中使用的频率并将无线电的参数设置到最佳状态是保证可靠接收数据包的第一步。

访问地址

当蓝牙控制器正在监听某个通道的数据时,它将接收该通道定义的频率范围内的所有无线电信号。所接收的信号可能是:

  • 发送到该设备的蓝牙数据包。
  • 原本未计划发送给该设备的蓝牙数据包。
  • 与其他无线通信技术有关的数据包(在同一ISM频段内运行并使用当前正在被扫描的蓝牙无线电通道的频率)。
  • 背景噪音。

蓝牙控制器必须能够区分这些信号,并准确选出对发送到该设备的蓝牙数据包进行编码的信号。任何其他信号必须被忽略。

所有蓝牙数据包都包含一个32位访问地址,该地址使得几乎可以肯定是蓝牙的信号在最短的时间内被迅速挑选出来,使其他信号可以立即被丢弃。

访问地址有两种类型:

  • 广播访问地址:为固定值0x8E89BED6,大多数广播包都使用这个地址。不过这里有例外就是蓝牙Le audio会看到的周期性广播链(periodic advertising chains)和不同广播同步流(Broadcast Isochronous Streams, BIS)有关的数据包都有一个唯一的访问地址。
  • 通用访问地址:在两个相连设备通信过程中交换的数据包包含一个访问地址,该地址包含一个由链路层随机分配的值,该值是所有与该连接相关的数据包的唯一识别符。蓝牙协议堆栈的链接层负责检查访问地址。

由于访问地址的长度为32位,将随机背景电磁噪声误认为蓝牙信号的概率极小。在不太可能的情况下,随机背景噪声模式与接收器相关访问地址匹配,将通过进一步的位流处理迅速确定它不是一个有效的蓝牙数据包。仅快速选择相关信号并丢弃其他信号是蓝牙接收器运行的另一个关键步骤,有助于实现可靠的通信。

循环冗余检查

所有蓝牙数据包都包含一个循环冗余检查(Cyclic Redundancy Check, CRC)字段,该字段出现在数据包的末端或附近。CRC是一种常用机制,用于检测由于冲突等问题导致传输数据被无意改变的情况。

当链路层制定一个新的数据包时,通过对数据包中的其他位应用CRC算法计算出一个CRC值。然后将结果的24位值加到数据包中。

在接收数据包时,接收设备中的链路层重新计算CRC,并将结果与接收数据包中包含的CRC值进行比较。如果两个值不一样,则断定传输数据包中的一个或多个数位被改变,并且数据包被丢弃。

应该注意的是,CRC并不是一种安全机制,这是因为数据包可能被故意改变,而且CRC可能被轻易地重新计算。

消息完整性代码

低功耗蓝牙数据包可以被加密。所有的加密数据包都包括一个称为消息完整性检查(Message

Integrity Check, MIC)的字段。MIC其实是一种消息验证码(message authentication code,

MAC),用于检测故意篡改数据包内容的企图。

低功耗蓝牙编码的物理层

低功耗蓝牙提供三种不同的无线电使用方式。这三种方案是物理层的一部分,每一种都以缩写PHY来表

示。这三个定义的物理层是:

• LE 1M - 1 Mbps速率。

• LE 2M - 2 Mbps速率。

• LE Coded - 1 Mbps速率,带前向纠错(FEC)。

LE Coded PHY增加了接收器的灵敏度,因此在接收器与发射器的距离比LE 1M PHY更大时才会出现0.1%的误码率。

在使用LE Coded时,参数S被设置为2或8。当S=2时,LE Coded的可靠通信范围大约增加一倍。当S=8时,范围约为四倍。

在不增加传输功率的情况下,LE Coded PHY通过在每个数据包中加入额外的数据来实现更远距离的可靠

通信,这使得错误既能被检测到,又能通过一种被称为前向纠错的数学技术进行纠正。但伴随范围增加的是数据速率的降低,S=2的数据速率为500 Kb/s,S=8的数据速率为125 Kb/s。

LE Coded PHY的主要用途是增加范围,但它是通过降低较低信号强度下的误码率来实现这一目标,因此

较长距离的通信也有足够的可靠性。

蓝牙连接通信的可靠性

连接

一个设备可以同时连接其他几个设备,并且使用时间共享策略在各连接之间分配无线电的使用。当两台低功耗蓝牙设备连接时,它们会商定一些参数,然后控制它们之后的通信方式。这些参数中的关键参数

是连接间隔,该参数控制连接使用无线电的频率。

每当一个连接的连接间隔开始时,就可以说已经发生了一个连接事件,并且第一个设备(中央)将传输一个数据包。连接中的第二个设备(外设)以相同的连接间隔工作,将准备接收该数据包。经过150微秒的固定延时后,中心机就会切换到监听状态,外设机随后就可以进行传输。这种精确定时的数据包交换可能会在连接事件期间重复多次,并且需要遵守蓝牙核心规格之外的实现细节。

这样一来,每一个连接都会在精确时间间隔内得到维护,每一对设备都会在正确的时间发送和接收数据

包,并且彼此完全同步。当一个数据包传输完毕后,目标设备会按要求进行监听,所以已经做好了接收数据包的准备。下图描述4个连接共享一个无线电:

无线信号共存问题

一些不同的无线电技术会同时使用同一无线电频段,这会带来潜在的挑战。一种技术可能会干扰另一种技术的传输,尤其是发生冲突(见3.1)。此类问题统称为合用问题。蓝牙、Wi-Fi、无绳DECT电话甚至微波炉都在2.4 GHz ISM频段工作,因此这些技术和设备类型之间可能存在合用问题。

无线电时间段排程是一个复杂的问题,涉及到确定何时可以使用和不可以使用无线电。调度的部分方面属于蓝牙核心规格范畴。与其他无线电合用所产生的问题以及其他考虑因素和限制因素,如操作系统可能施加的限制因素。已定义一个被称为槽位可用性掩码(Slot Availability Masks, SAM)的特征,它允许两台蓝牙设备互相提供关于哪些时间段可以使用的信息。根据这些信息,可以优化每个设备的排程度,避免发生合用干扰的时间段。

自适应跳频

无线电通信的主要挑战之一是冲突,在繁忙的无线电环境中,冲突问题尤为严重。如果不同的无线电技术(如蓝牙和Wi-Fi)同时使用一个无线电频谱,就会相互干扰。

蓝牙技术通过使用扩频技术来降低冲突的风险。当两个设备连接时,需要一种称为自适应跳频的特定技术。

在低功耗蓝牙使用的40个通道中,有37个通道(称为通用通道,general purpose channels)可在连接通

信时使用。

连接的主设备产生一个通道图,该图将每个工作良好的通道分类为"已使用"或"未使用"。可使用链路层程

序将通道图与第二台设备共享,以便它们能够共享关于哪些通道将被使用和哪些通道将不被使用的信息。

设备使用特定实施技术监测每个通道的运行情况。当确定一个或多个之前工作的通道不再适用时,通道图就会被更新。反之,如果发现之前运行状况不佳的通道现在运行良好,该通道状态也会在通道图中更新。之后,通道地图更新将与第二个设备共享。通过这种方式,蓝牙可以确保它只使用已知的好通道,避开有问题的通道,并保持通道图的更新,使其始终反映正在使用的最佳通道子集。这就是蓝牙自适应跳频系统的自适应能力。

链路层的排序和确认

低功耗蓝牙链路层在连接的设备之间使用一种信令,确保数据以正确的顺序得到处理,可以确认数据包的接收并用于决定是否继续发送下一个数据包或重新发送上一个数据包。

所有链路层数据包都包含三个重要的字段,它们有助于通信的可靠。这些字段被称为序列号(Sequence

Number, SN)、下一个预期序列号(Next Expected Sequence Number, NESN)和更多数据字段。这三个字段都是位字段,可使用它们对确认系统和检查收到的数据包是否正确排序。

如上图,通信开始时,主设备(设备A)发送一个链路层数据包,其SN和NESN都设置为0。从这时起,在每次发生的数据包交换中,如果一切正常,设备A所设置的SN字段的值将交替出现0和1。因此,辅助设备(设备B)始终知道下一个要接收的数据包的SN值应该是多少,并对此进行检查。

如果设备B接收到来自设备A的具有预期SN值的数据包,它将以一个链路层数据包来响应,该数据包的

NESN设置为逻辑值NOT(SN)。举例而言,如果接收到的SN值是1,那么响应的NESN将是0。

当设备A收到设备B的响应,并将NESN设置为设备A打算在其下一个数据包中用于SN的值时,设备A就能

认为设备B确认正常收到了最后一个传输的数据包。

如果设备B收到一个SN值错误的数据包,则它会认为该数据包是前一个收到的数据包的重传。它会确认该数据包,但不会将它上传至堆栈进行进一步的处理。

如果设备A在设备B的回复中收到一个意外的NESN值或者根本没有收到回复,它就会重新发送带有原来使用的SN值的数据包。

流控制

流控制是为确保数据以接收设备或组件能够容纳的速率进行通信的各种策略的名称。

低功耗蓝牙为链路层提供了一种简单的流控制形式。通过在发送回复时不更新NESN,第二台设备可以让第一台设备在稍晚时间重新发送原数据包。由于原数据包已经被接收和处理,重发的副本将被丢弃,因而减缓了需要完整处理的新数据包的到达速度。

逻辑链路控制和适应协议(Logical Link Control and Adaptation Protocol, L2CAP)支持多种更复杂的流

控制模式,如增强型信用流控制模式等,它们与增强型属性协议(Enhanced Attribute Protocol, EATT)一起使用。

低功耗蓝牙功率控制

低功耗蓝牙具有动态功率控制功能,使低功耗蓝牙设备具有通过动态优化传输功率水平来管理功率的能力。正在监测RSSI的接收设备可以请求改变其对等设备在任一方向上使用的发射功率水平。例如当RSSI越来越低时,它可以要求远程设备增加其发射功率水平,或者当RSSI越来越高并接近饱和点时,它可以要求远程设备降低发射功率水平。发射设备可以自主改变其发射功率水平,并将此情况通知其他设备,同时通知包括新发射功率水平在内的各种参数值。

低功耗蓝牙功率控制功能的引入主要是为了确保传输功率水平永远不会超过所需要的水平,从而使设备能够最大限度地减少功耗。而且这还有利于可靠性。通过将RSSI保持在接收器产生最佳性能的水平范围内,可以在连接设备之间的距离发生变化时,保持较高的信号质量和较低的误码率。

相关推荐
万户猴6 天前
【Android蓝牙开发实战-11】蓝牙BLE多连接机制全解析1
android·蓝牙
万户猴7 天前
【 Android蓝牙-十】Android各版本蓝牙行为变化与兼容性指南
android·蓝牙
万户猴8 天前
【Android蓝牙开发实战-9】高效处理蓝牙断开连接
蓝牙
万户猴11 天前
【Android蓝牙-8】蓝牙安全机制全面解构:加密、认证与数据保护
蓝牙
万户猴11 天前
【Android蓝牙-七】蓝牙通信配置文件(Profile)详解:Android开发者必懂的蓝牙通信基础
蓝牙
万户猴13 天前
【Android蓝牙-六】蓝牙数据通信机制详解:GATT与ATT服务的技术实现
蓝牙
万户猴14 天前
【Android蓝牙-五】Android蓝牙配对与连接机制:从 Bonding 到 GATT 连接
蓝牙
万户猴14 天前
【Android蓝牙-四】Android 蓝牙设备发现与广播机制深度解析
蓝牙
万户猴15 天前
【Android蓝牙通信一】蓝牙扫盲篇
蓝牙