
1. ePWM模块深度解析从基础PWM到高级保护与控制的跃迁在电力电子和电机驱动的世界里PWM脉冲宽度调制技术就像是系统的“心跳”它精准地控制着功率开关的导通与关断从而驾驭电流与电压。然而基础的PWM输出往往不足以应对工业应用中的复杂挑战比如如何高效驱动隔离型栅极如何在微秒级内响应过流故障又如何将外部模拟信号无缝融入数字控制环路。德州仪器TIC2000系列微控制器中的增强型PWMePWM模块正是为解决这些高阶需求而生。它远不止一个简单的定时器加比较器而是一个集成了时间基准、动作限定、死区控制、故障保护、事件触发及数字比较等子系统的精密控制引擎。今天我们就抛开手册式的罗列深入ePWM的三个核心高级功能——PWM斩波PC、故障保护TZ和数字比较DC结合实际的工程场景拆解其设计逻辑、配置要点以及那些手册上不会写的“踩坑”经验。2. PWM斩波PC子模块为脉冲变压器栅极驱动“量身定制”在许多中高压或需要电气隔离的功率应用中比如IGBT或SiC MOSFET的驱动常会使用脉冲变压器进行隔离和电平转换。PWM斩波子模块的核心使命就是优化这类基于脉冲变压器的栅极驱动设计。2.1 核心需求与工作原理脉冲变压器有个关键特性磁芯可能会饱和。如果施加一个长时间的单极性脉冲变压器磁通会持续增加直至饱和导致励磁电流激增失去变压作用甚至损坏驱动电路。传统的连续PWM波直接驱动变压器就有此风险。PWM斩波的思路很巧妙它将输入的原始PWM波EPWMxA进行“二次调制”输出一个高频的、占空比可调的脉冲串EPWMxA_out。这个脉冲串的平均电压与原始PWM波一致但因其高频交变的特性使得施加在脉冲变压器原边的电压正负交替磁通在一个高频周期内就能复位从而从根本上避免了直流偏磁导致的饱和。其工作流程可以这样理解使能与分频通过PCCTL[CHPEN]位使能斩波功能。PCCTL[CHPFREQ]位设置斩波载波频率即对系统时钟EPWMCLK进行分频通常除以8产生斩波时钟PSCLK。首脉冲生成One-Shot当输入的原始PWM信号EPWMxA变为高电平时斩波器会先产生一个宽度可编程的独立首脉冲。这个脉冲的宽度由OSHTWTH4位值1-16寄存器控制计算公式为T1stpulse T_EPWMCLK × 8 × OSHTWTH。例如当EPWMCLK80MHz周期12.5nsOSHTWTH设置为0x4时首脉冲宽度为12.5ns × 8 × 5 500ns。这个较宽的首脉冲旨在为变压器提供足够的初始能量快速建立栅极电压。持续脉冲生成Duty Cycle Control首脉冲结束后在原始PWM信号保持高电平期间斩波器会以PSCLK为时钟产生一系列持续的、占空比可编程的脉冲。占空比通过PCCTL[CHPDUTY]3位选择范围从12.5%1/8到87.5%7/8。这些持续脉冲的作用是维持栅极电压在所需的水平。实操心得首脉冲宽度的选择首脉冲宽度 (OSHTWTH) 的设定是关键。宽度不足可能导致栅极电压上升太慢开关损耗增加宽度过大则可能引起过冲或额外的损耗。通常需要结合变压器的匝数比、原边电压以及功率管栅极总电荷Qg来估算。一个实用的方法是在空载条件下用示波器观察功率管栅极电压波形调整OSHTWTH使栅极电压能在原始PWM开通沿后的100-200ns内达到平台电压如15V的90%以上。这能确保快速开通。2.2 寄存器配置与波形解读配置PWM斩波模块主要涉及PCCTL寄存器PCCTL[CHPEN]: 斩波器使能位。置1开启。PCCTL[OSHTWTH]: 首脉冲宽度选择位。根据上述公式和系统时钟计算所需值。PCCTL[CHPDUTY]: 持续脉冲占空比选择位。需根据变压器和驱动电路特性调整。PCCTL[CHPFREQ]: 斩波时钟分频选择。通常使用默认的/8分频在80MHz系统时钟下产生10MHz的斩波频率。更高的斩波频率可以减小变压器体积但会增加开关损耗。生成的波形特性如下原始PWM为低时斩波器输出恒为低。原始PWM上升沿立即产生一个宽度为T1stpulse的首脉冲。原始PWM高电平期间首脉冲结束后以PSCLK为周期产生指定占空比的持续脉冲串。原始PWM下降沿立即停止脉冲输出变为低电平。注意事项避免次谐波振荡斩波频率PSCLK与主PWM频率之间应避免成整数倍关系否则可能产生次谐波振荡导致电流纹波或噪声增大。例如主PWM开关频率为100kHz斩波频率设为1MHz10倍关系就比设为1.1MHz要好。在实际中可以轻微调整EPWMCLK的分频比或主PWM频率来破坏这种倍数关系。3. 故障保护Trip-Zone子模块电力电子系统的“紧急制动”故障保护子模块是ePWM的安全核心它负责实时监控外部故障信号并在异常发生时以最快的速度对PWM输出采取强制措施保护功率开关和负载。其响应速度可达纳秒级是软件保护无法比拟的。3.1 故障输入源与映射TMS320F28003x提供了多达6个故障输入源TZ1-TZ6它们可以灵活地映射到任何一个ePWM模块TZ1, TZ2, TZ3来源于GPIO复用引脚通常连接硬件比较器、过流检测芯片或其它数字故障信号。TZ4来源于EQEP模块的错误信号反向用于编码器故障保护。TZ5连接至系统时钟失效逻辑用于检测时钟故障。TZ6来源于CPU的EMUSTOP信号通常在调试器暂停时触发。通过TZSEL寄存器可以为每个ePWM模块独立选择启用哪些TZ信号作为其故障源。这种灵活性允许不同的功率桥臂响应不同的故障条件。3.2 两种关键保护模式CBC与OSHT故障保护子模块支持两种至关重要的动作模式理解它们的区别是正确应用的关键3.2.1 周期循环Cycle-By-Cycle, CBC模式触发逻辑当被选为CBC源的TZ信号有效低电平时立即触发保护动作。动作清除自动清除。只要当前PWM周期结束计数器归零或达到周期值且故障信号已消失保护动作即自动解除下一个PWM周期正常输出。如果故障信号持续存在则每个PWM周期都会在故障发生时立即动作周期结束时尝试恢复。应用场景电流限流。这是最常见的应用。例如在电机驱动中设置一个略高于额定值的电流阈值。一旦检测到过流TZ信号有效立即关闭PWM强制为低或高阻限制电流上升。在本周期结束后若过流消失系统自动恢复运行实现“打嗝”式保护。相关寄存器TZSEL[CBCn]选择CBC源TZCTL[TZA/TZB]设置动作TZCLR[CBCPULSE]与计数器联动实现自动清除。3.2.2 单次触发One-Shot, OSHT模式触发逻辑当被选为OSHT源的TZ信号有效时立即触发保护动作。动作清除手动清除。一旦触发PWM输出将被锁定在设定的安全状态如强制低即使故障信号随后消失输出也不会恢复。必须通过软件写TZCLR[OST]位来清除故障标志PWM输出才能恢复正常。应用场景严重故障保护如短路、直通、严重过流。这故障需要系统彻底停机等待工程师干预检查。OSHT模式确保故障发生后系统保持安全状态防止自动恢复导致故障扩大。相关寄存器TZSEL[OSHTn]选择OSHT源TZCTL[TZA/TZB]设置动作TZCLR[OST]用于软件清除。3.3 保护动作与配置详解当故障触发时可以对EPWMxA和EPWMxB输出独立配置四种动作之一通过TZCTL寄存器的[TZA]和[TZB]位域设置TZCTL[TZA/TZB] 位设置EPWMx 输出动作说明00高阻抗 (Hi-Z)输出引脚变为高阻态。常用于驱动桥的上管关闭下管可根据需要配置为其他动作。01强制高电平 (Force High)输出强制为高电平。10强制低电平 (Force Low)最常用。强制输出低电平立即关闭连接的功率开关假设低电平关断。11无变化 (No Change)忽略此次故障输出不受影响。可用于屏蔽某些非关键故障源。配置示例与陷阱规避假设一个三相逆变器使用ePWM1和ePWM2驱动两个桥臂。要求TZ1硬件过流信号触发时ePWM1桥臂1上下管全部强制关断低电平并锁存OSHTePWM2桥臂2进入高阻态也锁存。// 配置 ePWM1 对 TZ1 进行 OSHT 保护动作强制为低 EALLOW; EPwm1Regs.TZSEL.bit.OSHT1 1; // 使能 TZ1 作为 ePWM1 的 OSHT 源 EPwm1Regs.TZCTL.bit.TZA TZ_FORCE_LO; // TZA 强制低 (2) EPwm1Regs.TZCTL.bit.TZB TZ_FORCE_LO; // TZB 强制低 (2) // 配置 ePWM2 对 TZ1 进行 OSHT 保护动作高阻 EPwm2Regs.TZSEL.bit.OSHT1 1; // 使能 TZ1 作为 ePWM2 的 OSHT 源 EPwm2Regs.TZCTL.bit.TZA TZ_HIZ; // TZA 高阻 (0) // EPwm2Regs.TZCTL.bit.TZB TZ_NO_CHANGE; // TZB 无变化如果需要的话 EDIS;致命陷阱初始化顺序绝对不要在ePWM模块使能并开始输出后再去动态修改GPIO多路复用器INPUTxSELECT或TZSEL寄存器中关于TZ信号源的选择。在切换X-BAR连接的瞬间可能会产生一个毛刺信号被TZ子模块误认为有效的故障边沿导致PWM被意外关断。正确的顺序是系统初始化时先配置好所有GPIO和X-BAR映射。然后配置ePWM模块的TZSEL等寄存器。最后才使能ePWM计数器TBCTL[CTRMODE]不为0开始输出。 如果运行时必须更改务必先清除TZSEL寄存器中对应的位禁用故障源修改X-BAR配置后再重新设置TZSEL。3.4 中断处理与状态管理故障触发后除了硬件自动动作通常还需要软件介入进行故障记录、系统状态机切换等。这通过TZ中断实现。中断使能通过TZEINT寄存器使能特定故障源的中断如CBC、OST。中断标志故障发生时TZFLG寄存器中相应的标志位CBC、OST会被置1。同时TZCBCFLG或TZOSTFLG寄存器会指示具体是哪个TZ信号TZ1-TZ6或DC事件触发的。中断服务程序ISR流程读取TZFLG和TZCBCFLG/TZOSTFLG确定故障源和类型。执行安全逻辑关闭其他相关外设如ADC采样、设置故障标志、保存系统状态。对于CBC中断在ISR中通常只需清除TZFLG[CBC]和TZCBCFLG标志。硬件动作已自动清除。对于OSHT中断这是关键。必须在确认故障源信号TRIPIN已变为无效高电平后才能先清除TZOSTFLG标志再清除TZFLG[OST]标志。如果故障信号仍有效时就清除标志可能会立即触发新的OSHT中断导致系统“锁死”在中断服务程序中。清除PIE中断标志退出ISR。4. 数字比较DC子模块连接模拟世界与数字保护的桥梁数字比较子模块将ePWM的保护和事件触发能力从简单的数字引脚TZ扩展到了片内模拟比较器CMPSS输出实现了更高集成度和更快速的模拟量故障响应。4.1 核心功能与信号流DC子模块的核心是两组比较信号数字比较A高/低DCAH/DCAL和数字比较B高/低DCBH/DCBL。这些信号并非直接来自GPIO而是通过一个复杂的信号选择网络DCTRIPSEL寄存器生成其来源可以是片内模拟比较器子系统CMPSS的输出。外部GPIO引脚通过Input X-BAR引入。其他内部错误信号如ECC错误、PIE向量错误。组合输入Trip Combination Input这是一个强大功能允许将最多15个不同的故障输入源通过DCAHTRIPSEL等寄存器选择进行逻辑“或”操作结果作为DCAH/DCAL等信号。这意味着你可以将多个独立的故障条件如三相电流过流、直流母线过压、温度过高组合成一个综合故障信号来触发保护。这些DCAH/L和DCBH/L信号经过组合通过TZDCSEL寄存器配置逻辑关系如DCAH !DCAL后可以生成四种数字比较事件DCAEVT1、DCAEVT2、DCBEVT1、DCBEVT2。这些事件可以直接连接到故障保护TZ子模块作为故障源触发CBC或OSHT保护。事件触发ET子模块作为ADC启动转换SOC的触发源。时间基准TB子模块产生同步信号。4.2 消隐窗口对抗噪声的利器在开关电源或电机驱动中功率器件开关瞬间会产生巨大的电压电流尖峰和噪声可能被灵敏的比较器误判为故障。DC子模块内置的消隐窗口Blanking Window功能就是为了滤除这些特定时间段内的噪声。其原理是在每一个PWM周期内定义一个“危险时段”通常位于开关瞬态附近在此期间屏蔽Blanking掉数字比较事件使其不会传递到TZ或ET模块。消隐窗口的起点和终点可以通过寄存器如DCBLANK配置通常与PWM计时器TBCTR的值挂钩。配置示例避免开关噪声误触发假设一个Buck电路高侧MOSFET在PWM周期开始时开通此时电流采样信号会有开通尖峰。我们希望在此后1us内屏蔽过流保护。// 假设 PWM 频率 100kHz周期 10usTBPRD 1000 (对应10us) EPwm1Regs.DCBLANK.bit.BLANKINV 0; // 常规消隐窗口内屏蔽 EPwm1Regs.DCBLANK.bit.BLANKWIN 100; // 消隐窗口宽度 100个TBCLK周期 (假设TBCLK100MHz, 即1us) EPwm1Regs.DCBCTL.bit.BLANKSEL DC_BLANK_SEL_TBCTR; // 消隐窗口基于TBCTR EPwm1Regs.DCBCTL.bit.BLANKPOL DC_BLANK_ACTIVE_HIGH; // 高电平有效 // 假设我们希望从计数器为0PWM周期开始时启动消隐窗口 EPwm1Regs.DCBCTL.bit.PULSESEL DC_PULSE_SEL_TBCTR_ZERO; // 在TBCTR0时启动消隐窗口这样在每个PWM周期开始后的1us内来自CMPSS的过流信号将被忽略有效防止误触发。4.3 使用CMPSS实现峰值电流模式控制与防误触在峰值电流模式控制中我们期望每个PWM周期内当电感电流达到设定峰值时由CMPSS触发一次ePWM的CBC事件提前关闭开关管。这里有一个经典陷阱故障信号的“拖尾”效应。问题描述CMPSS输出或经过数字滤波后的故障信号其有效宽度可能超过一个PWM周期。如果故障信号在周期末尾例如TBCTR接近PRD时才撤销由于数字滤波或DC子模块本身的延迟假设为N个时钟周期ePWM的故障逻辑可能直到一个周期开始后N个周期才看到信号撤销。这导致新的PWM周期一开始就检测到“残留”的故障条件立即触发保护开关管无法正常开通。解决方案系统设计确保电流峰值比较点离PWM周期结束有足够的安全裕量 N个时钟周期。利用消隐窗口在PWM周期结束前例如PRD - M启动消隐并持续到下一个周期开始后一段时间例如N个周期主动屏蔽周期切换附近的故障信号。这需要精确计算窗口位置。使用CMPSS锁存与软件清除如果CMPSS配置为锁存模式COMPxLATCH可以在每个PWM周期结束前通过软件或由ePWM的CMPC/CMPD匹配事件产生的早期PWMSYNCPER信号清除锁存器COMPSTSCLR强制故障信号在周期结束前复位。经验之谈调试DC与CMPSS联调初次调试DC配合CMPSS进行保护时极易因时序问题导致保护异常。建议按以下步骤进行静态测试先不接功率电路用函数发生器模拟CMPSS输入信号观察DC事件标志位TZFLG[DCAEVT1]等和ePWM输出是否能正确响应。确认信号通路和逻辑配置正确。注入已知故障在轻载或空载条件下通过软件强制TZFRC或短暂拉低故障测试引脚验证CBC和OSHT动作是否符合预期。动态测试带载逐步增加负载并使用示波器多通道同时捕获通道1功率管电流采样信号CMPSS输入。通道2CMPSS输出或DC事件信号。通道3ePWM输出。 观察故障触发、消隐窗口动作以及PWM输出的实际响应时序微调消隐窗口位置和宽度。5. 事件触发ET子模块精准的时序调度器事件触发子模块是ePWM与CPU中断和ADC启动转换协同工作的桥梁。它允许在特定的、与PWM波形严格同步的时刻触发中断或ADC采样这对于实现电流环、电压环等闭环控制算法至关重要。5.1 事件源与预分频ET子模块可以监控多种事件源包括时间基准事件CTR0,CTRPRD,CTR0或PRD。计数器比较事件CTRCMPA/CMPB/CMPC/CMPD并可区分递增CTRUCMPx和递减CTRDCMPx计数方向。数字比较事件DCAEVT1.soc,DCBEVT1.soc。通过ETSEL寄存器选择用于触发中断INTSEL或ADC SOCSOCASEL,SOCBSEL的具体事件。更强大的是其预分频功能ETPS,ETINTPS,ETSOCPS寄存器。它允许不是每个事件都触发而是每第N个事件触发一次。例如在交错并联PFC中两个通道的PWM相位差180度可以设置INTPRD2让中断只在主通道的CTRPRD时触发从而在一个中断服务函数中处理两个通道的控制算法节省CPU资源。5.2 中断与SOC生成逻辑深度解析以中断生成为例SOC逻辑类似事件选择ETSEL[INTSEL]选择事件源如CTRCMPA。事件计数每当选定事件发生时中断事件计数器ETPS[INTCNT]或ETINTPS[INTCNT2]加1。周期比较ETPS[INTCNT]的值与ETPS[INTPRD]中断周期进行比较。中断触发条件仅当INTCNT INTPRD且中断使能ETSEL[INTEN]1且中断标志ETFLG[INT]0无未处理中断时才会产生中断脉冲同时ETFLG[INT]置1INTCNT清零。中断挂起处理如果INTCNT达到INTPRD时ETFLG[INT]1上一个中断还未被服务则计数器INTCNT会停止在INTPRD值直到标志位被软件清除ETCLR[INT]1后INTCNT才清零并重新开始计数。这确保了不会丢失事件计数但中断服务程序必须及时清除标志位。高级功能计数器初始化ETCNTINIT和ETCNTINITCTL寄存器允许在特定的同步事件如EPWMxSYNCI或软件强制下将INTCNT2/SOCACNT2/SOCBCNT2计数器初始化为一个预设值。这在多模块同步且需要错相触发中断/ADC的场景中非常有用。例如三个并联的逆变器模块希望它们的ADC采样时刻依次相差120度。可以配置它们从同一个同步信号开始但为每个模块的SOC计数器设置不同的初始值从而实现采样时刻的精确相位偏移。5.3 配置流程与常见问题标准配置流程选择事件源配置ETSEL寄存器确定由哪个PWM事件如CTRPRD来触发。设置预分频配置ETPS或ETINTPS/ETSOCPS寄存器设置事件计数周期INTPRD,SOCAPRD等。使能置位ETSEL[INTEN]或ETSEL[SOCAEN]/SOCBEN。中断配置在PIE控制器中使能对应的ePWM中断并编写中断服务函数。ADC关联如果用于触发ADC需在ADC模块中配置相应的SOC触发源为对应的ePWM SOC。常见问题中断不触发或触发过于频繁中断不触发检查ETFLG[INT]是否已置1但未清除。中断标志必须在ISR中手动清除写ETCLR[INT]1否则后续中断会被阻塞。触发过于频繁确认INTPRD是否设置为0。INTPRD0会禁用事件计数器导致任何写入ETFRC[INT]或事件发生都不会计数。通常应设置为1每个事件都触发或更大值。SOC触发ADC但采样值不对检查ADC的采样窗口SH时间是否足够。ePWM的SOC脉冲是一个很窄的时钟脉冲必须确保ADC的采样保持电路能在脉冲有效期内完成采样。有时需要调整ADC的采样时钟分频或使用更长的SOC脉冲宽度如果ePWM支持配置。6. 系统集成与实战避坑指南将PWM斩波、故障保护和数字比较三大功能集成到一个完整的电机驱动或数字电源项目中需要系统的规划和细致的调试。6.1 初始化顺序与依赖关系一个稳健的ePWM初始化顺序应遵循“自底向上先静后动”的原则时钟与引脚配置系统时钟初始化所有将用作PWM输出、故障输入TZ、比较器输入CMPSS的GPIO引脚。务必在此时设置好Input X-BAR和ePWM X-BAR的映射关系。模拟前端配置CMPSS模块设置比较阈值、迟滞、滤波参数等。ePWM模块静态配置 a.时间基准TB设置周期TBPRD、计数模式、相位等。 b.计数器比较CC设置CMPA、CMPB等初始占空比。 c.动作限定器AQ设置输出动作置高、置低、翻转。 d.死区DB如果需要配置死区时间。 e.故障保护TZ配置TZSEL选择故障源TZCTL设置保护动作。此时先不使能ePWM输出。f.数字比较DC配置DCTRIPSEL选择信号源TZDCSEL设置事件逻辑DCBLANK配置消隐窗口。 g.事件触发ET配置中断和SOC事件源及分频。 h.PWM斩波PC如果需要配置斩波参数。使能与动态运行 a. 使能ePWM计数器TBCTL[CTRMODE] 0x2等开始产生PWM。 b. 使能TZ中断TZEINT和ET中断ETSEL[INTEN]。 c. 在PIE中使能全局中断。6.2 调试技巧与故障排查当ePWM系统行为异常时可以按以下步骤排查无输出或输出恒定检查TZFLG寄存器看是否触发了故障保护且被锁存OSHT。检查TZ输入引脚电平。检查TBCTL[CTRMODE]确认计数器已使能。检查AQCTLA/B寄存器动作配置是否正确。使用CCS的寄存器实时查看功能监控TBCTR是否在循环计数。保护功能不动作确认TZSEL寄存器中对应故障源已使能。确认故障信号有效电平低有效及脉宽。TZ信号需要至少3个TBCLK周期的低电平才能被可靠锁存。如果使用DC子模块和CMPSS检查DCTRIPSEL和TZDCSEL配置用示波器对比CMPSS输出和DCAEVT标志位。检查消隐窗口是否意外屏蔽了真实的故障信号。中断或ADC SOC不触发检查ETFLG寄存器看事件标志是否已置位。如果置位但无中断检查PIE配置和全局中断使能。检查ETSEL选择的事件是否确实发生例如CMPA值是否在TBCTR计数范围内。对于ADC SOC检查ADC模块的SOC配置和触发源选择是否正确。PWM斩波波形异常确认PCCTL[CHPEN]已使能。测量PSCLK频率是否符合预期EPWMCLK/8。检查首脉冲宽度是否合理持续脉冲占空比是否设置正确。过高的占空比可能导致变压器偏磁。6.3 性能优化考量中断频率ET中断的频率直接影响CPU负载。在满足控制带宽的前提下尽量使用预分频降低中断频率。对于高速控制环如50kHz考虑使用CLA协处理器来卸载ePWM中断任务。故障响应时间从故障发生到PWM输出被强制动作的延迟时间至关重要。它由GPIO输入同步、数字滤波如果使能、TZ逻辑传播等路径决定。在计算系统保护阈值时必须将这个延迟时间考虑在内。通常不使能数字滤波可以获得最快的响应。资源分配在复杂的多轴电机控制系统中ePWM模块、TZ输入、CMPSS资源都是有限的。需要在架构设计阶段就规划好每个电机轴、每个桥臂所需的资源并注意TZ信号可以通过X-BAR灵活路由但物理引脚可能有限。ePWM模块的这些高级功能将微控制器从简单的波形发生器提升为了一个具备实时保护、精密时序控制和模拟接口的智能功率控制核心。掌握它们意味着你能设计出更可靠、更高效、更紧凑的电力电子系统。真正的精通来自于在调试中观察每一个信号理解每一个寄存器位带来的波形变化以及在实际故障中验证保护逻辑的可靠性。