3. UWB模组选型与硬件接口

做UWB开发这么多年,我见过不少项目在模组选型这一步就埋了坑。选对了模组,后面联调事半功倍;选错了,光改板子就能折腾一个月。今天咱们就聊聊市面上主流的UWB模组,以及它们背后的硬件接口设计要点。

核心观点:UWB模组选型不是越贵越好,也不是功能越多越好。关键看你的应用场景——是测距、定位,还是数据传输?功耗要求多严?天线环境多复杂?想清楚这些,再往下看。

3.1 主流UWB模组对比

目前市面上能打的UWB模组,主要就三家:Decawave(现在被Qorvo收了)、Qorvo自家后续出的,还有少量国产方案。我个人用得最多的是DW1000和DWM1000系列,后来也接触了Qorvo的DW3000系列。

模组型号 芯片方案 频段 最大速率 典型功耗(TX) 测距精度 适用场景
DWM1000 DW1000 3.5-6.5 GHz 6.8 Mbps ~130 mA ±10 cm 室内定位、标签
DWM1001 DW1000 + nRF52832 3.5-6.5 GHz 6.8 Mbps ~150 mA ±10 cm 集成BLE,快速原型
DW3120 DW3000 6.0-8.5 GHz 6.8 Mbps ~90 mA ±5 cm 低功耗、高精度
DWM3000 DW3000 6.0-8.5 GHz 6.8 Mbps ~95 mA ±5 cm 模块化、快速部署

这里有个细节我得提一下。DW1000和DW3000虽然都叫UWB,但射频前端差异很大。DW3000工作在6-8.5 GHz频段,信道更干净,干扰少。我在一个工厂项目里用过DW1000,旁边有台大功率电机一启动,测距就开始跳。后来换成DW3000,情况好很多。说白了,高频段抗干扰能力确实强一些。

3.2 模组引脚定义与硬件接口

不管选哪个模组,硬件接口都绕不开这几个:SPI、GPIO、IRQ。咱们一个一个说。

3.2.1 SPI接口

UWB模组和主控之间的通信,全靠SPI。DW1000/DW3000的SPI接口是标准的4线制:SCLK、MOSI、MISO、CS。我建议SPI时钟频率不要超过20 MHz,虽然手册说能到40 MHz,但实际走线长了容易出问题。

// DW1000 SPI 初始化示例(STM32平台)
void dw1000_spi_init(void) {
    // SPI2: PB13-SCK, PB15-MOSI, PB14-MISO, PB12-CS
    SPI_HandleTypeDef hspi2;
    hspi2.Instance = SPI2;
    hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;  // 18 MHz
    hspi2.Init.Mode = SPI_MODE_MASTER;
    hspi2.Init.Direction = SPI_DIRECTION_2LINES;
    hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
    hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
    hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
    hspi2.Init.NSS = SPI_NSS_SOFT;
    HAL_SPI_Init(&hspi2);
}

经验之谈:SPI的CS引脚一定要用GPIO控制,别用硬件NSS。我踩过这个坑——硬件NSS在多字节传输时容易产生毛刺,导致模组误判片选信号。

3.2.2 GPIO与IRQ

UWB模组一般有4-6个GPIO,其中最重要的是IRQ(中断请求)引脚。DW1000的IRQ是低电平有效,DW3000可以配置为上升沿或下降沿触发。

我个人习惯把IRQ接到主控的外部中断引脚,优先级设高一点。为什么?因为UWB的时间戳精度要求很高,IRQ响应慢了,测距误差直接变大。我曾经在一个项目里把IRQ挂在普通GPIO上轮询,结果测距抖动从±5 cm变成了±30 cm——教训深刻。

引脚功能 DW1000/DWM1000 DW3000/DWM3000 说明
SPI_CS Pin 7 Pin 9 片选,低电平有效
SPI_CLK Pin 8 Pin 10 时钟,最大20 MHz
SPI_MOSI Pin 9 Pin 11 主出从入
SPI_MISO Pin 10 Pin 12 主入从出
IRQ Pin 16 Pin 18 中断请求,低电平/边沿
RSTn Pin 11 Pin 13 复位,低电平有效
WAKEUP Pin 12 Pin 14 唤醒,高电平有效

3.3 天线设计要点

天线这块,是UWB硬件设计里最容易出问题的地方。很多人觉得随便画个PCB天线就行,结果测距范围直接砍半。我来说几个关键点。

3.3.1 天线类型选择

  • 陶瓷贴片天线:体积小,性能稳定,适合量产。我推荐Johanson的2450AT系列,驻波比能做到1.5以下。
  • PCB印制天线:成本低,但调试周期长。如果你板子空间够,可以用倒F天线(IFA)或单极子天线。
  • 外接天线:通过IPEX座子连接。适合需要灵活部署的场景,比如基站。

注意:UWB天线对阻抗匹配极其敏感。50 Ω阻抗线必须精确计算,误差超过±5 Ω,发射功率就会掉2-3 dB。我见过有人用普通FR4板材做天线,结果6.5 GHz频段损耗大得离谱——测距距离从100米缩到30米。

3.3.2 天线布局避坑

嗯,这里有几个血泪教训:

  1. 天线周围不要铺地铜。至少保持3 mm以上的净空区。我有个项目为了省空间,在天线旁边铺了地铜,结果谐振频率偏了200 MHz。
  2. 天线远离金属件。电池、螺丝、屏蔽罩都会影响天线辐射。如果必须靠近,建议做天线仿真验证。
  3. 差分馈电优于单端馈电。DW1000的射频输出是差分信号,用balun转成单端后接天线。DW3000内部已经集成了balun,可以直接接50 Ω天线。

3.4 电源管理

UWB模组是功耗大户。DW1000发射时能到130 mA,DW3000稍好一点,也有90 mA。对于电池供电的标签设备,电源管理直接决定了产品续航。

3.4.1 供电架构

我建议UWB模组单独用一路LDO供电,别和主控共用。为什么?因为UWB发射瞬间电流变化很快,如果电源纹波大,会直接影响射频性能。

// 典型供电方案
// 3.7V 锂电池 -> 3.3V LDO (XC6206P332MR) -> DW1000 VDD
// 注意:LDO输出电容至少10 μF + 100 nF
电源轨 电压 最大电流 纹波要求 推荐LDO
VDD (数字) 3.3 V 150 mA < 50 mVpp XC6206, RT9013
VDDA (模拟) 3.3 V 100 mA < 20 mVpp LP5907, ADP150
VDD_RF (射频) 1.8 V 50 mA < 10 mVpp TPS7A20, LT3042

3.4.2 低功耗策略

实际项目中,UWB模组大部分时间处于休眠状态。我常用的策略是:

  • 深度休眠:电流约1 μA,通过WAKEUP引脚唤醒。适合标签长时间待机。
  • 空闲监听:电流约10 μA,模组保持SPI通信能力,但射频关闭。
  • 主动发射:电流90-130 mA,每次发射持续约1-2 ms。

省电技巧:如果你用DWM1001(集成BLE),可以让BLE负责唤醒UWB。BLE的广播功耗只有几十μA,比UWB自己轮询省电得多。我在一个手环项目里用这个方案,续航从8小时延长到了72小时。

3.5 知识体系总览

下面这张图把本章的核心内容串起来了。你可以把它当作选型时的检查清单。

UWB模组选型与硬件接口知识体系 UWB模组选型 主流模组对比 DW1000 / DWM1000 / DW3000 硬件接口 SPI (4线) / GPIO / IRQ RSTn / WAKEUP 天线设计 陶瓷贴片 / PCB印制 / 外接 50Ω匹配 / 净空区 / 差分馈电 电源管理 LDO选型 / 纹波控制 深度休眠 / 空闲监听 / 主动发射 选型决策:场景 → 模组 → 接口 → 天线 → 电源

3.6 本章小结

选UWB模组,说白了就是平衡性能、功耗、成本三者的关系。我个人建议:

  • 做原型验证,直接上DWM1001,集成BLE省事。
  • 做低功耗标签,选DW3000系列,发射电流低30%。
  • 做高精度基站,DW1000性价比最高,但天线设计要下功夫。

硬件接口这块,SPI走线短一点、IRQ用中断别轮询、电源纹波压下去——做到这三点,你的UWB硬件就成功了一半。天线嘛,多仿真、多测试,别指望一次搞定。