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的时序图,大家看看:
公式很简单:距离 = 光速 × (总往返时间 - 对方处理时间) / 2。我在项目中遇到过一个问题——如果B的处理时间(T3' - T2')测量不准,距离就会偏大。后来发现是B的时钟晶振精度不够,换了温补晶振就好了。
避坑指南:我曾经在量产测试中发现,同一批UWB模块,有的测距偏差5cm,有的偏差30cm。查了两天才找到原因——PCB走线长度不一致导致天线延迟不同。所以,硬件设计时一定要保证天线馈线等长,否则软件怎么调都救不回来。
1.3 UWB连接建立流程
UWB设备之间要通信,不是上来就测距的。得先“握手”,建立连接。我把它拆成四个步骤:
- 扫描与发现:发起方在指定信道上广播“谁在?”的探测帧。响应方收到后,回复自己的地址和能力信息。
- 参数协商:双方交换配置参数——信道、数据速率、PRF(脉冲重复频率)、Preamble长度等。这一步容易出问题,我后面会细说。
- 测距会话建立:协商成功后,双方分配测距时隙,建立会话上下文。说白了就是“咱们约好,每隔X毫秒测一次”。
- 数据通信:进入正常测距或数据传输模式。此时连接才算真正建立。
我画个流程图,把连接建立的过程串起来:
注意:参数协商这一步,我见过太多人栽跟头了。比如A设备用PRF 64 MHz,B设备用PRF 16 MHz,两边对不上,连接就断了。还有Preamble长度——长Preamble抗干扰好但费电,短Preamble省电但容易丢包。选错了,连接就不稳定。
1.4 UWB连接状态机
搞懂了连接流程,咱们再看看状态机。说白了,就是设备在不同阶段处于什么状态,以及状态之间怎么跳转。我习惯把UWB连接状态机分成这几个状态:
| 状态 | 说明 | 常见问题 |
|---|---|---|
| IDLE(空闲) | 设备上电,未发起任何操作 | 功耗控制不好,一直处于IDLE也会耗电 |
| SCAN(扫描) | 正在搜索周围设备 | 扫描超时,没找到目标设备 |
| NEGOTIATE(协商) | 正在交换配置参数 | 参数不匹配,协商失败 |
| CONNECTED(已连接) | 连接建立成功,正常测距/通信 | 连接不稳定,频繁掉线 |
| DISCONNECTED(已断开) | 连接丢失或主动断开 | 重连策略不合理,反复重试 |
状态之间的跳转,我画个图:
状态机这东西,说白了就是一张地图。连接断了,你先看设备卡在哪个状态。我遇到过好几次,客户说“连接不稳定”,我一看日志,设备一直在SCAN和NEGOTIATE之间来回跳——那就是参数协商有问题,不是连接本身的问题。
我的习惯:调试UWB连接时,我第一件事就是打开状态机日志。看状态跳转的时间戳,能快速定位问题。比如从CONNECTED到DISCONNECTED只用了2秒,那大概率是信号丢失;如果用了30秒,可能是定时器超时。时间差就是线索。