深入解析C2000 ePWM模块:PWM斩波、故障保护与数字比较的硬件闭环设计

发布时间:2026/7/19 10:41:06
深入解析C2000 ePWM模块:PWM斩波、故障保护与数字比较的硬件闭环设计 1. ePWM模块核心功能概览与设计思路在电机驱动、数字电源或者任何需要精密功率控制的领域PWM信号的生成与控制是系统的命脉。我们需要的不仅仅是一个能输出方波的定时器而是一个集成了波形生成、保护机制和智能事件响应的完整子系统。德州仪器TI的C2000系列微控制器尤其是TMS320F28003x其增强型PWMePWM模块正是为此而生。它远不止于基础的占空比调节其内部集成的PWM斩波PC、故障保护TZ和数字比较DC子模块构成了一个从“精细控制”到“坚固保护”的闭环。PWM斩波PC功能初看可能觉得它只是为了驱动脉冲变压器而设计但实际上它解决的是高频开关场景下的信号完整性与驱动效率问题。当PWM频率很高或者驱动线路存在较大寄生参数时一个简单的方波边沿可能会变得迟缓导致功率器件如MOSFET、IGBT的开关损耗剧增甚至引发桥臂直通。斩波功能将主PWM波“切碎”成一系列高频脉冲第一个脉冲的宽度和后续脉冲的占空比均可独立编程这相当于为栅极驱动注入了一个能量可调的“强心针”确保功率器件能快速、可靠地完成开关动作特别适用于基于隔离变压器或容性负载的栅极驱动电路。故障保护TZ子模块则是系统的“安全气囊”。在电机堵转、电源短路或过流等致命故障发生时系统的响应速度必须以纳秒计。TZ模块提供了多达6路TZ1-TZ6的故障输入通道支持两种关键的保护模式周期循环CBC和单次触发OSHT。CBC模式适用于电流限流等需要每个PWM周期都进行监控和快速响应的场景一旦故障消失下一个周期自动恢复实现了动态保护。而OSHT模式则用于处理过流、短路等严重故障一旦触发除非软件手动清除否则PWM输出将保持在被设定的安全状态如强制拉低防止故障扩大。这种分级、可配置的保护策略是构建高可靠性系统的基石。数字比较DC子模块我习惯称之为“硬件比较器的快速通道”。它直接将片内模拟比较器CMPSS的输出或外部数字信号通过交叉开关X-BAR映射到ePWM内部无需CPU干预即可生成触发事件。这意味着你可以用硬件实时比较电流采样值与设定阈值一旦越限立刻通过DC模块产生一个事件直接送给TZ模块进行保护动作或者送给事件触发ET模块去启动ADC转换。这条路径的延迟极短实现了真正的硬件级快速保护对于峰值电流控制等对时序要求苛刻的拓扑至关重要。将这三大功能协同工作你的PWM系统就具备了“手”精细控制、“眼”快速感知和“反射神经”瞬时保护的能力。下面我们就深入每个模块的细节看看如何配置和运用它们。2. PWM斩波PC子模块原理、配置与实战细节PWM斩波子模块的结构可以想象成一个位于最终输出级之前的“脉冲处理器”。它的输入是来自动作限定器AQ的标准PWM波EPWMxA/B输出则是经过调制后的斩波波形。其核心操作围绕三个参数展开第一个脉冲的宽度、后续维持脉冲的频率以及这些维持脉冲的占空比。2.1 单次脉冲One-Shot Pulse宽度编程第一个脉冲的宽度是可编程的其计算公式为T1stpulse TEPWMCLK × 8 × OSHTWTH。这里TEPWMCLK是系统时钟EPWMCLK的周期OSHTWTH是一个4位控制字取值范围是1到16对应十六进制0x0到0xF但注意0x0通常对应一个基准值具体需查手册。为什么是8倍这个“×8”的因子通常源于内部的一个固定预分频器或计数器结构目的是为了在较高的系统时钟频率下依然能生成一个宽度足够、能被可靠识别的初始脉冲。这个脉冲的宽度直接决定了注入到变压器初级侧或栅极的第一个能量包的大小。如果宽度太窄可能不足以让磁芯建立足够的磁场或让栅极电容充电到阈值电压如果太宽又可能造成磁饱和或过驱动。配置实操与参数选择假设你的EPWMCLK为80MHz周期12.5ns根据公式脉冲宽度范围是12.5ns * 8 * (1~16) 100ns ~ 1600ns。具体对应关系如下表所示OSHTWTH (十六进制)脉冲宽度 (纳秒)0x01000x12000x2300......0xF1600在代码中配置通常如下以TI的DriverLib库为例// 假设使用 ePWM1 EPWM_setChopperMode(EPWM1_BASE, EPWM_CHOPPER_MODE_ONE_SHOT); EPWM_setChopperOneShotPulseWidth(EPWM1_BASE, EPWM_CHOPPER_PULSE_WIDTH_400NS); // 例如选择400ns对应OSHTWTH3选择哪个值取决于你的驱动电路。对于常见的门极驱动变压器通常需要数百纳秒的脉冲来建立足够的伏秒积。一个实用的方法是先用示波器观察不加斩波时栅极波形的上升沿如果发现上升缓慢或有过冲则尝试启用斩波并从中间值如800ns开始调试观察栅极波形是否变得干净利落同时注意变压器温升是否异常。2.2 维持脉冲的占空比控制第一个强驱动脉冲之后系统会生成一系列高频的“维持脉冲”来保持功率器件的导通状态。这些脉冲的频率由PCCTL[CHPFREQ]位控制实际上是对PSCLK一个预分频后的时钟通常由系统时钟分频得到进行分频。而占空比则由PCCTL[CHPDUTY]位控制提供了从12.5%到87.5%共7个可选档位1/8, 2/8, ..., 7/8。这里的核心考量是防止脉冲变压器饱和。变压器传递的是交流脉冲如果维持脉冲的占空比是50%那么正负伏秒积相等理论上磁通会在一个平衡点附近摆动。但如果占空比偏离50%就会产生直流偏置长期累积会导致磁芯饱和励磁电流激增驱动失效甚至损坏。因此在绝大多数基于变压器的设计中应将CHPDUTY设置为50%即4/8。只有在一些特殊的容性耦合驱动或需要特殊波形调整的场景下才会考虑其他占空比。配置示例// 设置斩波器时钟分频决定维持脉冲的频率。例如PSCLK EPWMCLK / 1则维持脉冲频率为 EPWMCLK / (分频系数) EPWM_setChopperClockFreq(EPWM1_BASE, EPWM_CHOPPER_CLOCK_FREQ_SYSCLK_DIV_1); // CHPFREQ 配置 // 设置维持脉冲占空比为 50% EPWM_setChopperDutyCycle(EPWM1_BASE, EPWM_CHOPPER_DUTY_4_8); // CHPDUTY 配置为 4/8 // 最后使能斩波器 EPWM_enableChopper(EPWM1_BASE); 注意在调试斩波功能时务必使用带宽足够的示波器建议200MHz以上和高压差分探头观察栅极-源极Vgs波形。关注点包括第一个脉冲的幅度和宽度是否足够、维持脉冲的幅度是否稳定、以及关断时的波形是否有负压如果有的话且干净。任何振铃或畸变都可能预示着寄生参数或驱动参数不匹配。3. 故障保护TZ子模块架构、模式与应用策略故障保护是ePWM的“看门狗”其设计精髓在于灵活映射和分级响应。TZ1到TZ3来自GPIO复用引脚可以由外部比较器、霍尔传感器或其它故障信号驱动TZ4来自eQEP模块的错误信号TZ5连接系统时钟失效逻辑TZ6则来自CPU的EMUSTOP信号。这种多样化的信号源意味着你可以将硬件故障、软件故障至时钟异常都纳入统一的保护体系。3.1 周期循环CBC与单次触发OSHT模式详解CBC模式像是每个PWM周期都会重置的定时器。当配置为CBC的故障信号如TZ1有效时ePWM输出会立即执行预设动作如拉低同时置位TZFLG[CBC]标志并可能产生中断。关键在于这个故障锁存会在每个PWM周期结束时当计数器等于周期值PRD或零时取决于TZCLR[CBCPULSE]的配置自动清除。如果此时故障信号已经消失则下一个周期PWM输出恢复正常如果故障依然存在则保护动作再次生效。这种模式天然适用于峰值电流限制。例如在每个PWM周期内一旦电流采样值超过阈值触发TZPWM立即关断限制电流上升周期结束后新的周期开始PWM再次尝试开通实现了逐周期限流。OSHT模式则更像一个不可复位的锁存器。一旦触发除非你手动写TZCLR[OST]位来清除标志否则输出将一直保持在故障状态如高阻态。这用于处理过流保护、短路保护、过热保护等严重故障。触发后系统必须进入一种安全状态通常需要软件干预如故障诊断、重启流程后才能恢复。配置寄存器核心逻辑TZSEL选择哪些TZ信号或DC事件DCAEVT1/2, DCBEVT1/2作为故障源并指定它们是CBC还是OSHT类型。TZCTL定义当故障发生时EPWMxA和EPWMxB输出要采取的动作高阻、拉高、拉低、无动作。TZEINT使能特定故障源的中断。TZCLR用于手动清除OSHT标志或配置CBC的自动清除条件。3.2 数字比较DC事件作为故障源这是将保护速度提升到硬件级别的关键。你可以将片内模拟比较器CMPSS的输出直接连接到DCAH/DCAL或DCBH/DCBL信号然后在TZSEL寄存器中将DCAEVT1或DCBEVT1配置为OSHT源将DCAEVT2或DCBEVT2配置为CBC源。这样比较器的跳变直接触发保护动作完全绕过了CPU和软件中断延迟响应时间可以缩短到几十个纳秒级别。一个常见的电机相电流保护配置示例假设用CMPSS1监控U相电流当电流超过危险阈值时需要立即关闭所有上下桥臂即所有PWM输出低电平。// 步骤1: 配置输入X-BAR将CMPSS1输出连接到ePWM X-BAR的某个TRIPIN InputXbar_setInputPin(INPUT1_BASE, INPUT_SELECT_CMPSS1_GREATER, 10); // 假设映射到TRIPIN10 // 步骤2: 配置ePWM X-BAR将TRIPIN10连接到ePWM1模块的DCAH信号 EPWM_xbarSelectDCTriggerSignal(EPWM1_BASE, EPWM_DC_SIGNAL_DCAH, EPWM_DC_TRIGGER_TRIPIN10); // 步骤3: 配置ePWM1的TZ模块将DCAEVT1作为OSHT源并设置动作为强制拉低 EPWM_enableTripZoneSignals(EPWM1_BASE, EPWM_TZ_SIGNAL_DCAEVT1, EPWM_TZ_ACTION_EVENT_OSHT); EPWM_setTripZoneAction(EPWM1_BASE, EPWM_TZ_ACTION_EVENT_OSHT, EPWM_TZ_OUTPUT_A, EPWM_TZ_OUTPUT_LOW); EPWM_setTripZoneAction(EPWM1_BASE, EPWM_TZ_ACTION_EVENT_OSHT, EPWM_TZ_OUTPUT_B, EPWM_TZ_OUTPUT_LOW); // 步骤4: 可选使能OSHT中断用于记录故障日志 EPWM_enableTripZoneInterrupt(EPWM1_BASE, EPWM_TZ_INTERRUPT_OST); 重要心得在同时使用多个故障源例如既有外部TZ引脚又有内部DC事件时一定要仔细规划中断服务程序ISR。因为所有TZ中断可能共享一个中断向量EPWMx_TZINT。在ISR中你需要依次读取TZFLG、TZCBCFLG、TZOSTFLG等标志寄存器来确定具体的故障源并进行相应的处理如清除标志、记录错误码、执行安全序列。处理完毕后务必确认故障信号源已变为无效再清除标志位否则可能立即再次进入中断。4. 数字比较DC与事件触发ET子模块的协同设计数字比较DC子模块不仅是故障保护的“前哨”更是精密事件触发的“调度中心”。而事件触发ET子模块则负责管理这些事件并产生中断或ADC启动转换SOC信号。两者结合可以实现基于硬件状态的精准定时控制。4.1 DC模块的空白窗口Blanking Window功能在开关电源或电机驱动中功率器件开关瞬间会产生巨大的电压电流尖峰和噪声这可能会误触发比较器导致错误的保护或事件。DC模块的空白窗口功能就是为了滤除这些干扰而设计的。工作原理你可以定义一个时间窗口通常基于ePWM的时间基准计数器TBCTR在这个窗口内DC模块忽略输入信号DCAH/L DCBH/L的变化。这个窗口通常设置在PWM开关切换的瞬间。例如在同步Buck转换器中高侧MOSFET开通的瞬间低侧MOSFET的体二极管反向恢复会产生一个电压尖峰。你可以设置一个空白窗口在PWM上升沿后的一段短时间内屏蔽来自电流采样比较器的信号避免误触发过流保护。配置要点空白窗口的起始点和长度由DCBLANK和DCFOFFSET等寄存器控制它们通常与TBCTR的值进行比较。需要根据你的功率拓扑和开关频率仔细计算这个窗口的大小太小则无法有效滤噪太大则会牺牲保护响应速度。4.2 ET模块灵活的事件分频与SOC触发ET模块的核心价值在于其预分频Prescale能力。它允许你仅在每N次特定事件发生时才产生一次中断或启动一次ADC转换。这极大地减轻了CPU的中断负担。场景举例在电机FOC控制中我们通常在每个PWM周期中点采样相电流。假设PWM频率为10kHz如果每次计数器等于CMPA中点都触发ADC那么ADC中断频率也是10kHzCPU负载很高。通过ET模块我们可以设置ETSOCPS寄存器让SOCA事件每2个甚至每4个PWM周期才触发一次ADC转换即5kHz或2.5kHz采样同时通过CMPA寄存器的值确保采样点始终在PWM周期中点。这样在保证控制精度的前提下显著降低了CPU开销。配置流程选择事件源(ETSEL[SOCASEL])例如选择“CTR CMPA”当计数器向上计数时。设置事件分频(ETPS[SOCAPRD])例如设置为ETPS_SOCAPRD_2表示每2次事件产生一个SOC脉冲。使能SOCA生成(ETSEL[SOCAEN])。// 配置ET模块在CTRCMPA向上计数时每2个PWM周期触发一次ADC SOCA EPWM_setADCTriggerSource(EPWM1_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_U_CMPA); EPWM_setADCTriggerEventPrescale(EPWM1_BASE, EPWM_SOC_A, 2); // 每2次事件触发一次 EPWM_enableADCTrigger(EPWM1_BASE, EPWM_SOC_A); 避坑指南使用ET模块的事件分频时要特别注意计数器ETPS[INTCNT]或ETPS[SOCACNT]的清除时机。对于中断事件计数器在中断脉冲发出后被清除对于SOC事件计数器在脉冲发出后继续运行。如果你在调试时发现SOC触发频率不对检查是否在别的地方误清了这些计数器标志。另外ETFRC寄存器允许软件强制产生一个事件这在调试和初始化阶段非常有用可以手动触发一次ADC转换来校准采样。5. 高级应用基于CMPSS和DC的峰值电流模式控制实现峰值电流模式控制Peak Current Mode Control是开关电源中广泛使用的技术它通过逐周期限制电感电流的峰值来提高动态响应和稳定性。利用ePWM的DC和TZ模块可以高效地在硬件层面实现。系统框图与信号流采样与比较电感电流通过采样电阻转换为电压送入CMPSS模块的模拟比较器。比较器的反向输入端接电流设定值通常由DAC提供。事件生成CMPSS的输出COMPxOUT通过Input X-BAR和EPWM X-BAR被选择为ePWM模块的DCAH或DCAL信号例如当电流大于设定值时输出高。PWM关断在DC子模块中配置当DCAH为高时产生DCAEVT2事件。在TZ子模块中将DCAEVT2配置为CBC周期循环故障源并设置动作为强制拉低ePWM输出关断开关管。周期复位ePWM的时间基准计数器TBCTR在每个周期开始时从零开始向上计数。当电流达到峰值触发比较器时DC事件立即通过TZ关断PWM。这个关断状态会持续到当前PWM周期结束。当TBCTR回到零或周期值取决于计数模式CBC故障被自动清除ePWM输出在下一个周期重新开启从而实现逐周期峰值电流限制。关键配置与防误触措施正如技术手册第20.11.3节警告的要防止一个周期的故障状态“蔓延”到下一个周期。如果比较器触发信号在周期结束前N个时钟周期内仍保持有效由于数字滤波或门锁延迟故障状态可能在新周期开始时依然存在导致新周期立即被关断。解决方案使用空白窗口在PWM周期结束前提前开启DC事件的空白窗口屏蔽掉可能“拖尾”的故障信号。窗口需要持续到新周期开始后足够长的时间超过数字滤波延迟N个时钟。利用CMPSS锁存清除如果使用CMPSS的锁存输出COMPxLATCH可以在每个PWM周期结束前通过软件或ePWM自身的CMPC/D匹配事件产生一个早期的PWMSYNCPER信号清除锁存器确保新周期开始时比较器输出是无效的。合理设置数字滤波在CMPSS模块或ePWM的DC模块中都有数字滤波器。需要权衡滤波深度抗噪能力和带来的延迟。对于峰值电流控制延迟过大会影响限流精度。代码结构示意// 1. 配置CMPSS设定电流阈值输出极性等 CMPSS_configHighComparator(CMPSS1_BASE, cmpssHighConfig); // 配置高侧比较器 CMPSS_enableLatch(CMPSS1_BASE, CMPSS_LATCH_ENABLE); // 使能输出锁存可选 // 2. 配置X-BAR连接CMPSS1输出到ePWM1的DCAH InputXbar_setInputPin(INPUT1_BASE, INPUT_SELECT_CMPSS1_GREATER, 12); EPWM_xbarSelectDCTriggerSignal(EPWM1_BASE, EPWM_DC_SIGNAL_DCAH, EPWM_DC_TRIGGER_TRIPIN12); // 3. 配置ePWM1的DC模块定义DCAH高事件为DCAEVT2 EPWM_setDigitalCompareEventSource(EPWM1_BASE, EPWM_DC_MODULE_A, EPWM_DC_EVENT_2, EPWM_DC_EVENT_SOURCE_DCAH_HIGH); // 4. 配置ePWM1的TZ模块将DCAEVT2作为CBC源动作是拉低PWM输出关断 EPWM_enableTripZoneSignals(EPWM1_BASE, EPWM_TZ_SIGNAL_DCAEVT2, EPWM_TZ_ACTION_EVENT_CBC); EPWM_setTripZoneAction(EPWM1_BASE, EPWM_TZ_ACTION_EVENT_CBC, EPWM_TZ_OUTPUT_A, EPWM_TZ_OUTPUT_LOW); // 5. 关键配置DC事件空白窗口在PWM周期末尾屏蔽信号 EPWM_setDigitalCompareBlankingWindow(EPWM1_BASE, EPWM_DC_MODULE_A, windowStartCount, windowLength); // 6. 配置ePWM时间基准设置合适的周期和计数模式 EPWM_setTimeBasePeriod(EPWM1_BASE, periodValue); EPWM_setCountMode(EPWM1_BASE, EPWM_COUNT_MODE_UP); // 向上计数模式通过这样的硬件闭环峰值电流控制得以在极短的时间内完成不依赖于软件中断响应极大地提升了系统的可靠性和动态性能。这仅仅是ePWM高级功能的一个典型应用其灵活的模块化设计为各种复杂的电力电子控制策略提供了坚实的硬件基础。在实际项目中反复阅读手册中的波形图和寄存器描述结合示波器进行信号观测是理解和驾驭这些强大功能的唯一途径。