4. UWB协议栈架构:从物理层到应用层的分层设计

做UWB开发这些年,我见过不少新手一上来就扎进寄存器配置里,结果调了半个月连数据都收不到。为什么?因为没搞懂协议栈的分层模型。说白了,UWB协议栈就像一栋楼,每一层干每一层的活,层与层之间通过标准接口通信。你跳过了某一层,整栋楼就得塌。

今天我们就把这栋楼拆开看看。从最底层的PHY,到中间的MAC,再到顶层的应用层,每一层负责什么、数据怎么流、市面上主流的芯片方案怎么选——我都会结合自己的项目经验跟你聊透。

4.1 协议栈分层模型:三层架构

UWB协议栈通常分为三层:物理层(PHY)、媒体访问控制层(MAC)和应用层(Application Layer)。有些方案会在MAC和应用层之间再加一个会话管理层,但核心还是这三层。

核心观点:分层不是IEEE 802.15.4a/z标准拍脑袋定的,而是为了解耦。PHY只管发比特流,MAC只管信道访问,应用层只管业务逻辑。这样你换PHY芯片不用改应用代码,换应用场景不用动MAC逻辑。

我习惯用一张图来理解这三层的关系。下面这张SVG图是我自己画的,每次给团队新人培训都用它——简单直接,不绕弯子。

UWB协议栈三层架构与数据流 应用层 测距算法 / 定位引擎 / 数据传输 API接口:发送/接收数据请求 数据请求/确认 MAC层 信道访问 / 帧封装 / 重传 / 安全 CSMA-CA / TDMA / 时隙管理 PSDU数据单元 物理层(PHY) 调制 / 解调 / 信道编码 / 收发 BPM-BPSK / 脉冲成形 / 时间戳 射频信号 天线 数据流向 发送:应用层→MAC→PHY→天线 接收:天线→PHY→MAC→应用层 每层加/剥头部,逐层传递 PHY提供时间戳给MAC 典型芯片映射 DW1000:PHY+MAC硬件实现 DWM1000:模块化(含天线) Qorvo:集成度更高,功耗更低

4.2 各层职责详解

4.2.1 物理层(PHY)—— 最底层的硬功夫

PHY层是UWB协议栈的基石。它负责把MAC层交下来的数据帧(PSDU)转换成射频信号发出去,反过来也把收到的射频信号解调成数据帧交给MAC。说白了,PHY就是那个跟天线直接打交道的苦力。

PHY层具体干这几件事:

  • 调制与解调:UWB用的是BPM-BPSK(脉冲位置调制+二进制相移键控)。我刚开始接触时觉得这名字挺唬人,其实说白了就是:用脉冲的位置和相位来编码0和1。
  • 信道编码:IEEE 802.15.4a/z标准里,PHY层会做卷积编码和里德-所罗门编码,用来对抗多径干扰。嗯,室内环境反射多,这步不能省。
  • 脉冲成形:UWB的脉冲宽度通常在纳秒级,成形滤波器决定了脉冲的形状和频谱。我记得有一次在实验室调DW1000,发现频谱超标了,最后发现是脉冲成形参数没配对。
  • 时间戳生成:这是UWB定位的核心能力。PHY层在发送和接收帧的瞬间会打上高精度时间戳,精度能达到几十皮秒。测距靠的就是这个。

我的经验:PHY层的寄存器配置是UWB开发中最容易出坑的地方。比如DW1000的TX_POWER寄存器,不同信道、不同数据速率对应的最佳值都不一样。我建议你拿到新板子后,先用官方工具把PHY参数扫一遍,别急着写代码。

4.2.2 MAC层 —— 信道访问的交通警察

MAC层在PHY层之上,负责管理多个设备怎么共享无线信道。UWB的MAC层基于IEEE 802.15.4a/z标准,但不同厂商的实现有差异。

MAC层的主要职责:

  • 信道访问机制:支持CSMA-CA(载波侦听多路访问+冲突避免)和TDMA(时分多址)两种模式。CSMA-CA适合随机接入,TDMA适合确定性调度。我在做工业定位项目时,几乎只用TDMA——时延可控,不丢包。
  • 帧封装与解析:MAC层会给上层数据加上帧头(Frame Header),包含源地址、目的地址、序列号、帧类型等信息。接收端MAC层会解析这些头部,决定要不要把数据交给上层。
  • 重传与确认:如果发送端没收到确认帧(ACK),MAC层会自动重传。这个机制在可靠传输中很关键,但也会引入时延抖动——做测距时要注意。
  • 安全子层:支持AES-128加密和完整性校验。不过说实话,很多UWB定位方案为了追求低延迟,会跳过加密。

注意:MAC层的帧超时时间(Frame Timeout)是个双刃剑。设得太短,重传频繁,吞吐量下降;设得太长,信道占用时间增加,碰撞概率上升。我曾经在一个多标签定位系统中,因为超时时间没调好,导致标签之间互相干扰,定位成功率从95%掉到了60%。后来花了三天才排查出来。

4.2.3 应用层 —— 业务逻辑的舞台

应用层是离用户最近的一层。它不关心数据怎么在空中飞,只关心业务怎么实现。在UWB系统中,应用层通常包含:

  • 测距算法:双边双向测距(DS-TWR)、单边双向测距(SS-TWR)、到达时间差(TDOA)等。这些算法利用PHY层提供的时间戳计算距离。
  • 定位引擎:三边定位、指纹定位、粒子滤波等。把多个测距结果融合成位置坐标。
  • 数据传输:有些场景需要UWB传小数据包,比如传感器读数、状态信息。应用层负责组包和解析。
  • 网络管理:设备入网、退网、角色切换(标签/基站)。

我个人习惯把应用层代码和底层驱动严格分开。应用层只调用MAC层提供的API,不直接操作PHY寄存器。这样换芯片时,只需要改底层驱动,应用代码几乎不用动。

4.3 数据流交互过程:从发送到接收的完整旅程

理解了各层的职责,我们来看看一个数据包从发送到接收的完整流程。我以DS-TWR测距为例,走一遍数据流。

发送端(标签)数据流:

  1. 应用层发起测距请求,构造测距帧数据(包含设备ID、序列号、时间戳请求标志)。
  2. 应用层调用MAC层的 MCPS-DATA.request 原语,把数据交给MAC层。
  3. MAC层收到数据后,加上帧头(Frame Header),包括源地址、目的地址、帧类型(数据帧/命令帧)。
  4. MAC层执行信道访问(CSMA-CA或TDMA),等待信道空闲或时隙到达。
  5. MAC层把封装好的帧(PSDU)通过 PD-DATA.request 原语交给PHY层。
  6. PHY层加上同步头(SHR)和物理层头部(PHR),进行信道编码和调制。
  7. PHY层在发送瞬间打上时间戳(TX timestamp),通过天线发射出去。

接收端(基站)数据流:

  1. 天线收到射频信号,PHY层进行解调、解码、同步。
  2. PHY层在接收瞬间打上时间戳(RX timestamp),解析出PSDU数据。
  3. PHY层通过 PD-DATA.indication 原语把PSDU和时间戳一起交给MAC层。
  4. MAC层解析帧头,检查地址和帧类型,去掉头部后把数据通过 MCPS-DATA.indication 原语交给应用层。
  5. 应用层拿到数据和时间戳,执行测距算法,计算出距离。

关键点:时间戳是在PHY层生成的,不是MAC层也不是应用层。为什么?因为PHY层离天线最近,能最精确地捕捉到信号到达的瞬间。MAC层和应用层的软件延迟是不确定的,如果在那里打时间戳,测距精度会惨不忍睹。

4.4 典型芯片方案:DW1000 / DWM1000 / Qorvo

市面上主流的UWB芯片方案,我基本都用过。下面说说我的实际感受。

特性 DW1000 DWM1000 Qorvo(DW3000系列)
封装形式 裸芯片(QFN封装) 模块(含天线、晶振) 裸芯片 / 模块
协议标准 IEEE 802.15.4a IEEE 802.15.4a IEEE 802.15.4a/z
信道数 6个(1/2/3/4/5/7) 6个(同DW1000) 8个(含6-9 GHz新频段)
数据速率 110 kbps / 850 kbps / 6.8 Mbps 同DW1000 最高 31.2 Mbps
测距精度 ±10 cm(典型) ±10 cm(典型) ±5 cm(典型)
功耗 约 130 mA(TX模式) 约 130 mA(TX模式) 约 70 mA(TX模式)
开发难度 较高(需自行设计射频) 较低(模块化,即插即用) 中等(有参考设计)
典型应用 工业定位、资产追踪 快速原型、小批量产品 手机、消费电子、工业

4.4.1 DW1000:老将出马

DW1000是Decawave(现已被Qorvo收购)的第一代UWB芯片,也是市面上最成熟的方案。我最早接触UWB就是用的DW1000,那时候资料少,全靠啃数据手册。

DW1000的优点是稳定、文档齐全、社区活跃。缺点是功耗偏高、数据速率上限只有6.8 Mbps。如果你做的是工业定位或者资产追踪,对功耗不敏感,DW1000完全够用。

4.4.2 DWM1000:模块化的省心之选

DWM1000其实就是把DW1000芯片、晶振、天线、匹配电路封装成一个模块。你不需要设计射频电路,直接焊在板子上就能用。我建议新手或者做快速原型验证时,优先选DWM1000。

但要注意,DWM1000的天线是固定的,辐射方向图也固定了。如果你的产品对外形有特殊要求,比如需要外接天线,那还是得用DW1000裸芯片自己设计射频。

4.4.3 Qorvo(DW3000系列):新一代的王者

Qorvo收购Decawave后,推出了DW3000系列。相比DW1000,DW3000最大的改进是:功耗降低了一半、数据速率提升到31.2 Mbps、支持6-9 GHz新频段。而且DW3000兼容IEEE 802.15.4z标准,增加了HRP(高重复脉冲)模式,抗干扰能力更强。

我最近一个项目用的就是DW3110(DW3000系列的一款),测距精度确实比DW1000好一些,而且功耗低了很多。不过DW3000的寄存器模型跟DW1000不完全一样,迁移代码时要注意。

选型建议:

  • 做原型验证或小批量产品 → DWM1000(省心)
  • 做工业定位、对成本敏感 → DW1000(成熟稳定)
  • 做消费电子、手机、或需要高数据速率 → DW3000系列(新一代)
  • 做低功耗电池供电设备 → DW3000系列(功耗优势明显)

4.5 本章小结

UWB协议栈的三层架构——PHY、MAC、应用层——每一层都有明确的职责边界。PHY管信号收发和时间戳,MAC管信道访问和帧封装,应用层管业务逻辑。数据流从应用层一路向下到PHY,再通过天线发出去;接收端反过来,从PHY一路向上到应用层。

芯片方案方面,DW1000是经典老将,DWM1000是模块化省心之选,Qorvo DW3000系列是新一代的王者。选型时根据你的功耗、速率、成本需求来定,没有绝对的好坏。