1. ePWM模块基础与工业应用场景

在工业自动化和电力电子领域,精确的PWM(脉宽调制)控制是电机驱动和电源管理的核心。28系列芯片的ePWM模块提供了高度灵活的配置选项,能够满足复杂系统的时序同步需求。我在实际项目中多次使用这个模块,特别是在三相电机控制和交错式电源设计中,ePWM的同步机制表现得非常稳定。

ePWM模块包含8个子模块,每个都有特定功能。时基模块负责生成基础计时,计数器比较模块控制占空比,动作限定模块决定输出行为,死区模块防止上下桥臂直通,斩波模块生成高频载波,跳闸模块处理故障保护,事件触发模块连接ADC采样,数字比较模块提供高级触发逻辑。这种模块化设计让工程师可以针对具体应用灵活配置。

在电机控制中,多个ePWM模块需要精确同步才能产生正确的相电压。我记得在一个BLDC电机项目中,三个ePWM模块分别控制三相桥臂,通过同步机制确保120度相位差,实现了平稳的旋转磁场。电源应用中,交错并联的Buck转换器也需要严格的相位同步,以降低输入电流纹波。

2. 时基模块的深入解析与配置

时基模块是ePWM的核心,它决定了所有事件的时序基准。配置时首先要设置时基时钟TBCLK,这是EPWMCLK经预分频后的时钟。预分频值通过TBCTL寄存器的HSPCLKDIV和CLKDIV位设置,支持的分频比从/1到/128。实际项目中我通常先用默认分频,根据实际需求再调整。

时基计数器有三种工作模式:上升计数模式产生非对称PWM,下降计数模式也是非对称,上下计数模式产生对称PWM。在电机控制中,对称PWM能减少谐波失真,所以我多数情况下选择上下计数模式。计数模式通过TBCTL的CTRMODE位设置。

周期寄存器TBPRD的值决定PWM频率。计算公式很简单:PWM频率 = TBCLK频率 / TBPRD(上下模式)或PWM频率 = TBCLK频率 / (2 × TBPRD)(上升/下降模式)。我通常先用计算值,然后用示波器微调。记得有一次调试时发现PWM频率偏差,结果是TBCLK分频设置错误。

影子寄存器机制是关键特性。当启用影子模式(TBCTL[PRDLD]=0),写入TBPRD的值先存入影子寄存器,在特定同步事件后才加载到有效寄存器。这避免了运行时修改参数导致的脉冲紊乱。工业电机控制中,经常需要在线调整频率,影子寄存器保证了平滑过渡。

3. 同步机制详解与实战配置

同步是ePWM最强大的功能之一。每个模块都有SYNCI(同步输入)和SYNCO(同步输出),可以构建复杂的同步链。同步源可以是外部引脚、软件触发或数字比较事件。我在多模块协同中经常使用菊花链同步方式。

基础配置步骤:首先通过EPWMSYNCINSEL寄存器选择同步源,可以是外部GPIO或内部信号。然后设置TBCTL[PHSEN]使能相位加载,当检测到SYNCI脉冲时,时基计数器会立即加载TBPHS寄存器的值。这允许精确设置模块间的相位关系。

相位控制很实用。通过设置不同的TBPHS值,可以让多个模块产生特定相位差的PWM。在三相逆变器中,我设置三个模块的相位差为0、120、240度,完美生成三相电压。TBPHS的值计算:所需相位角度/360° × TBPRD(上下模式)或所需相位角度/360° × 2×TBPRD(上升/下降模式)。

全局同步TBCLK很重要。通过设置TBCLKSYNC位,所有ePWM模块的时基时钟在同一个上升沿启动,确保完全同步。但要注意,各模块的预分频设置必须相同,否则同步无效。我有次调试时忘了这点,导致同步失败,花费半天才找到问题。

硬件同步有固定延迟。如果TBCLK等于EPWMCLK,延迟为2个EPWMCLK周期;如果TBCLK较慢,延迟为1个TBCLK周期。在设计精密时序时要考虑这个延迟,特别是高频应用。我通常留出10%的时序余量。

4. 高级同步功能与链路配置

EPWMXLINK寄存器提供了更高级的同步能力。它允许将多个模块的寄存器链接,实现真正的同时更新。在变频应用中特别有用,可以避免因寄存器更新不同步导致的波形畸变。

CMPA、CMPB、CMPC、CMPD和TBPRD都支持链接。例如,将ePWM2的CMPA与ePWM1的CMPA链接后,写入ePWM1的CMPA会自动更新ePWM2的CMPA。我在多相交错电源中大量使用这个功能,确保各相参数完全一致。

全局加载机制进一步增强了同步性能。通过GLDCTL和GLDCFG寄存器,可以配置在特定事件同时更新所有启用模块的影子寄存器。支持的事件包括CTR=PRD、CTR=0、SYNCI等。我通常在CTR=0时全局加载,这是最安全的时刻。

单次加载模式适合特殊场景。设置GLDCTL2[OSHTLD]可以在下次同步事件时执行一次性全局加载,然后自动禁用。这在需要单次精确同步的场合很实用,比如特定角度的脉冲触发。

同步输出配置灵活。SYNCO可以源自多种事件:SYNCI事件、CTR=PRD、CTR=0、CTR=CMPB等。通过TBCTL2和TBCTL3寄存器配置。我通常用CTR=PRD作为SYNCO源,这样每个PWM周期产生同步脉冲。

5. 实际应用中的配置示例

以三相电机控制为例,配置三个ePWM模块协同工作。首先配置模块1为主模块,设置所需PWM频率和计数模式。假设使用上下模式,TBCLK=100MHz,要求PWM频率=10kHz,则TBPRD=100MHz/(2×10kHz)=5000。

设置模块1的SYNCO为CTR=PRD,这样每个PWM周期输出同步脉冲。模块2和模块3的SYNCI连接到模块1的SYNCO。设置模块2的TBPHS=1667(120度相位差),模块3的TBPHS=3333(240度相位差)。这样三个模块就产生了对称的三相PWM。

配置死区时间防止直通。通过DBCTL寄存器使能死区,DBRED设置上升沿延迟,DBFED设置下降沿延迟。延迟时间计算:所需时间 × TBCLK频率。我通常从2%周期开始调试,根据实际开关特性调整。

故障保护配置很重要。设置TZSEL选择故障源,可以是外部引脚或数字比较器。配置TZCTL定义故障动作:强制高、强制低或高阻态。我在电机驱动中配置为故障时强制所有输出低,立即停止电机。

事件触发配置连接ADC。通过ETSEL选择触发源(如CTR=PRD),设置ETPS定义触发分频。这样可以在特定时刻自动触发ADC采样,实现闭环控制。我通常在PWM周期中点采样电流,这时读数最准确。

6. 调试技巧与常见问题解决

调试ePWM时,我习惯先验证基础配置。用示波器检查PWM输出是否正常,频率和占空比是否符合预期。如果无输出,检查时钟使能位和输出强制状态。有时GPIO复用配置错误会导致输出无法到达引脚。

同步问题最常见。如果模块不同步,首先检查SYNCI信号是否到达。可以用软件强制同步(设置SWFSYNC位)测试同步功能。还要检查各模块的预分频设置是否一致,这是常见的疏忽。

影子寄存器更新时机很重要。如果发现参数更新不及时,检查影子加载事件设置。在调试变频应用时,我遇到过因为加载时机不当导致的波形跳跃,调整PRDLDSYNC位后解决。

死区时间需要精细调整。太短可能直通,太长降低效率。我用双踪示波器观察上下桥臂的波形,确保有足够死区且没有重叠。实际需要的死区时间比理论值稍大,要留有余量。

噪声干扰可能引起误触发。在工业环境中,我遇到过同步信号被干扰导致系统失步的情况。增加硬件滤波(配置GPxQSEL)和软件去抖(使用数字比较模块过滤)后改善。

7. 性能优化与高级特性

为了优化性能,我经常使用高分辨率PWM。通过HRPWM模块,可以实现ps级的时间分辨率。配置HRPCTL启用高分辨率模式,然后通过HRPWR调整精度。这在精细调压场合特别有用。

数字比较模块提供高级保护功能。可以设置消隐窗口忽略开关噪声期间的故障信号,避免误触发。还可以配置延迟触发,在故障后延迟一段时间再动作,防止瞬时过流误保护。

斩波模块适合驱动IGBT。通过设置PCCTL生成载波频率,CHPFREQ定义频率,CHPDUTY设置占空比。这可以改善开关特性,减少电磁干扰。我通常在电机驱动中启用这个功能。

全局加载预分频节省CPU资源。设置GLDCTL[GLDPCP]可以在N次同步事件后才实际更新寄存器,减少中断负担。在高速应用中这个功能很实用,但我建议先从1:1分频开始调试。

单次同步模式适合特殊应用。配置TBCTL2[OSHTSYNCMODE]和[OSHTSYNC]可以产生单次同步脉冲,用于触发特殊事件。我在位置控制中用过这个功能,在特定角度触发同步。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐