4. UWB协议栈架构:从物理层到应用层的分层设计
做UWB开发这些年,我见过不少新手一上来就扎进寄存器配置里,结果调了半个月连数据都收不到。为什么?因为没搞懂协议栈的分层模型。说白了,UWB协议栈就像一栋楼,每一层干每一层的活,层与层之间通过标准接口通信。你跳过了某一层,整栋楼就得塌。
今天我们就把这栋楼拆开看看。从最底层的PHY,到中间的MAC,再到顶层的应用层,每一层负责什么、数据怎么流、市面上主流的芯片方案怎么选——我都会结合自己的项目经验跟你聊透。
4.1 协议栈分层模型:三层架构
UWB协议栈通常分为三层:物理层(PHY)、媒体访问控制层(MAC)和应用层(Application Layer)。有些方案会在MAC和应用层之间再加一个会话管理层,但核心还是这三层。
核心观点:分层不是IEEE 802.15.4a/z标准拍脑袋定的,而是为了解耦。PHY只管发比特流,MAC只管信道访问,应用层只管业务逻辑。这样你换PHY芯片不用改应用代码,换应用场景不用动MAC逻辑。
我习惯用一张图来理解这三层的关系。下面这张SVG图是我自己画的,每次给团队新人培训都用它——简单直接,不绕弯子。
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测距为例,走一遍数据流。
发送端(标签)数据流:
- 应用层发起测距请求,构造测距帧数据(包含设备ID、序列号、时间戳请求标志)。
- 应用层调用MAC层的
MCPS-DATA.request原语,把数据交给MAC层。 - MAC层收到数据后,加上帧头(Frame Header),包括源地址、目的地址、帧类型(数据帧/命令帧)。
- MAC层执行信道访问(CSMA-CA或TDMA),等待信道空闲或时隙到达。
- MAC层把封装好的帧(PSDU)通过
PD-DATA.request原语交给PHY层。 - PHY层加上同步头(SHR)和物理层头部(PHR),进行信道编码和调制。
- PHY层在发送瞬间打上时间戳(TX timestamp),通过天线发射出去。
接收端(基站)数据流:
- 天线收到射频信号,PHY层进行解调、解码、同步。
- PHY层在接收瞬间打上时间戳(RX timestamp),解析出PSDU数据。
- PHY层通过
PD-DATA.indication原语把PSDU和时间戳一起交给MAC层。 - MAC层解析帧头,检查地址和帧类型,去掉头部后把数据通过
MCPS-DATA.indication原语交给应用层。 - 应用层拿到数据和时间戳,执行测距算法,计算出距离。
关键点:时间戳是在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系列是新一代的王者。选型时根据你的功耗、速率、成本需求来定,没有绝对的好坏。