1、UWB基础与连接原理

各位工程师朋友,咱们开始第一讲。UWB连接断开,说白了就是设备之间“失联”了。要搞懂失联的原因,得先明白它们是怎么“联系”上的。这一章,我带大家把UWB的底裤扒一扒——从技术原理到连接建立,再到状态机,一步步捋清楚。

1.1 UWB技术概述

UWB,全称Ultra-Wideband,超宽带。名字听着唬人,其实核心就一句话:用极窄的脉冲,在极宽的频带上发信号。我习惯把它比作“在宽阔的马路上开一辆超跑”——路宽(频带宽),车快(脉冲窄),不容易堵车(抗干扰强)。

UWB有几个关键特点,我列个表,大家一目了然:

特性 说明 我的经验
带宽 >500MHz 或 中心频率的20%以上 实际项目中,带宽越宽,测距精度越高,但功耗也上去了
工作频段 3.1~10.6 GHz(各国略有差异) 国内常用CH5(6.5GHz)和CH9(8GHz),别选错
发射功率 极低,< -41.3 dBm/MHz 相当于Wi-Fi的千分之一,所以UWB几乎不干扰其他设备
测距精度 10~30厘米(理想可达厘米级) 我在工厂做过测试,空旷环境能到5cm,有遮挡就难说了
抗多径 强,能分辨纳秒级的多径信号 室内墙角反射严重时,UWB比蓝牙靠谱得多

核心认知:UWB不是靠信号强度来测距的,而是靠飞行时间(ToF)。这一点和蓝牙、Wi-Fi完全不同。你想想看,信号强度受环境影响太大,门一关、人一挡,RSSI就飘了。UWB直接算时间,物理上就更稳。

1.2 UWB测距原理

UWB测距,最常用的是双边双向测距(DS-TWR)。名字长,但逻辑简单:A发一个包给B,B回一个包给A,A再发一个包确认。通过三个包的往返时间,算出距离。

为什么不用单边?因为单边要求A和B的时钟完全同步——这在现实中几乎不可能。DS-TWR的好处是,它不需要时钟同步,只需要知道各自的时间差就行。嗯,这里要注意,时钟漂移是UWB测距误差的主要来源之一。

我画了一张DS-TWR的时序图,大家看看:

DS-TWR 双边双向测距时序图 DS-TWR 双边双向测距时序 设备A (发起方) 设备B (响应方) T1 T2 T3 T4 T2' T3' Poll (测距请求) Response (响应) Final (最终确认) 距离 = C × [ (T4 - T1) - (T3' - T2') ] / 2 C为光速,T4-T1是总往返时间,T3'-T2'是B的处理时间

公式很简单:距离 = 光速 × (总往返时间 - 对方处理时间) / 2。我在项目中遇到过一个问题——如果B的处理时间(T3' - T2')测量不准,距离就会偏大。后来发现是B的时钟晶振精度不够,换了温补晶振就好了。

避坑指南:我曾经在量产测试中发现,同一批UWB模块,有的测距偏差5cm,有的偏差30cm。查了两天才找到原因——PCB走线长度不一致导致天线延迟不同。所以,硬件设计时一定要保证天线馈线等长,否则软件怎么调都救不回来。

1.3 UWB连接建立流程

UWB设备之间要通信,不是上来就测距的。得先“握手”,建立连接。我把它拆成四个步骤:

  1. 扫描与发现:发起方在指定信道上广播“谁在?”的探测帧。响应方收到后,回复自己的地址和能力信息。
  2. 参数协商:双方交换配置参数——信道、数据速率、PRF(脉冲重复频率)、Preamble长度等。这一步容易出问题,我后面会细说。
  3. 测距会话建立:协商成功后,双方分配测距时隙,建立会话上下文。说白了就是“咱们约好,每隔X毫秒测一次”。
  4. 数据通信:进入正常测距或数据传输模式。此时连接才算真正建立。

我画个流程图,把连接建立的过程串起来:

UWB连接建立流程图 UWB连接建立流程 1. 扫描与发现 2. 参数协商 成功? 重试或报错 3. 测距会话建立 4. 数据通信/测距 注意:步骤2参数协商失败是连接断开最常见的原因之一 常见失败原因:信道冲突、PRF不匹配、Preamble长度不一致

注意:参数协商这一步,我见过太多人栽跟头了。比如A设备用PRF 64 MHz,B设备用PRF 16 MHz,两边对不上,连接就断了。还有Preamble长度——长Preamble抗干扰好但费电,短Preamble省电但容易丢包。选错了,连接就不稳定。

1.4 UWB连接状态机

搞懂了连接流程,咱们再看看状态机。说白了,就是设备在不同阶段处于什么状态,以及状态之间怎么跳转。我习惯把UWB连接状态机分成这几个状态:

状态 说明 常见问题
IDLE(空闲) 设备上电,未发起任何操作 功耗控制不好,一直处于IDLE也会耗电
SCAN(扫描) 正在搜索周围设备 扫描超时,没找到目标设备
NEGOTIATE(协商) 正在交换配置参数 参数不匹配,协商失败
CONNECTED(已连接) 连接建立成功,正常测距/通信 连接不稳定,频繁掉线
DISCONNECTED(已断开) 连接丢失或主动断开 重连策略不合理,反复重试

状态之间的跳转,我画个图:

UWB连接状态机 UWB连接状态机 IDLE SCAN NEGOTIATE CONNECTED DISCONNECTED 发起扫描 发现设备 协商成功 协商失败 连接丢失 重连或复位 状态机是诊断连接断开故障的“地图” 当连接断开时,先看设备当前在哪个状态,再看它从哪个状态跳过来的 比如:从CONNECTED跳到DISCONNECTED,说明是连接丢失;从NEGOTIATE跳到DISCONNECTED,说明是参数协商失败

状态机这东西,说白了就是一张地图。连接断了,你先看设备卡在哪个状态。我遇到过好几次,客户说“连接不稳定”,我一看日志,设备一直在SCAN和NEGOTIATE之间来回跳——那就是参数协商有问题,不是连接本身的问题。

我的习惯:调试UWB连接时,我第一件事就是打开状态机日志。看状态跳转的时间戳,能快速定位问题。比如从CONNECTED到DISCONNECTED只用了2秒,那大概率是信号丢失;如果用了30秒,可能是定时器超时。时间差就是线索。