😊Forward
发布日期

WRSP6TK 雷达 TR 测试软件源码精讲(3):外校准——接收与发射

作者

M先生

WRSP6TK 雷达 TR 测试软件源码精讲(3):外校准——接收与发射

本篇详解模式 2(外接收校准)与模式 3(外发射校准)。外校准与内校准的数学核心完全一样(GetCalibrationFactor),差别在信号怎么进来/出去、怎么扫描

一、外校准 vs 内校准的本质区别

内校准:信号在雷达内部走
  机内信号源 ──► 校准网络 ──► 各接收通道(或从发射通道取样)

外校准:信号从天线口进出
  外部信号源 ──► 天线 ──► 各接收通道     (模式2 外接收)
  各发射通道 ──► 天线 ──► 外部接收设备    (模式3 外发射)

外校准的特点

  1. 经过完整天线链路(含天线本身),校准结果更真实
  2. 需要外部仪器(信号源、频谱仪等)
  3. 需要转台/扫描机构配合——测不同单元时,转台或信号源移动到不同位置(这就是为什么外校准要开 UART 串口)
  4. 需要微波暗室或外场(避免多径干扰)

术语注释

  • 微波暗室:四壁贴吸波材料的房间,消除反射,模拟自由空间。
  • 远场条件:天线测试距离需满足 R2D2λR \ge \frac{2D^2}{\lambda}DD 为口径,λ\lambda 为波长),此时天线处于平面波照射下。

二、模式 2:外接收校准(AntRecvAdjust)

2.1 完整流程

┌─ AntRecvAdjustInit ─────────────────────────────────────┐
1. 检查外接收校准参数文件                                 │
2. 关所有 TR、波束系数                                     │
3.DIFR/DBF 直通系数                                    │
4. 打开 UART 串口(TRTestOpenUart,发 0x5a 握手)         │
│    —— 外校准必须知道转台位置,所以需要串口同步             │
5. 下发外接收校准 Difr/Calibtate 参数到 DSP6. 下发波束/校正系数(直通)                               │
7. 开所有 DIFR 接收通道                                    │
8. m_StartTrTest = TRUE(等待 UART 位置帧驱动)            │
└──────────────────────────────────────────────────────────┘
UART 位置帧到达(OnComm)→ 位置有效 → 定时器 → 取数
┌─ AntRecvAdjustDataProcess(每帧)───────────────────────┐
│ 按当前扫描位置(m_ArrayScanDir 正/反向)计算 DIFR/Chl│ 提取该单元 I/Q → m_AdjustSrcIQ[m_CurScanArrayNum]│ m_CurScanArrayNum++;SetEvent                            │
└──────────────────────────────────────────────────────────┘
┌─ AntRecvAdjustDataProc ─────────────────────────────────┐
if (m_CurScanArrayNum >= m_NeedScanArrayNum){   // 所有单元扫完                                       │
1.TR/波束、关 UART2. 若反向扫描 → 数据反转(m_AdjustSrcIQ 前后对调)      │
3. GetCalibrationFactor 计算系数                        │
4. 保存"外校准H/V校准系数 + 源数据"文件                │
5. 刷新显示,弹窗完成                                   │
}└──────────────────────────────────────────────────────────┘

2.2 扫描方向与数据反转(重点)

// 正向扫描
m_CurrentHDifrId = g_ArrayMapDIFR[m_CurScanArrayNum];
m_CurrentHChlId  = g_ArrayMapChannel[m_CurScanArrayNum];

// 反向扫描
m_CurrentHDifrId = g_ArrayMapDIFR[m_NeedScanArrayNum - 1 - m_CurScanArrayNum];
m_CurrentHChlId  = g_ArrayMapChannel[m_NeedScanArrayNum - 1 - m_CurScanArrayNum];

为什么反向扫描后要反转数据?

if(m_ArrayScanDir)  // 反向
{
    HalfBeamArrayNum = m_NeedScanArrayNum>>1;
    for(i=0; i<HalfBeamArrayNum; i++)
    {
        // 交换 i 与 N-1-i 的 I/Q
        tmpI = m_AdjustSrcIQ[i][0];
        ...
        m_AdjustSrcIQ[i][0] = m_AdjustSrcIQ[m_NeedScanArrayNum-i-1][0];
        ...
    }
}

物理原理:转台从 1 号单元扫到 N 号(正向),数据顺序是 1,2,...,N。反向扫时,数据按 N,N-1,...,1 到达。而后续计算(GetCalibrationFactor、保存文件)都假设"第 i 个数据 = 第 i 个单元"。所以反向扫描必须在处理前把数据反转回正向顺序,保证"数据索引 = 单元编号"的约定不变

工程要点:扫描方向反转(蛇形扫描)能节省转台往返时间,但必须配对"数据重排"。这类"物理顺序 → 逻辑顺序"的转换,是运动控制+数据采集系统最常见的隐藏 bug 源。

2.3 接收数据偏移

if(m_TestHOrV)  // V
    DataOff = m_CurrentVDifrId * g_ValidChannelNum + m_CurrentVChlId;
else            // H
    DataOff = m_CurrentHDifrId * g_ValidChannelNum + m_CurrentHChlId;
m_AdjustSrcIQ[m_CurScanArrayNum][0] = tmpIQ[DataOff<<1];
m_AdjustSrcIQ[m_CurScanArrayNum][1] = tmpIQ[(DataOff<<1)+1];

外接收每次只取一个单元(当前扫描位置的 DIFR×通道),与内接收"一次取所有波束"不同。

三、模式 3:外发射校准(AntSendAdjust)

3.1 与模式 2 的对称性

模式 3 与模式 2 结构对称,区别在发射侧

AntSendAdjustInit
├─ 逐单元扫描发射:
│   ├─ 波束系数:全 0,只给当前单元 0x7fff0000
│   │   m_BeamData[i][m_CurrentHChlId] = 0x7fff0000;
│   └─ TR 通道:UART0 只开当前单元
├─ 接收侧固定用校准通道取样(m_ReceiveDataOffsetI/Q│   m_AdjustSrcIQ[..] = tmpIQ[m_ReceiveDataOffsetI/Q]
└─ 扫完 → 数据反转(如反向)→ GetCalibrationFactor → 保存

3.2 发射波束系数的"只开一路"

// 全 0 = 全关
m_TmpBeamData[i][j] = 0;
m_BeamData[i][j] = 0;
// 只给当前通道 1.0 幅度
m_BeamData[i][m_CurrentHChlId] = 0x7fff0000;

为什么发射校准要"只开一路"? 发射通道同时开多个,外部接收设备收到的是多路信号的矢量叠加,无法分离每路的贡献。逐路开启,一次测一路,干净利落。

3.3 发射校准的相位符号(与接收相反)

// 发射:相位取 -1 倍
I = (int)(rat*cos(m_CalibDataPhase[..]*(-1.0f)*normal_pi));
Q = (int)(rat*sin(m_CalibDataPhase[..]*(-1.0f)*normal_pi));

与内发射校准相同(见第 2 篇 §4.4),收发互易性要求符号相反。

四、外校准的 UART 串口流程

TRTestOpenUart:
  ├─ InitPort(COM, 波特率)  → 打开串口
  ├─ StartMonitoring()        → 启动接收线程
  └─ WriteToPort(0x5a)        → 发握手,请求位置帧

OnComm(每字节到达):
  0xa5 帧头 → 收 3 字节计数 → 拼完一帧
    ├─ Stm32Count == m_DataCount(位置连续)→ 有效 → SetTimer
    └─ 否则 → m_UartErrorCount++

位置帧的作用:转台/扫描机构每到一个新位置发一帧计数,软件据此知道"可以取下一个单元的数据了"。计数连续性校验是关键的可靠性设计——丢一帧就错位,必须有检测。

五、外校准结果文件

%.3fGHz_外校准H校准系数_20260807....txt
当前频率:9.100GHz
单元数:40
0.987654   12.345
...

同时保存"源数据"文件(校准前的原始幅相),便于事后分析。

六、一句话总结

外校准把信号引到天线口,用转台逐单元扫描,数学计算与内校准完全相同,但多了两件事:UART 位置同步和扫描方向的数据反转。 它校准的是"含天线在内的完整通道",比内校准更真实,代价是需要暗室/外场和外部仪器。

下一篇:WRSP6TK 雷达 TR 测试软件源码精讲(4):暗室接收波瓣图——模式 4

WRSP6TK 雷达 TR 测试软件源码精讲(3):外校准——接收与发射

评论加载中…