24小时联系电话:18217114652、13661815404
中文
技术专题
了解蓝牙技术的可靠性
了解蓝牙技术的可靠性
与其他无线通信技术一样,蓝牙也使用无线电。但无线电作为编码和传输数据的媒介并不可靠,因为存在各种挑战。因此,不仅仅是蓝牙,任何建立在物理层无线电基础上的通信技术都必须应对一系列基本问题。但是,通过正确的堆栈设计和各个层中的正确流程,可以建立高度可靠的无线电通信。
图 1:在通道 2 上发生冲突
简而言之,当传输的数据等于接收的数据并且与该数据相关的任何预期操作按预期发生时,就会发生可靠的蓝牙通信。然而,在现实世界中,有时可能会有更细微的定义,这取决于所涉及的不同可靠性参数。例如:
容错能力
99.9999% 的成功率可能被认为是可靠的。
潜伏
要在数据传输的 500 毫秒内观察到预期的动作,需要低系统延迟。
交易
一系列更新,其中要么成功应用所有更改,要么不进行任何更改。
弹力
即使在某些组件面临故障/恶化之后,系统也能成功处理操作。
图 2:不同步通信中丢失的数据包
对基于无线电的技术的挑战
无线电通信发生在无线电频谱的信道内。如果两个设备同时在同一信道上传输,它们会相互破坏——导致数据丢失。这称为碰撞。其发生的概率由重复发生的次数和传播所用的时间决定。除此之外,还有传输速度和数据包大小。
图 3:能量随距离减少
众所周知,蓝牙使用2.4GHz频段,也称为ISM。Wi-Fi、ZigBee 和 DECT 电话也可以使用此频段。
蓝牙设备中的无线电通常是半双工的,即它们可以同时发送和接收。以设备A在信道上将数据包传输到设备B的场景为例。
对于接收,设备 B 必须同时在正确的频道上主动收听。如果它没有在侦听,或者在不同的通道上,则不会收到数据包。设备花费在侦听上的时间比例称为 Rx 占空比。不要忘记,一个设备一次只能收听一个频道。
信号强度也有巨大的影响。当信号强度较低时(因为它相对接近背景噪声),一个人可能会遇到更多错误。蓝牙核心规范规定允许高达 0.1% 的误码率 (BER)。除此之外的任何事情都是不可接受的。
无线电可以保持在此限制内的信号强度称为其接收器灵敏度。因此,如果您是产品设计师,选择具有良好接收器灵敏度的收音机很重要。
堆栈实现通常包括几个用于临时数据包存储的缓冲区。如果数据包到达缓冲区的速率在足够长的时间内超过数据包消耗的速率,缓冲区将开始溢出并丢失数据。
GFSK 应对的可靠性挑战
无线电信号特性用于表示数字数据的方式称为调制方案。与基于幅度的方案相比,基于频率的方案往往更不易受噪声干扰。
图 4:GFSK 上移或下移中心载频以表示 1 或 0
蓝牙使用一种特殊的基于频率的调制方案,称为高斯频移键控 (GFSK)。它通过向上或向下移动中心载波频率来表示 1 或 0。
但是频率的突然变化会产生噪音。因此,GFSK 增加了一个滤波器,使频率过渡平滑且噪声较小。GFSK 是一个很好的基础平台,您可以在此基础上进行无线通信。
蓝牙数据包字段
蓝牙数据包具有各种字段。开头是前导码,它有 8 位长,包含 1 和 0 的交替模式。它用于查找精确的发射机频率并设置无线电的增益控制。
图 5:蓝牙数据包中的字段
访问地址为 32 位长,包含一个特殊值,这意味着数据包可以被任何蓝牙设备或特定连接的唯一标识符接收。由于蓝牙控制器将接收相关和不相关的信号,因此它必须能够区分并准确地挑选出相关的信号。
在远端,有循环冗余校验 (CRC),可检测传输数据是否因冲突而被无意更改或损坏。它是通过将发送器计算的 CRC 与接收器计算的 CRC 进行比较来执行的。如果它们不相同,则一定发生了损坏,并且数据包被丢弃。
消息完整性代码 (MIC),也称为消息身份验证代码 (MAC),是一种安全功能,可帮助检测故意篡改的数据(而不是意外通过冲突)。
错误修正
堆栈的物理层 (PHY) 有一个变体,称为 LE 编码 PHY,它允许蓝牙不仅可以检测错误,还可以在特定限制的数据包中纠正错误。这有助于以低信噪比 (SNR) 进行通信。
离发射机越远,信号强度越低,SNR 会变得更糟,从而更难保持低误码率。但是通过前向纠错 (FEC),您可以在低 SNR 下工作,因此在更远的范围内仍然可靠。
扩频
蓝牙解决可靠性挑战的重要方式之一是通过采用扩频技术的各种方式。因此,不是对所有数据包使用单个通道,而是通过一组不同的通道传输它们,从而最大限度地减少冲突的可能性。
可靠地处理蓝牙通信
在连接时,设备会就某些通信参数达成一致,其中包括一些与时间相关的参数,例如无线电用于服务此连接的频率。无线电必须可能在许多不同的连接之间共享。此特定参数称为连接间隔。
在连接间隔开始时,设备轮流发送和接收数据包之间的间隔为 150 微秒。控制连接的精确、商定的定时参数提供了两个设备的发送和接收行为之间的协调,并使通信可靠。
面向连接的通信
面向连接的通信中的扩频如下所示:蓝牙 LE 将 2.4GHz 频段划分为 40 个通道,每个通道宽度为 2MHz。其中三个用于广告(专用于无连接通信)。其他 37 个在两个连接的设备通信时使用。
图 6:2.4GHz 频段划分为 40×2MHz 信道
图 7:连接使用和无线电共享的简化说明
在每个连接事件中,使用的信道随机改变。因此,通过这种方式,数据包传输在 ISM 频段周围散布。此外,系统会记录任何不良信道(由于 CRC 故障或频谱干扰)并将其删除。因此,即使当 ISM 频带的一部分饱和时,也能确保有效的通信。这整个行为被称为自适应跳频 (AFH)。AFH 显着降低了冲突的可能性,并使蓝牙设备即使在非常困难的无线电环境中也能正常运行。
图 8:自适应跳频跨信道分配通信
如前所述,信号强度会极大地影响可靠性,而 FEC 是用于解决此问题的技术之一。但是,另外请注意,当接收信号的电平保持在某个范围(称为黄金范围)内时,无线电接收器的工作效果最佳。有一项称为 LE 功率控制的蓝牙功能,它允许连接的设备请求动态更改传输功率级别,以便接收信号强度保持在此黄金范围内。当设备之间的距离在正常使用过程中发生变化时,这尤其有用。
避免缓冲区溢出
为了缓解缓冲区溢出的可靠性挑战,必须管理数据包的流量。这可以使用称为流量控制的技术来完成,该技术用于许多不同的通信技术。
图 9:流量控制
堆栈的低功耗蓝牙 L2CAP 层在需要时应用流量控制,并支持各种不同的流量控制模式。例如,如果您在堆栈顶部使用增强属性协议,那么它使用 L2CAP 层内的基于增强信用的流控制模式,允许接收设备与发送设备通信其当前接收数据包的能力。如果它为零,则接收器的缓冲区已满,发送器将在再次恢复数据包传输之前等待。
图 10:流量控制技术
因此,它是一种动态流量控制策略,可以防止缓冲区溢出。
用于无连接通信的低功耗蓝牙可靠性
在蓝牙中,无连接通信称为广告。在基本情况下,每个数据包的副本以随机频道顺序在每个频道上广播。它们的时间间隔完全由广播设备控制,与发射机没有任何协调。还有另一种广告形式,称为扩展广告,它使用所有 40 个蓝牙 LE 通道。
在基本广告中使用三个信道不如在连接中使用自适应跳频那么复杂。但是广告渠道被故意放置得很远,以便在某一部分的干扰不会完全阻止通信。
基本广告以定义的时间间隔发生,但它包括在长达 10 毫秒的数据包传输调度中的一些随机时间变化。这是为了避免与碰巧在同一时间表上传输或广告的附近设备发生持续冲突。
蓝牙无连接通信不会尝试协调广告设备的活动与接收设备的活动。但是,有一种特殊的广告模式叫做定期广告,它使广告的时间完全确定和精确。
图 11:定期广告
并且扫描设备还可以发现广播设备的周期性广告时间表,以便它们可以与其精确同步其扫描活动。
这样,与基本的广告形式相比,设备可以更可靠、更有效地接收广播数据。
蓝牙网状网络
蓝牙网状网络允许创建大型网络,拥有数以万计的设备。这是一种使用蓝牙 LE 的特殊方式,其中网状堆栈位于蓝牙 LE 控制器的顶部。
蓝牙网格定义了承载,它提供了使用蓝牙 LE 控制器进行网格消息通信的不同方式。并且承载为无连接和面向连接的通信提供支持。
解决蓝牙网状网络问题
Mesh 节点可以配置为以定义的时间间隔自动重传消息,以便快速重传多个副本。因此,当您发送多个副本时,邮件丢失的可能性会急剧下降。如果您想确保所有接收设备同时处理消息(即使它们没有收到相同的副本),也可以通过使用延迟参数来实现,该参数在许多网格消息中可用类型。
图 12 显示了以 50ms 的间隔发送 3 次的消息。在这里,第一个副本的延迟参数为 100 毫秒,并且被六个目标灯中的四个接收到。
图 12:以 50 毫秒为间隔发送 3 次消息
图 13 显示了第二个副本在 50 毫秒后发送,并由六个灯中的第 5 个接收。
图 13:第二个副本在 50 毫秒后发送,并被六个灯中的第 5 个接收
然后最终副本没有指定延迟(图 14)。它由六个灯中的第二个接收。然后所有六个节点一致执行请求的状态更改,恰好是在按下电灯开关后 100 毫秒。这避免了所谓的爆米花效应,即灯光不会同时亮起。
图 14:最终副本没有指定延迟
蓝牙网状多路径传送
蓝牙网状网络的常见网络设计策略是通过在您的节点子集中启用中继功能,在整个网络中构建多条冗余路径(图 15)。然后,当您发送消息时,原则上所有这些路径都可用。在实践中,如果由于节点的占空比而导致一条路径不可用,则有可能其他路径之一可用,并且您传输的消息将到达路径末端的目的地。
图 15:跨网络的多条冗余路径