第三章 ADC数据采集与预处理
好,咱们进入第三章。ADC数据采集与预处理,说白了就是雷达信号处理的第一道关卡。你想想看,天线接收回来的模拟信号,得先变成数字信号,我们才能用处理器去折腾它。这一步要是没做好,后面算法再牛也白搭。我在项目里见过太多人,花大把时间调算法,结果发现是ADC配置出了问题,数据本身就有问题。
3.1 NXP雷达ADC配置要点
NXP的雷达处理器,比如S32R系列,内部集成了高速ADC。我个人习惯,拿到芯片第一件事就是看ADC的参考手册。配置ADC时,有几个关键参数必须盯紧。
| 参数 | 说明 | 我的建议值 |
|---|---|---|
| 采样率 | 决定了能处理的最大带宽 | 根据FMCW调频带宽设定,通常几MHz到几十MHz |
| 分辨率 | 通常12位或14位 | 12位够用,14位更稳 |
| 采样模式 | 交错采样还是并行采样 | 多通道场景用并行,减少相位误差 |
| 触发源 | 由FMCW chirp信号触发 | 硬件触发,别用软件触发 |
嗯,这里要注意。ADC的采样时钟必须干净。我曾经在一个项目里,发现ADC数据总有周期性噪声,查了三天,最后发现是时钟走线太长,被电源干扰了。所以,硬件设计时,ADC时钟走线要短,要远离开关电源。
3.2 IQ数据采集
雷达信号处理,IQ数据是核心。为什么?因为IQ数据保留了信号的幅度和相位信息。你想想看,FMCW雷达测距测速,靠的就是相位差。没有IQ数据,你只能测幅度,那精度就差远了。
NXP的ADC通常输出的是实采样数据。要得到IQ数据,有两种方式:
- 硬件正交解调:用混频器直接输出I和Q两路模拟信号,然后两路ADC分别采样。好处是实时性好,坏处是硬件成本高,两路ADC的增益和相位要匹配。
- 软件正交解调:单路ADC采样中频信号,然后在数字域做希尔伯特变换或正交混频。我比较推荐这种方式,灵活,而且可以后期校准。
软件正交解调的代码,我一般这么写:
// 假设adc_data是单路实采样数据
// 生成正交本振信号
for (int i = 0; i < sample_count; i++) {
float cos_val = cosf(2 * M_PI * if_freq * i / sample_rate);
float sin_val = -sinf(2 * M_PI * if_freq * i / sample_rate);
i_data[i] = adc_data[i] * cos_val;
q_data[i] = adc_data[i] * sin_val;
}
// 然后低通滤波,滤掉高频分量
// 这里省略滤波器实现
你看,代码不复杂。但有个坑:本振信号的频率必须和实际中频信号的中心频率对齐。否则,IQ数据里会有残余的直流分量,后面处理会出问题。
3.3 直流偏置校正
ADC采集回来的数据,通常会有直流偏置。说白了,就是信号的平均值不是零。为什么会这样?ADC的参考电压有偏差,或者前端放大器有失调电压。
直流偏置的影响有多大?你想想看,如果直流偏置不消除,后面做FFT时,零频处会有一个很大的峰值,把近处的目标信号都淹没了。我遇到过最夸张的一次,直流偏置占了满量程的10%,结果零频附近的目标完全看不见。
校正方法很简单:
- 静态校正:在没有信号输入时,采集一段数据,计算平均值,然后从后续数据中减去这个平均值。
- 动态校正:在chirp信号的空白段(比如chirp开始前的空闲时间)采集数据,实时计算直流偏置。
我个人习惯用动态校正。因为温度变化、电源波动都会导致直流偏置漂移。静态校正只能管一时。
3.4 幅度归一化
幅度归一化,就是把信号的幅度调整到一个标准范围。为什么需要这一步?因为不同通道的ADC增益可能有差异,或者不同chirp的信号强度不一样。如果不归一化,后面做恒虚警检测(CFAR)时,门限就没法统一设置。
归一化的方法有两种:
- 最大值归一化:找到信号的最大绝对值,然后所有数据除以这个最大值。简单粗暴,但容易受噪声尖峰影响。
- 均方根归一化:计算信号的均方根值,然后所有数据除以这个均方根值。更稳定,我推荐用这个。
代码示例:
// 计算均方根值
float rms = 0.0f;
for (int i = 0; i < sample_count; i++) {
rms += i_data[i] * i_data[i] + q_data[i] * q_data[i];
}
rms = sqrtf(rms / sample_count);
// 归一化
for (int i = 0; i < sample_count; i++) {
i_data[i] /= rms;
q_data[i] /= rms;
}
嗯,这里要注意。归一化因子要保存下来。因为后面做目标检测时,你可能需要反推目标的真实幅度。我有个项目,归一化后忘了保存因子,结果目标距离算对了,但反射截面积(RCS)怎么算都不对,折腾了两天才发现是归一化因子丢了。
好了,这一章就到这里。ADC配置、IQ采集、直流校正、幅度归一化,这四个步骤环环相扣。你想想看,如果ADC采样率没配好,IQ数据就是错的;如果直流偏置没校正,FFT结果就是歪的;如果幅度没归一化,检测门限就是乱的。所以,每一步都要用心。
下一章,我们会进入距离维FFT处理。到时候,你会看到预处理做得好,FFT的结果有多漂亮。