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为数据通道的典型功率变换控制链路。
二、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读取,用于磁场定向控制中的角度计算。
六、配置顺序与联动关系
实际配置时,建议按以下顺序进行,避免外设之间互相等待:
- 配置ePWM时基和比较寄存器,确定开关频率和死区。
- 配置ADC的触发源为ePWM SOC,设置采样窗口和通道。
- 配置CMPSS的DAC阈值和输出路径,连接到ePWM Trip Zone。
- 配置CLA任务,触发源设为ADCINT,编写控制律代码。
- 配置DMA,把ADC结果搬到CLA可访问的RAM区域。
- 最后使能ePWM输出,逐步加载功率级。
理解这些外设的联动关系,比单独记住每个寄存器的位定义更重要。在功率变换控制中,真正决定性能的往往不是算法本身,而是采样时刻是否准确、保护路径是否够快、控制环是否在正确的时间点更新PWM。C2000把这些环节做成硬件联动,目的就是让控制链路的时间确定性尽可能高。