4. ADC与PWM外设配置

在数字电源控制中,ADC与PWM是控制环路的“眼睛”和“手”。ADC负责把输出电压、电感电流、输入电压等模拟量转换为数字量,PWM负责把控制算法算出的占空比转换为驱动功率管的开关信号。两者若配置不当,即使控制算法正确,也会出现采样噪声大、环路相位滞后、占空比抖动、桥臂直通等问题。本节围绕四个关键配置点展开:ADC采样时序、触发源选择、PWM分辨率与死区设置、ADC-PWM同步机制。

一、ADC采样时序:采样窗口与转换时间

ADC的采样时序由采样保持阶段和逐次逼近转换阶段组成。以常见的12位SAR ADC为例,采样阶段内部采样电容对输入信号充电,充电时间常数由采样开关电阻和采样电容决定。若采样窗口过短,采样电容未充分建立,转换结果会偏低或偏高,表现为采样值随源阻抗变化而漂移。工程上通常要求采样窗口至少覆盖5~7个RC时间常数,使建立误差小于0.5 LSB。

假设某MCU的ADC采样开关等效电阻为1.2 kΩ,采样电容为4 pF,则时间常数τ = 1.2 kΩ × 4 pF = 4.8 ns。若要求7τ建立,采样窗口至少需要约34 ns。若外部串联了1 kΩ限流电阻,源阻抗增大,τ变为约8.8 ns,采样窗口需延长到约62 ns。因此,在配置ADC时,不能只看转换时间,还要根据实际源阻抗设置足够的采样窗口。多数MCU通过寄存器设置采样周期数,例如STM32的SMPR寄存器可选1.5、7.5、13.5、28.5、41.5、55.5、71.5、239.5个ADC时钟周期。若ADC时钟为60 MHz,选择28.5周期对应约475 ns,足以覆盖大多数电源采样场景。

此外,采样时序还受ADC时钟分频影响。ADC时钟过高会降低转换精度,过低则延长总转换时间。一般建议ADC时钟不超过器件手册规定的上限,例如STM32F4系列ADC时钟上限为36 MHz,F3系列为72 MHz。在数字电源中,通常选择适中的ADC时钟,使总转换时间(采样+转换)小于PWM周期的一定比例,避免占用过多CPU时间或影响环路更新率。

二、触发源选择:软件触发与硬件触发

ADC触发源分为软件触发和硬件触发。软件触发由CPU写寄存器启动,适合低速监控或非实时采样;硬件触发由定时器、PWM事件或外部信号启动,适合与开关周期严格同步的实时采样。在数字电源中,电感电流和输出电压的采样必须与PWM周期同步,否则采样值会随开关纹波变化,导致环路不稳定。

常见硬件触发源包括:定时器更新事件、定时器比较事件、PWM的零点或峰值事件、外部GPIO边沿。以STM32为例,ADC可配置为TIM1的TRGO触发,而TIM1的TRGO可映射为更新事件、比较事件或刹车事件。对于峰值电流控制,通常在PWM周期中点触发ADC采样电感电流,此时电流接近平均值;对于平均电流控制,可在周期起点或终点采样。选择触发源时,需确认触发信号与PWM波形的相位关系,避免在开关噪声最大的时刻采样。

三、PWM分辨率与死区设置

PWM分辨率决定占空比的最小调节步进。若PWM时钟为120 MHz,开关频率为200 kHz,则一个周期有600个计数,分辨率约为1/600 ≈ 0.167%。若采用高分辨率定时器,可进一步细分到150 ps级别。分辨率不足会导致占空比量化误差,表现为输出电压纹波增大或环路极限环振荡。在数字电源中,通常要求PWM分辨率至少比ADC分辨率高一个数量级,以保证控制精度。

死区设置用于防止桥臂上下管直通。死区时间过短会导致直通短路,过长会降低有效占空比并增加谐波。死区时间应根据功率管开关时间和驱动电路延迟确定。例如,某MOSFET开通延迟为50 ns,关断延迟为80 ns,驱动芯片延迟为30 ns,则死区时间至少应大于80 ns + 30 ns = 110 ns,通常取150~200 ns留裕量。死区时间可通过定时器的死区寄存器设置,如STM32的BDTR寄存器,支持0~1008 ns范围(取决于时钟)。死区时间会直接减少有效占空比,在计算占空比时需补偿。

ADC-PWM同步采样与死区时序关系 PWM周期起点 下一周期 高侧PWM 低侧PWM 死区 t_dead ADC触发点 (周期中点) 采样窗口 t_sample 转换 t_conv 总转换时间 = t_sample + t_conv 配置要点 触发点选在纹波中点 死区时间覆盖开关延迟 采样窗口满足建立时间

四、ADC-PWM同步机制与实现

ADC-PWM同步的核心是让ADC在PWM周期的固定相位点采样,使采样值只反映该时刻的电流或电压,避免开关纹波混入。实现方式通常有三种:

  1. 定时器TRGO触发:将PWM定时器的更新事件或比较事件映射为TRGO,ADC配置为外部触发。例如,设置TIM1的TRGO为更新事件,ADC在计数器归零时启动采样,此时电感电流处于周期起点。
  2. PWM事件触发:部分MCU支持PWM模块直接产生ADC触发信号,如TI的C2000系列通过EPWM的SOC信号触发ADC,可精确到时钟周期级。
  3. 中断同步:在PWM中断中软件启动ADC,但会引入中断延迟抖动,适合对相位要求不高的场合。

以STM32G4为例,配置步骤如下:首先将TIM1配置为中心对齐模式,ARR设为600,产生200 kHz PWM;然后将TIM1的TRGO选择为更新事件;接着将ADC1配置为外部触发,触发源选择TIM1_TRGO,采样时间设为28.5周期,ADC时钟设为60 MHz;最后使能ADC连续转换或单次转换。这样,每个PWM周期中点,ADC自动采样一次,转换完成后产生EOC中断,CPU在中断中读取结果并执行控制算法。

需要注意的是,ADC转换完成到控制算法更新占空比之间存在计算延迟。若控制算法在ADC中断中执行,则占空比更新会发生在下一个PWM周期,形成一拍延迟。为减小延迟,可采用“采样-计算-更新”流水线:在当前周期采样,计算后在下个周期起点更新比较寄存器。若MCU支持PWM比较寄存器预装载,可在周期中点写入新值,在更新事件时生效,从而将延迟压缩到半个周期以内。

实践建议:在调试ADC-PWM同步时,可用示波器同时观察PWM驱动波形和ADC触发信号(可通过GPIO翻转标记)。若触发点落在开关沿附近,应调整触发源相位或增加RC滤波。若采样值跳动大,优先检查采样窗口是否足够、源阻抗是否过高、地线是否干净。

五、配置检查清单

检查项 典型值/要求 判断依据
ADC采样窗口 ≥7τ,如475 ns 采样值不随源阻抗漂移
ADC时钟 ≤器件上限,如36 MHz 转换结果稳定,无丢码
触发源 TIM1_TRGO更新事件 采样点位于纹波中点
PWM分辨率 ≥10位,如600计数 占空比步进≤0.2%
死区时间 150~200 ns 无直通,有效占空比损失可接受
同步延迟 ≤半个PWM周期 环路相位裕度足够

以上配置完成后,建议先用固定占空比开环运行,用示波器观察ADC采样值与实际电压的对应关系,确认采样点正确、无异常跳变。再逐步闭合电压环,观察负载阶跃响应,若出现振荡,优先检查采样时序和死区补偿是否合理。ADC与PWM的协同配置是数字电源稳定运行的基础,需要在理解时序关系的前提下,结合具体器件手册逐项验证。