// 天线阵列相位测量 typedef struct { int antenna_count; // 天线单元数量 float reference_phase; // 参考相位 float phase_array[8]; // 各单元相位 float amplitude_array[8]; // 各单元幅度 } antenna_array_t; antenna_array_t measure_antenna_array(void) { antenna_array_t array; array.antenna_count = 4; // 测量参考单元 array.reference_phase = 0.0; // 参考单元定义为0° // 依次测量各单元与参考的相位差 for(int i = 1; i < array.antenna_count; i++) { // 切换测量通道 select_antenna_channel(0, i); // 参考单元vs第i单元 delay_ms(10); // 等待稳定 float phase_voltage = read_phase_voltage(); float gain_voltage = read_gain_voltage(); array.phase_array[i] = voltage_to_phase(phase_voltage); array.amplitude_array[i] = voltage_to_gain_db(gain_voltage); printf("单元%d: 相位=%.1f°, 幅度=%.1fdB\n", i, array.phase_array[i], array.amplitude_array[i]); } return array; } // 锁相环测试 void pll_phase_noise_test(void) { // 测量PLL输出与参考时钟的相位差 printf("PLL相位噪声测试\n"); const int SAMPLE_COUNT = 1000; float phase_samples[SAMPLE_COUNT]; // 采集相位数据 for(int i = 0; i < SAMPLE_COUNT; i++) { float phase_voltage = read_phase_voltage(); phase_samples[i] = voltage_to_phase(phase_voltage); delay_ms(1); } // 计算相位抖动 float mean_phase = calculate_mean(phase_samples, SAMPLE_COUNT); float phase_std = calculate_std_dev(phase_samples, SAMPLE_COUNT, mean_phase); printf("平均相位: %.2f°\n", mean_phase); printf("相位抖动: %.3f° RMS\n", phase_std); }