4. UWB抓包软件操作与数据导出

做UWB定位开发,绕不开协议栈。很多新手一上来就调API,遇到抓包数据看不懂,帧结构对不上,定位精度上不去,最后才发现是协议理解不到位。

我个人习惯是,先花半天把协议栈骨架摸清楚。说白了,UWB的协议栈核心就是IEEE 802.15.4z标准。这个标准定义了UWB设备怎么发数据、怎么组帧、怎么测距。今天我们就把它拆开来看。

核心观点:802.15.4z是UWB定位的基石。不理解帧结构,抓包就是看天书;不理解MAC和PHY参数,调优就是瞎蒙。

4.1 IEEE 802.15.4z标准概览

802.15.4z是IEEE在2020年发布的修订版,专门增强UWB的测距精度和安全性。它基于原有的802.15.4-2015框架,但加入了两个关键特性:

  • HRP(High Rate Pulse):高速率脉冲模式,支持更高的数据速率和更精确的时间戳。
  • 增强的测距安全机制:防止距离欺骗攻击,比如CIR(信道脉冲响应)验证。

我记得第一次接触这个标准时,最困惑的是它和旧版802.15.4a的区别。简单说,4z向下兼容4a,但4z的帧结构里多了几个关键字段,用于携带测距信息和安全校验。

特性 802.15.4a 802.15.4z
测距精度 ~10cm ~5cm(理想条件下)
数据速率 最高27.24 Mbps 最高31.2 Mbps
安全机制 无强制要求 STS(加扰时间戳)
帧结构 基本帧 扩展帧(带测距字段)

我的经验:如果你用的是DW3000系列芯片,它原生支持4z标准。但很多旧设备(如DW1000)只支持4a。混用时要特别注意帧格式兼容性,否则抓包会看到一堆CRC错误。

4.2 UWB帧结构详解

UWB帧结构,说白了就是数据包的骨架。抓包分析时,你看到的每一个字节都有它的意义。

一个标准的UWB帧包含三个部分:SHR(同步头)、PHR(物理头)、PSDU(物理层服务数据单元)。

UWB帧结构(802.15.4z HRP模式) SHR 同步头 SYNC + SFD PHR 物理头 速率/长度 PSDU 物理层服务数据单元 MAC帧(最大127字节) 关键说明: • SHR:用于接收机同步和帧检测。SYNC序列长度可配置(64/1024等),越长抗干扰越强。 • PHR:包含数据速率、帧长度、测距标志等。抓包时PHR错误会导致整帧丢弃。 • PSDU:实际承载数据。4z模式下,PSDU前几个字节可能是STS(加扰时间戳)。 • 总帧长:SHR + PHR + PSDU,最大不超过 127 字节(标准模式)。

4.2.1 SHR(同步头)

SHR由两部分组成:SYNC序列和SFD(帧起始定界符)。SYNC序列是一串已知的脉冲,接收机用它来锁定信号。SFD则告诉接收机“同步结束,准备接收数据”。

我在项目中遇到过一个问题:在强多径环境下,SYNC序列太短会导致同步失败。后来我把SYNC长度从64增加到256,定位成功率从70%提升到95%。

4.2.2 PHR(物理头)

PHR只有19位(标准模式),但信息量很大。它包含:

  • 数据速率:110 kbps、850 kbps、6.8 Mbps等。
  • 帧长度:PSDU的字节数。
  • 测距标志:指示该帧是否用于测距。
  • STS配置:4z新增,指示STS的存在和长度。

注意:PHR使用固定的6.8 Mbps速率传输,不受PSDU速率影响。这意味着PHR的接收灵敏度是固定的。如果PHR解调失败,整帧就丢了。我曾经在弱信号场景下,PHR错误率高达30%,后来通过调整AGC阈值才解决。

4.2.3 PSDU(物理层服务数据单元)

PSDU就是MAC层传下来的数据。在UWB定位中,PSDU通常包含:

  • MAC帧头(帧控制、序列号、地址等)
  • 测距数据(时间戳、往返时间等)
  • STS(如果启用安全测距)
  • FCS(帧校验序列)

4.3 MAC层功能

MAC层在UWB定位中扮演“交通警察”的角色。它负责:

  • 信道访问:决定什么时候发数据,避免碰撞。
  • 帧封装:把上层数据打包成MAC帧,加上地址和校验。
  • 确认机制:发送方可以要求接收方回复ACK。
  • 测距调度:协调多个设备之间的测距时序。

说白了,MAC层就是保证数据能可靠地从一个节点传到另一个节点。在UWB定位中,MAC层还承担了一个特殊任务——时间戳标记。当MAC层发送或接收帧时,它会在硬件层面记录精确的时间戳,这个时间戳是测距计算的基础。

MAC功能 作用 定位中的重要性
信道访问(CSMA-CA) 避免多设备同时发送 高——碰撞会导致测距失败
帧封装 添加MAC头、地址、FCS 中——影响帧解析
确认(ACK) 确认帧是否成功接收 中——影响重传策略
时间戳标记 记录收发时刻 极高——直接决定测距精度
测距调度 协调多节点测距时序 高——影响系统容量

避坑指南:我曾经在调试多基站系统时,发现测距值偶尔跳变。抓包分析后发现,是MAC层的ACK超时设置太短,导致基站误以为数据丢失而重传,重传帧的时间戳被错误地用于测距计算。把ACK超时从100μs调整到200μs后,问题消失。

4.4 PHY层参数

PHY层参数是UWB定位的“物理基础”。你配置的参数直接决定了定位精度、覆盖范围和抗干扰能力。

4.4.1 关键PHY参数

  • 信道频率:UWB有多个信道(如CH1: 3.5GHz, CH2: 4.0GHz, CH5: 6.5GHz)。频率越高,带宽越大,精度越高,但穿透性越差。
  • 脉冲重复频率(PRF):每秒发送的脉冲数。常见值:16 MHz、64 MHz。PRF越高,时间戳分辨率越高。
  • 数据速率:110 kbps ~ 31.2 Mbps。速率越低,接收灵敏度越高,覆盖距离越远。
  • 发射功率:受各国法规限制(如FCC限制-41.3 dBm/MHz)。
  • 前导码长度:SYNC序列的长度。越长抗干扰越强,但会降低数据吞吐量。

4.4.2 参数选择建议

我个人的经验是,参数选择没有银弹。你需要根据实际场景权衡:

  • 室内定位:优先选高PRF(64 MHz)和短前导码(64或128),保证精度和刷新率。
  • 室外远距离:优先选低速率(110 kbps)和长前导码(1024),保证覆盖。
  • 多径严重环境:选高带宽信道(如CH5),并适当增加前导码长度。

关键参数对比表:

参数 典型值 对定位的影响
信道频率 CH5 (6.5 GHz) 带宽大,精度高,穿透差
PRF 64 MHz 时间戳分辨率高,功耗大
数据速率 6.8 Mbps 平衡覆盖和吞吐量
前导码长度 256 抗干扰中等,刷新率适中

4.5 抓包分析中的协议栈应用

当你用抓包工具(如Wireshark配合UWB dongle)分析UWB数据时,你会看到:

  • PHY层信息:信道、PRF、数据速率、RSSI、时间戳。
  • MAC层信息:源地址、目的地址、帧类型(数据/命令/确认)、序列号。
  • 测距数据:如果帧是测距帧,PSDU里会包含时间戳和测距结果。

举个例子,你抓到一个帧,PHR显示速率6.8 Mbps,帧长度20字节。MAC头显示源地址0x1234,目的地址0x5678,帧类型是数据帧。PSDU里前4个字节是时间戳,后2个字节是测距结果。这就是一个典型的测距数据帧。

重要提醒:抓包时,如果看到大量PHR错误或CRC错误,不要急着怀疑硬件。先检查PHY参数是否匹配——比如发送方用64 MHz PRF,接收方配成16 MHz PRF,那肯定解不出来。我曾经被这个问题坑了一整天。