1. 项目概述:基于TMS320F28335的EPWM移相控制技术
在电力电子和电机控制领域,多通道PWM信号的精确生成与相位控制一直是核心技术难点。传统方案依赖分立元件搭建模拟电路,不仅调试复杂,且难以实现高精度相位同步。我在最近一个中频电源项目中,采用TI的TMS320F28335 DSP芯片,通过其增强型PWM(EPWM)模块成功实现了6组共12路互补方波输出,并完成其中两组信号的90度移相控制。这个方案将开关频率稳定在225kHz,波形质量完全满足全桥LLC谐振变换器的驱动需求。
选择F28335主要基于三个考量:首先是其150MHz主频配合浮点运算单元,能轻松应对高频PWM的实时计算;其次是片上6组独立EPWM模块的硬件同步机制,相比软件模拟方案具有更高的相位精度;最后是TI完善的生态支持,从技术文档到开发工具链都大幅降低了开发门槛。实测表明,这种全数字化解决方案比我们之前用的FPGA方案节省了30%的BOM成本,且调试周期缩短了一半。
2. EPWM模块硬件架构与工作原理
2.1 TMS320F28335芯片关键特性
这款DSP采用32位浮点内核,最突出的特点是其专为电力电子控制优化的外设配置。除了6组EPWM模块外,还集成了16通道12位ADC、增强型捕获模块(eCAP)以及CAN2.0B通信接口。在时钟架构上,芯片通过锁相环(PLL)将外部30MHz晶振倍频至150MHz,为EPWM提供精准的时钟基准。特别要注意的是GPIO复用功能——EPWM1A/1B到EPWM6A/6B信号固定映射到GPIO0-11引脚,这种硬件绑定关系既简化了PCB布线,又避免了软件配置错误。
2.2 EPWM模块内部结构解析
每个EPWM模块包含五个关键子模块:
- 时基模块(TB):核心是32位计数器,支持递增、递减和增减计数三种模式。在225kHz配置下,我们采用增减计数模式,计数器从0累加到CMPA再递减归零,这样每个周期能产生两个对称的边沿,有效降低谐波失真。
- 比较模块(CC):包含CMPA和CMPB两个影子寄存器,在周期匹配点自动加载新值。通过动态修改这些寄存器,可以实现实时占空比调整。
- 动作限定模块(AQ):根据时基和比较事件触发输出动作。例如配置为"CTR=CMPA时拉高,CTR=PRD时拉低",就能生成标准PWM波形。
- 死区模块(DB):通过上升沿和下降沿延迟电路,确保互补信号不会同时导通。我们设置300ns死区时间,这个值要根据功率管开关特性调整。
- 故障保护模块(TZ):当检测到过流信号时,能在100ns内强制EPWM输出高阻态,这个硬件级保护机制比软件中断响应快10倍以上。
2.3 移相控制实现机制
移相的本质是控制各模块计数器的初始相位偏移。通过配置TBPHS相位寄存器,当接收到同步信号(SYNCOUT)时,从模块会延迟指定时钟周期再启动计数。对于90度移相,计算公式为:
code复制相位偏移值 = (PWM周期 × 移相角度) / 360°
在150MHz系统时钟和225kHz开关频率下,一个PWM周期包含666个时钟脉冲(150MHz/225kHz),因此90度移相对应的TBPHS值应设置为166(666/4取整)。实测表明,这种硬件移相比软件模拟方案的相位抖动小于1ns。
3. 系统设计与工程实现
3.1 硬件电路设计要点
虽然EPWM输出可直接驱动栅极驱动器,但在实际PCB布局时仍需注意:
- 每组互补信号走线长度差要控制在5mm以内
- EPWMx信号与功率地之间预留测试点
- 所有驱动信号走线远离高频开关节点
- 在GPIO引脚串联22Ω电阻可抑制振铃
我们采用的驱动芯片是TI的UCC21520,其4A拉/灌电流能力足以驱动1200V/100A的SiC MOSFET。特别注意死区时间要大于MOSFET的存储时间(通常500ns左右),否则会发生桥臂直通。
3.2 软件配置流程
在CCS开发环境中,EPWM初始化遵循以下步骤:
c复制// 时基模块配置
EPwm1Regs.TBPRD = 333; // 周期值=SYSCLK/(2*PWM频率)-1
EPwm1Regs.TBPHS.half.TBPHS = 0; // 基准相位清零
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 增减计数模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; // 使能相位加载
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // 同步信号输入
// 比较模块配置
EPwm1Regs.CMPA.half.CMPA = 166; // 50%占空比
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 影子寄存器模式
// 动作限定配置
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 增计数匹配时置高
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 减计数匹配时置低
// 死区配置
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
EPwm1Regs.DBRED = 45; // 上升沿延迟=45*6.67ns≈300ns
EPwm1Regs.DBFED = 45; // 下降沿延迟
对于移相模块(如EPWM5),只需额外配置:
c复制EPwm5Regs.TBPHS.half.TBPHS = 166; // 90度相位偏移
3.3 同步信号处理技巧
所有EPWM模块通过EPWM1的SYNCOUT信号级联同步。在硬件设计时,建议在SYNCIN引脚上加0.1μF去耦电容,避免同步信号受噪声干扰。软件上要注意同步时序:
- 先配置所有EPWM模块参数
- 最后使能EPWM1的SYNCOUT输出
- 延迟至少两个PWM周期再检测波形
4. 实测问题与解决方案
4.1 波形抖动问题排查
初期测试发现移相通道存在约5ns的随机抖动。通过以下步骤定位问题:
- 用差分探头测量时钟信号,确认150MHz时钟干净稳定
- 检查电源纹波,发现3.3V电源有20mVp-p噪声
- 在芯片电源引脚增加10μF钽电容后,抖动降至1ns以内
4.2 死区时间异常
当尝试将开关频率提升至300kHz时,实测死区时间比设定值大50%。这是因为DBRED/DBFED寄存器的分辨率受限于EPWM时钟分频比。解决方法是将时基时钟预分频从1改为2(HSPCLK=75MHz),此时每个死区步进变为13.3ns,更利于精细调整。
4.3 常见配置错误
-
现象:所有EPWM无输出
检查:确认GPIO复用配置(GpioCtrlRegs.GPAMUX1) -
现象:互补信号同相
检查:AQCTL配置是否正确,特别是CAD/CAU动作 -
现象:移相角度偏差大
检查:TBPHS值是否计算正确,SYNC信号是否稳定
5. 工程优化建议
对于需要动态调整移相角的场合,可以采用以下两种方案:
- 影子寄存器更新:在CTR=PRD中断中修改TBPHSHS(影子寄存器),新值在下个周期生效,这种方式无毛刺
c复制interrupt void epwm1_isr(void) {
EPwm5Regs.TBPHS.half.TBPHSHS = new_phase;
EPwm1Regs.ETCLR.bit.INT = 1; // 清除中断标志
}
- HRPWM高分辨率模式:启用MEP(微边沿定位)功能,可实现150ps级的分辨率。但要注意这会占用部分系统带宽,建议仅在需要微调时使用。
在LLC谐振变换器应用中,我们还开发了基于EPWM的变频控制算法。通过实时调整TBPRD值改变开关频率,同时保持移相角度恒定,这种方案比传统模拟控制环路响应速度快10倍以上。一个完整的工程示例包含:
- 频率-相位解耦控制算法
- ADC采样中断服务程序
- 故障保护状态机
- 串口调试接口
这套控制系统已成功应用于3kW服务器电源模块,实测效率达到96.2%(230VAC输入,48V输出)。相比上一代模拟控制方案,体积缩小40%,成本降低25%。