第一章:雷达系统概述
1.1 FMCW雷达原理——说白了就是调频连续波
各位同学好,我是你们这门课的老朋友。今天咱们聊聊FMCW雷达的基本原理。很多人一听到「雷达」两个字,脑子里就浮现出那种转来转去的大锅盖。其实FMCW雷达完全不是那回事。
FMCW,全称是Frequency Modulated Continuous Wave,翻译过来就是「调频连续波」。什么意思呢?就是雷达一直发射信号,而且这个信号的频率会随时间变化。我习惯把它比作「会变调的哨子」——你吹一个哨子,音调从低到高慢慢变,然后反射回来的声音因为走了更远的路,听起来音调会低一些。这个音调差,就是距离信息。
核心公式:距离 R = (c × Δf) / (2 × S)
其中 c 是光速,Δf 是发射信号与回波信号的频率差,S 是调频斜率。
为什么会这样?你想想看,发射信号频率在变化,回波信号因为传播延迟,到达接收机时发射信号的频率已经变了。这个频率差,我们叫它「差频」或者「拍频」。差频越大,说明目标越远。
我在项目中遇到过一个问题:有个客户说他们的雷达测距不准,我一看,原来是调频斜率设置得太陡,导致差频超出了ADC的采样范围。嗯,这里要注意,调频斜率不是越大越好,得跟你的采样率匹配。
1.2 速度测量——多普勒效应没那么神秘
FMCW雷达不仅能测距,还能测速。原理是多普勒效应。说白了就是:目标朝你运动,反射回来的信号频率会变高;远离你,频率会变低。
但FMCW雷达测速有个特点:它不是在单个chirp里测速度,而是通过多个chirp之间的相位变化来推算。我刚开始做雷达时,总觉得这步很绕,后来想通了——你发射一串chirp,每个chirp的回波相位会因为目标移动而逐渐变化。这个相位变化率,就是速度。
个人经验:我曾经在调试一个车载雷达时,发现速度测量总是有±2km/h的误差。排查了很久,最后发现是温度变化导致本振频率漂移。从那以后,我每次做设计都会在板上留一个温度传感器,用来做频率补偿。
1.3 NXP雷达处理器产品线——S32R系列
聊完原理,咱们看看硬件。NXP的雷达处理器,目前主打的是S32R系列。这个系列我用了好几年,从最早的S32R27到现在的S32R45,每一代都有明显进步。
| 型号 | 内核 | 雷达加速器 | 典型应用 |
|---|---|---|---|
| S32R27 | 双核ARM Cortex-R52 | SPT 2.0 | 角雷达、前向雷达 |
| S32R41 | 双核ARM Cortex-R52 | SPT 3.0 | 4D成像雷达 |
| S32R45 | 四核ARM Cortex-R52 | SPT 3.0 + eTPU | 高分辨率成像雷达 |
我个人最推荐的是S32R45。为什么?因为它集成了SPT 3.0雷达加速器,可以硬件加速FFT、CFAR这些计算密集型任务。你想想看,以前做一帧雷达数据处理,CPU要跑几十毫秒,现在用加速器几毫秒就搞定了。
避坑指南:我曾经在S32R27上做项目时,忽略了SPT的DMA传输对齐要求,结果数据一直出错。后来查手册才发现,SPT的输入数据必须16字节对齐。这个坑我踩过,你们千万别再踩。
1.4 雷达信号处理全链路概览
好了,咱们把整个信号处理链路串一遍。从天线接收到原始数据,到最终输出目标信息,中间要经过好几个步骤。我习惯把它分成四个阶段:
- 前端处理:ADC采样、IQ解调、去直流。这一步主要是把模拟信号变成数字信号,并去除一些固定偏差。
- 距离-多普勒处理:做两次FFT。第一次沿着快时间维做距离FFT,第二次沿着慢时间维做多普勒FFT。输出的是一个距离-多普勒图。
- 目标检测:用CFAR算法在距离-多普勒图上找峰值。这一步要小心,阈值设高了漏目标,设低了虚警多。
- 目标跟踪与输出:对检测到的目标做聚类、关联、滤波,最后输出目标的距离、速度、角度信息。
- 带宽:1GHz(对应距离分辨率约0.15m)
- chirp周期:40μs
- 每帧chirp数:256
- 采样率:10MHz
- 距离FFT点数:512
- 多普勒FFT点数:256
我记得第一次完整跑通这个链路时,看到屏幕上出现稳定的目标点迹,那种成就感真的难以形容。但说实话,每一步都有坑。比如第二步的FFT,窗函数选不好,旁瓣会把小目标淹没。第三步的CFAR,参考窗大小设不对,密集目标场景下会漏检。
全链路关键参数(以77GHz车载雷达为例):
这些参数不是随便选的。带宽决定了距离分辨率,chirp周期决定了最大不模糊速度,采样率决定了最大探测距离。我建议你们在做设计时,先用公式算一遍理论值,再根据实际需求调整。
1.5 本章小结
这一章咱们把FMCW雷达的基本原理、NXP的S32R处理器产品线、以及信号处理全链路都过了一遍。说白了,雷达信号处理就是「发射-接收-变换-检测」这四个步骤。后面的章节,我会带着大家一步步在S32R平台上实现这些算法。
嗯,最后说一句:做雷达,理论要扎实,但动手更重要。下一章咱们就开始写代码了,敬请期待。