BLE链路层--比特流处理

在BLE通信中,我们讨论的PDU(协议数据单元)在通过天线发送之前,需要经历一个关键的"预处理"环节------比特流处理(Bit Stream Processing)。这个过程决定了数据包在空口传输的可靠性、安全性和物理兼容性。

1. 比特流处理流程

在链路层,PDU从组装完成到发送,以及从接收到还原,分别要经过一套完整的处理流水线。发送和接收的处理流程是互逆的。

LE Uncoded PHY(LE 1M / LE 2M)的处理流程如下:

LE Coded PHY的处理流程如下:

2. 错误检查:接入地址与CRC

在接收数据包时,链路层会依次进行两级错误检查:

第一步:检查接入地址(Access Address)

如果接入地址不正确,数据包直接被拒绝。这一步是物理层的"门禁",只有地址匹配的包才能进入后续处理。

第二步:检查CRC

如果CRC不正确,数据包被拒绝;只有CRC校验通过,数据包才被认为是有效的。唯一的例外是,即使CRC错误,接收机仍可能需要进行IQ采样(用于方向定位等场景)。

2.1 CRC生成

CRC是保证数据完整性的核心机制。BLE使用24位CRC,其生成多项式为:

复制代码

CRC计算覆盖PDU中的所有比特,从最低有效位(LSB)开始按传输顺序处理 。CRC的计算在加密之后进行(如果PDU被加密的话)。

CRC初始值的设定因PDU类型而异:

  • 数据信道PDU和CIS PDU :使用在CONNECT_INDAUX_CONNECT_REQ中传输的CRCInit值

  • AUX_SYNC_IND及其子集:使用SyncInfo字段中的CRCInit值

  • 广播物理信道PDU :初始值固定为0x555555

  • BIS PDU:初始值由BIGInfo中的BaseCRCInit和BIS_Number共同决定

  • BIG Control PDU:最低有效字节为0

CRC的传输顺序最高有效位(MSB)先传输,即从位置23到位置0。这与PDU其他字段的LSB-first传输顺序不同,需要特别注意。

3. 数据白化

3.1 为什么要白化?

如果原始数据中出现长串连续的0或1(如0b000000000b11111111),会导致:

  • 载波频偏检测困难,降低接收端灵敏度

  • 信号频谱能量分布不均,增加干扰

  • 调制器在某些位模式下产生失真或功率峰值

白化(Whitening) 通过对数据进行随机化处理来解决这些问题。

3.2 白化的实现原理

白化使用一个7位线性反馈移位寄存器(LFSR),其生成多项式为:

工作原理

  • 发送端 :LFSR生成伪随机序列,与原始数据按位异或(XOR),达到数据"搅乱"的效果

  • 接收端 :使用相同的LFSR和初始化参数,对接收数据再次XOR,即可恢复原始数据(去白化)

白化作用于PDU和CRC,在发送端CRC生成之后进行,在接收端CRC检查之前进行去白化

3.3 LFSR初始化

白化LFSR的初始化序列来源于物理信道索引

  • 位置0:固定设置为1

  • 位置1~6:设置为发送或接收时使用的信道索引(MSB在位置1,LSB在位置6)

例如,信道索引为23(0x17)时,各位置设置为:

复制代码
Position 0 = 1
Position 1 = 0
Position 2 = 1
Position 3 = 0
Position 4 = 1
Position 5 = 1
Position 6 = 1

这种信道相关的初始化确保了不同信道上使用不同的白化序列,进一步降低了信道间的干扰。

4. 编码(Coding)

编码(Coding)只在LE Coded PHY中应用 。它通过增加冗余信息,让接收端即使在信号较弱、存在较多比特错误的情况下,仍能恢复出原始数据,从而实现更远的通信距离

编码分为两个阶段:

4.1 前向纠错(FEC)编码器

FEC编码器使用约束长度K=4非系统、非递归率1/2卷积编码。两个生成多项式为:

来自G₀的比特(a₀)首先被发送,来自G₁的比特(a₁)第二顺位发送。FEC编码器的初始状态设置为全0,连续输入三个0的序列会使编码器恢复到初始状态(终止序列)。

4.2 模式映射器(Pattern Mapper)

模式映射器将FEC编码器的每个比特转换为P个符号,P的值取决于使用的编码方案:

  • S=2编码:每个比特映射为2个符号(数据速率500 kb/s)

  • S=8编码:每个比特映射为8个符号(数据速率125 kb/s)

编码指示符(CI)在FEC Block 1中传输,告知接收端FEC Block 2使用的是S=2还是S=8编码。

5. 总结

处理阶段 LE Uncoded PHY LE Coded PHY 主要作用
CRC生成 24位校验,检测数据传输错误
加密 可选 可选 保护数据机密性
白化 避免长串0/1,改善频谱分布
FEC编码 增加冗余,提升抗干扰能力
模式映射 将编码比特映射为射频符号

从PDU组装完成到最终从天线发出,数据包会依次经过CRC生成→加密→白化(→FEC编码→模式映射)的处理流水线。接收端则按照完全相反的流程进行解码还原。

理解比特流处理的每一个环节,不仅能帮助我们读懂BLE协议规范,更能指导我们在实际开发中排查链路层通信问题------无论是CRC校验失败、白化不同步,还是Coded PHY的编码配置错误。

相关推荐
怪奇云呼军1 小时前
闪电智能VoiceAgent 如何管理呼入、接听、桥接和挂断状态?
java·前端·网络·数据库·人工智能
x_x-F2 小时前
DMA技术详解:解放CPU的数据搬运工
网络
xiaoxiangsiyan2 小时前
RHCE之2026年全套考点详解
运维·前端·网络·chrome·学习·rhce
腾科IT教育2 小时前
网络安全与网络空间安全:概念、产业与防护建议
网络·安全·web安全·网络安全·网络空间安全
0Kilobyte2 小时前
自建拨号服务器上网
网络
zhao32668575112 小时前
静态IP代理固定IP与动态IP的根本差异,账号操作安全性如何体现
网络·网络协议·tcp/ip
2501_9139817812 小时前
工业4.0时代的物联网解决方案:领先品牌如何引领智能制造变革
物联网·制造·工业物联网
虎王物联14 小时前
物联网协议网关设计:多协议融合与数据转换的工程实战
物联网·嵌入式·esp32
淼澄研学18 小时前
Kimi API黑产倒卖技术解析与Python合规接入指南
开发语言·网络·python