3. C2000实时控制外设总览与配置

在功率变换器里,实时控制的本质是一条“采样—比较—决策—动作”的闭环链路。C2000之所以适合做数字电源、电机驱动和光伏逆变,并不是因为CPU主频有多高,而是因为它把这条链路中的关键环节都做成了硬件外设,并且这些外设之间可以互相触发、互相联动,几乎不需要CPU逐点干预。理解这一点的关键,是把每个外设放回它在控制链路中的位置,而不是孤立地记寄存器。

一、把外设映射到控制链路上

以一路典型的Buck变换器为例,控制链路可以拆成五个环节:功率级状态感知、模拟量采样、保护比较、控制律计算、PWM动作输出。C2000的外设正好一一对应:

  • ePWM:产生驱动功率管的PWM,同时它还是整条链路的“时间基准”。它的计数器零点、周期点、比较点可以产生SOC(Start of Conversion)信号去触发ADC,也可以产生中断去触发CLA或CPU。
  • ADC:把输出电压、电感电流等模拟量转成数字量。它由ePWM触发,采样时刻与PWM开关动作严格对齐,避免开关噪声污染采样。
  • CMPSS:模拟比较器加斜坡补偿,用于逐周期限流和过流保护。它可以在ADC结果还没算完之前,直接把ePWM的输出封掉,响应时间在纳秒级。
  • DAC:输出模拟参考或调试波形,也可以给CMPSS提供可编程的阈值。
  • eCAP:捕获外部脉冲的边沿,用于测量频率、占空比或过零时刻。
  • eQEP:正交编码器接口,用于电机位置和速度测量。
  • CLA:控制律加速器,独立于CPU执行浮点控制算法,直接读取ADC结果、写ePWM比较寄存器。
  • DMA:在ADC结果、ePWM寄存器和内存之间搬运数据,不占用CPU周期。

把这些关系画成一张链路图,比逐个背外设功能更容易记住它们为什么存在。下图给出的是以ePWM为时间基准、ADC+CMPSS为感知与保护、CLA为计算核心、DMA为数据通道的典型功率变换控制链路。

C2000功率变换实时控制链路(以ePWM为时间基准) ePWM 计数器 / 比较 / 死区 SOC触发 · 中断源 ADC Vout / IL / Vin 采样 与PWM同步,避开开关噪声 CMPSS 模拟比较 + 斜坡补偿 逐周期限流 / 过流封波 CLA 电压环 / 电流环计算 直接读写ADC与ePWM DMA ADC结果搬运 ePWM寄存器批量更新 DAC 模拟参考 / 调试波形 为CMPSS提供阈值 eCAP 捕获边沿 / 测频测占空比 过零检测 eQEP 正交编码器接口 位置 / 速度测量 功率级 半桥 / 全桥 / 三相 驱动 + 功率管 SOC触发 比较 ADC结果 比较值写入 搬运 阈值 封波 触发 位置/频率 驱动 PWM

二、ePWM:不只是输出PWM,而是整条链路的时间基准

ePWM的核心是时基计数器TBCTR,它按TBCLK递增或增减计数。配置时先确定三个量:开关频率、计数模式和死区时间。以开关频率100kHz、系统时钟100MHz为例,若采用增减计数,则周期寄存器TBPRD = 100MHz / (2 × 100kHz) = 500。增减计数的好处是PWM对称,谐波特性好,同时可以在计数器零点触发ADC采样,正好落在开关管导通的中点,避开开关瞬间的振铃。

ePWM的比较事件可以产生SOC信号。典型配置是:CMPA在计数器上升沿匹配时触发ADC采样,CMPB在下降沿匹配时触发第二个采样点,用于采样电感电流的平均值。这样ADC的采样时刻完全由硬件决定,不受中断延迟影响。ePWM还可以产生死区,防止半桥上下管直通,死区时间根据功率管开关速度和驱动能力设定,通常在100ns到500ns之间。

三、ADC与CMPSS:感知与保护的分工

ADC负责精确测量,CMPSS负责快速保护,两者分工明确。ADC的配置要点是采样窗口和触发源。采样窗口要足够长,让采样保持电容充分充电,但也不能太长,否则会采到开关噪声。以12位ADC、采样窗口10个ADCCLK为例,若ADCCLK为50MHz,则采样窗口为200ns,对于大多数电流采样电路是够用的。

CMPSS的响应路径不经过ADC和CPU,它直接把模拟输入与DAC设定的阈值比较,输出送到ePWM的Trip Zone。一旦过流,ePWM在一个时钟周期内把PWM输出拉到安全状态。这个路径的延迟通常在几十纳秒量级,远快于软件保护。CMPSS内部还有斜坡补偿,用于峰值电流模式控制中抵消次谐波振荡。

四、CLA与DMA:把CPU从实时任务中解放出来

CLA是一个独立的浮点协处理器,它可以响应ADC中断,执行控制律计算,然后把结果直接写入ePWM比较寄存器。CLA的任务触发源可以配置为ADCINT,这样整个控制环从采样到更新PWM全部由硬件和CLA完成,CPU只负责慢速任务,比如通信、状态机和故障记录。

DMA则用于批量数据搬运。比如ADC在多个通道上轮流采样,DMA可以把结果自动搬到内存数组,供CLA或CPU使用。DMA也可以把预先计算好的PWM占空比序列搬到ePWM寄存器,实现开环波形输出。DMA的触发源可以是ADCINT、ePWM SOC或软件触发。

五、eCAP与eQEP:外部事件的测量接口

eCAP用于捕获外部脉冲的边沿,测量频率、占空比或过零时刻。在光伏逆变器中,eCAP可以捕获电网电压过零点,用于并网同步。eQEP用于正交编码器,测量电机转子的位置和速度。eQEP的计数方向由A、B两相的相位关系决定,位置计数器的值可以直接被CLA读取,用于磁场定向控制中的角度计算。

六、配置顺序与联动关系

实际配置时,建议按以下顺序进行,避免外设之间互相等待:

  1. 配置ePWM时基和比较寄存器,确定开关频率和死区。
  2. 配置ADC的触发源为ePWM SOC,设置采样窗口和通道。
  3. 配置CMPSS的DAC阈值和输出路径,连接到ePWM Trip Zone。
  4. 配置CLA任务,触发源设为ADCINT,编写控制律代码。
  5. 配置DMA,把ADC结果搬到CLA可访问的RAM区域。
  6. 最后使能ePWM输出,逐步加载功率级。
调试时可以先让ePWM输出固定占空比,用示波器观察PWM和ADC采样时刻是否对齐;再逐步加入CMPSS保护,用可调电源模拟过流,确认Trip Zone能在预期时间内封波;最后再让CLA接管控制环,观察输出电压是否稳定。

理解这些外设的联动关系,比单独记住每个寄存器的位定义更重要。在功率变换控制中,真正决定性能的往往不是算法本身,而是采样时刻是否准确、保护路径是否够快、控制环是否在正确的时间点更新PWM。C2000把这些环节做成硬件联动,目的就是让控制链路的时间确定性尽可能高。