如果片上 ADC 替换为外部 ADC(例如通过 SPI 连接的 Σ-Δ 器件),则需要进行以下更改:
- 在 adc_config.c 文件中 — 将 ADC_readMetrologyData() 函数内的 ADC_readNormalized() 函数调用替换为对外部 ADC 驱动程序的调用。该函数必须将归一化的浮点(以零为中心,满量程约为 ±1.0)写入 workingData→rawVoltageData[PHASE_x] 和 workingData→rawCurrentData[PHASE_x]。归一化约定为:
normalized = (raw_sample - dc_offset) / gain
其中,dc_offset 和 gain 是上述相同的两点校准常量,应用于外部 ADC 的原始输出计数。
- 在 adc_config.h 文件中 — 删除或替换 ADC_VA_RESULT | ADC_VA_SOC 宏定义,因为 SysConfig 菜单中生成的名称不再适用。改为定义驱动程序所需的常量。ADC_VOLTAGE_DC_OFFSET、ADC_CURRENT_DC_OFFSET、ADC_VOLTAGE_GAIN 和 ADC_CURRENT_GAIN 保持有效,必须设置为匹配外部 ADC 的分辨率和前端增益。
- 在 .syscfg 文件中 — 如果未使用片上 ADC,请删除 ADCA 和 ADCB 外设实例,以避免消耗存储器和时钟资源。
- 在 metrology_main_file.c 文件中 — 如果外部 ADC 使用数据就绪中断而不是计时器触发器,则将 ADC_readMetrologyData() 和 Metrology_perSampleProcessing() 函数调用从 cpuTimer0ISR 函数移至外部 ADC 中断处理程序中。验证 ISR 是否以与 SAMPLE_RATE 相同的速率执行。
- 在 template.h 文件中 — PHASE_x_VOLTAGE_SCALE_FACTOR 和 PHASE_x_CURRENT_SCALE_FACTOR 宏仍必须反映外部 ADC 模拟前端的物理缩放,因为计量引擎使用这些宏将归一化样本转换为电压和电流值。