C2000 ePWM死区与故障保护:从原理到实战的电机驱动安全指南

📅 2026/7/23 19:56:50
C2000 ePWM死区与故障保护:从原理到实战的电机驱动安全指南
1. 项目概述为什么我们需要关注ePWM的死区与保护在电力电子和电机驱动的世界里PWM脉冲宽度调制信号就像是控制电机转速、调节电源电压的“指挥官”。但这位指挥官下达的“开”和“关”指令如果同时发给上下两个开关管比如一个H桥的上下臂就会导致电源直接短路瞬间产生巨大的电流烧毁功率器件——这就是致命的“桥臂直通”Shoot-Through问题。因此一个合格的“指挥官”必须懂得在发出“关断”指令和下一个“开通”指令之间插入一个短暂的“静默期”确保一个管子完全关断后另一个管子才被允许开通。这个关键的“静默期”就是死区时间Dead Time。而死区生成器Dead-Band Generator就是ePWM模块中专门负责精确制造这个静默期的硬件电路。它不是你用软件延时能简单替代的其精度和可靠性直接关系到系统的效率和寿命。然而仅有精准的“指挥”还不够系统还必须具备应对突发危机的“反射神经”。当电流过大、电压过高或温度超标时系统必须在微秒级甚至纳秒级的时间内做出反应强制PWM输出进入安全状态拉高、拉低或高阻并通知CPU。这就是故障保护Trip-Zone机制存在的意义。它像是一个独立的“安全卫士”不依赖于CPU的轮询通过硬件直接干预PWM输出为整个功率系统提供了最后一道也是最关键的一道安全防线。本文将深入TI C2000系列DSP中ePWM模块的这两个核心子模块。我不会只复述数据手册的寄存器描述而是结合我十多年在电机控制和电源开发中踩过的坑、调过的板为你拆解死区生成的五种经典模式如何对应不同的驱动芯片故障保护的“单次触发”与“周期循环”在过流保护中如何抉择以及如何通过数字比较Digital Compare实现更智能的故障判断。无论你是正在调试第一个逆变器的新手还是寻求优化现有系统可靠性的老手这里都有你能直接“抄作业”的配置逻辑和避坑指南。2. 死区生成器DB子模块不只是简单的延时死区时间本质上是在一对互补的PWM信号EPWMxA和EPWMxB的边沿之间插入的可编程延迟。很多人以为死区就是简单的“双边延时”但实际上ePWM的死区生成器提供了极其灵活的配置以适应不同拓扑如半桥、全桥和不同驱动芯片要求高电平有效、低电平有效或互补带死区的需求。2.1 核心工作原理与寄存器概览死区生成器位于动作限定器AQ之后。它接收来自AQ的原始PWM信号EPWMxA_In, EPWMxB_In经过内部逻辑输出最终带死区的信号对EPWMxA, EPWMxB。其核心控制围绕三个寄存器展开DBCTL死区控制寄存器这是大脑决定工作模式。IN_MODE: 选择延迟块的输入信号源。是只用EPWMxA_In作为两个延迟的源还是用EPWMxA_In和EPWMxB_In交叉作为源这决定了你处理的是对称PWM还是非对称PWM。OUT_MODE: 输出模式控制。决定是应用上升沿延迟RED、下降沿延迟FED还是两者都应用或者都旁路。POLSEL: 极性选择。决定是否对经过延迟后的信号进行取反以生成Active High Complementary (AHC) 或 Active Low Complementary (ALC) 等模式。HALFCYCLE: 半周期时钟使能。当使能时死区定时器时钟频率加倍2 x TBCLK从而将死区时间分辨率提高一倍。这对于需要极精细死区控制的高频应用如GaN、SiC器件驱动至关重要。DBRED上升沿延迟计数寄存器一个10位寄存器定义上升沿延迟的时钟周期数。DBFED下降沿延迟计数寄存器一个10位寄存器定义下降沿延迟的时钟周期数。延迟时间的计算是基础中的基础死区时间 寄存器值 (DBRED或DBFED) × TBCLK周期 (TTBCLK)如果使能了半周期时钟HALFCYCLE1则公式变为死区时间 寄存器值 × (TTBCLK / 2)例如系统时钟VCLK4100MHzTBCLK预分频为VCLK4/2即50MHz则TTBCLK 20ns。若设置DBRED50则上升沿死区时间为50 * 20ns 1000ns 1μs。使能半周期时钟后分辨率变为10ns同样的1μs死区需要设置DBRED100。实操心得死区时间设置多少合适这不是一个随便填的数。它必须大于功率器件如MOSFET、IGBT的关断时间Turn-off time并留有一定裕量通常为关断时间的1.5到2倍。你需要查阅你所用的功率器件数据手册中的t_f下降时间和t_d(off)关断延迟时间参数。例如一个IGBT的关断时间为500ns那么死区时间至少应设置为750ns到1μs。设置过小会导致桥臂直通设置过大会导致输出波形畸变降低电压利用率尤其在低占空比时影响明显。2.2 五种经典死区模式深度解析与选型指南数据手册中列出了7种模式但最常用、最能覆盖绝大多数工业驱动场景的是前5种“经典模式”。理解这5种模式你就掌握了90%的死区应用。假设前提在讨论这些模式时我们默认DBCTL[IN_MODE]配置为模式0即EPWMxA_In同时作为上升沿延迟RED和下降沿延迟FED的输入源。同时假设AQ模块产生的是一个占空比为D0D100%的、高电平有效的原始PWM波EPWMxA_In。模式模式描述DBCTL[POLSEL]DBCTL[OUT_MODE]输出波形特征典型应用场景1直通模式XXEPWMxA_Out EPWMxA_InEPWMxB_Out EPWMxB_In调试阶段禁用死区功能时使用。2高有效互补 (AHC)1011EPWMxA和EPWMxB为互补对称波形高电平有效中间插入死区。最常用模式。适用于驱动芯片输入为高电平有效的半桥或全桥电路。死区插入在互补信号的边沿切换处。3低有效互补 (ALC)0111EPWMxA和EPWMxB为互补对称波形低电平有效中间插入死区。适用于驱动芯片输入为低电平有效的场景。波形是AHC模式的反相。4高有效 (AH)0011EPWMxA和EPWMxB同相均为高电平有效但EPWMxB的上升沿相对于EPWMxA有RED延迟下降沿有FED延迟。适用于控制两个需要错相开通的开关管但并非严格互补的场景。例如某些有源钳位正激变换器。5低有效 (AL)1111EPWMxA和EPWMxB同相均为低电平有效边沿延迟关系同AH模式。AH模式的反相版本用于低有效驱动。重点解析AHC模式模式2 这是电机驱动和逆变器中最最常用的模式。它的工作流程如下原始信号AQ产生一个高有效的PWM波EPWMxA_In。延迟处理该信号同时送入RED和FED延迟单元。生成互补对EPWMxA_Out 原始信号经过下降沿延迟FED后的信号。EPWMxB_Out 原始信号取反后再经过上升沿延迟RED后的信号。POLSEL10实现了对RED路径信号的取反最终效果你得到了一对互补的、高电平有效的PWM信号。当EPWMxA从高变低时它会先延迟FED时间再变低与此同时EPWMxB需要从低变高但它会在EPWMxA变低后再等待RED时间才变高。这样在切换瞬间两者之间存在一段同时为低电平的死区时间。避坑指南RED和FED必须设置成一样的值吗不一定。在经典的AHC/ALC互补模式下通常将RED和FED设置为相同的值以产生对称的死区。但在某些特殊拓扑或为了优化特定损耗时可能会采用不对称死区。例如在硅基IGBT中关断时间通常比开通时间长有人会尝试将关断侧的死区对应另一个管子的开通延迟设置得略大一点。但务必谨慎需要精确测量和验证不对称死区可能引入直流偏置等问题。对于绝大多数应用设置成相同值是最安全、最通用的做法。2.3 高级配置输入模式IN_MODE的妙用DBCTL[IN_MODE]的灵活性被很多人忽视。它允许你为RED和FED选择不同的信号源。这有什么用场景你正在做一个双向DC-DC变换器需要生成四路PWM分别控制H桥的四个管子。AQ模块已经通过比较器CMPA和CMPB生成了两路独立的、占空比可调的PWMEPWMxA_In和EPWMxB_In它们并非简单的互补关系。需求你需要为这两路信号分别插入独立且可能不同的死区。配置你可以设置IN_MODE让EPWMxA_In的下降沿触发其自身的FED让EPWMxB_In的上升沿触发其自身的RED。这样DB模块实际上是在独立处理两路信号为它们各自的边沿添加延迟而不是生成一个互补对。这突破了“死区仅用于互补信号”的思维定式。3. 故障保护Trip-Zone子模块系统的紧急制动如果说死区是预防“交通事故”的交通规则那么Trip-Zone就是汽车的“安全气囊”和“ABS系统”。它是一个纯硬件的快速保护机制响应速度远快于软件中断。3.1 故障信号源与寄存器框架ePWM模块可以响应多达6路故障信号TZ1~TZ6和4路来自数字比较子模块DC的事件TZ1~TZ3来自GPIO引脚通常连接硬件比较器输出、过流检测芯片的信号或紧急停止按钮。低电平有效。TZ4由两个正交编码器错误信号EQEP1ERR和EQEP2ERR逻辑或产生用于电机位置传感器故障保护。TZ5连接系统时钟失效逻辑OSCFAIL或PLL Slip用于检测时钟异常。TZ6连接CPU调试模式停机指示方便在调试时强制PWM进入安全状态。DCAEVT1/2, DCBEVT1/2来自数字比较子模块的内部事件可以通过编程在模拟比较器输出满足特定条件时触发保护实现更复杂的保护逻辑如逐周期限流。核心控制寄存器如下TZSEL选择寄存器决定本ePWM模块响应哪些TZ信号或DC事件并指定其触发模式CBC或OSHT。TZCTL控制寄存器定义当故障发生时EPWMxA和EPWMxB输出引脚应被强制为何种状态高、低、高阻、无变化。TZEINT中断使能寄存器使能特定故障源触发CPU中断。TZFLG标志寄存器指示哪个故障源触发了保护。TZCLR清除寄存器软件清除标志位。TZFRC强制寄存器软件模拟故障事件用于测试。3.2 两种核心保护模式OSHT与CBC这是理解Trip-Zone的关键选择哪种模式取决于故障的性质和处理方式。1. 单次触发One-Shot, OSHT模式行为当指定的故障信号如TZ1有效时ePWM输出立即被强制为TZCTL设定的安全状态如强制为低。此后PWM输出将一直保持在此安全状态即使故障信号已经消失。恢复必须由软件手动清除故障标志向TZCLR[OST]写1并重新使能PWM输出通常需要重新配置AQ或TB寄存器系统才能恢复正常PWM输出。应用场景严重的、不可自恢复的故障。例如硬件过流保护OCP电流超过硬件设定的危险阈值必须立即停机并等待人工干预。紧急停止E-Stop按下急停按钮后系统必须彻底锁死直到按钮复位并软件确认。短路故障发生直通短路必须彻底关断。配置示例将急停按钮接到TZ1引脚配置为OSHT模式TZCTL设置输出强制为低。一旦按下按钮电机立即停止松开按钮也不会转动必须在软件中清除故障并重启。2. 周期循环Cycle-By-Cycle, CBC模式行为当指定的故障信号有效时ePWM输出立即被强制为安全状态。但是在当前PWM周期结束时即时间基准计数器TBCTR归零时硬件会自动检查故障信号是否依然有效。如果故障已消失则下一个PWM周期输出自动恢复正常如果故障仍存在则下一个周期继续强制输出安全状态。恢复自动恢复。只要故障条件在周期结束时解除PWM自动恢复无需软件干预。应用场景可自恢复的、需要限流的故障。例如逐周期电流限制这是CBC最经典的应用。通过硬件比较器或采样电阻比较器实时监测相电流。当电流超过设定的安全限值但未达到危险值时触发CBC故障强制PWM在本周期剩余时间内关闭。下个周期电流下降后PWM自动恢复。这样就实现了硬件的、无延迟的峰值电流限制保护功率管的同时不影响平均电流控制。轻微的过载保护。配置示例将电流采样比较器的输出接到TZ2引脚配置为CBC模式TZCTL设置输出强制为低。当电流超限当前PWM脉冲立即被拉低限制电流上升下个周期开始时如果电流已低于阈值PWM正常输出实现“打嗝”式的限流保护。核心经验OSHT与CBC的选择哲学记住一个原则“要命”的故障用OSHT“调节”或“限制”用CBC。OSHT是“熔断器”跳了就得换CBC是“保险丝”过载跳开冷却后自动复位。在电机驱动中我通常将硬件比较器的硬阈值输出接OSHT最后防线将软件可编程的、稍低的阈值通过数字比较DC模块接CBC第一道限流防线。3.3 输出动作配置与高阻态High-Z的特殊意义TZCTL[TZA]和TZCTL[TZB]可以独立配置每个输出引脚在故障时的状态00: 高阻态 (High-Impedance)。这是非常有用且常被误解的状态。它意味着ePWM模块内部断开与引脚驱动电路的连接引脚电平由外部电路决定通常通过下拉电阻拉到低电平。在驱动半桥或全桥时将上下管同时强制为高阻态可以确保两者都关断是防止直通的最安全方式之一尤其适用于驱动芯片本身有内部下拉电阻的情况。01: 强制为高。10: 强制为低。11: 无变化。如何选择对于低边开关管通常配置为“强制为低”10确保关断。对于高边开关管情况更复杂。如果驱动芯片是低电平有效那么“强制为高”01反而会开通高边管这是危险的此时应选择“强制为低”10或“高阻态”00具体取决于驱动芯片的逻辑和外部电路。最安全的通用配置对于不确定的驱动电路将上下桥臂的PWM输出在故障时均配置为高阻态00并在PCB上为每个驱动输入添加一个足够大的下拉电阻如10kΩ确保故障时驱动输入被拉到关断电平。这是经过大量项目验证的稳健做法。4. 数字比较DC子模块与高级故障联动Trip-Zone不仅可以直接响应外部引脚信号还能响应来自数字比较Digital Compare, DC子模块的内部事件。这实现了基于模拟电压比较的、高度可配置的智能保护。4.1 DC子模块工作原理简述DC子模块的核心功能是将片内模拟比较器CMPSS模块的输出CMPxH, CMPxL或外部TZ1~TZ3引脚信号映射为四个内部事件信号DCAEVT1,DCAEVT2,DCBEVT1,DCBEVT2。DCAEVT1/2通常与EPWMxA关联。DCBEVT1/2通常与EPWMxB关联。你可以通过DCTRIPSEL寄存器选择哪些信号作为DC事件的源。然后通过TZDCSEL寄存器可以精细地配置这些DC事件如何组合逻辑与、或来最终触发Trip动作。4.2 实现逐周期限流CBC的典型配置这是DC模块最强大的应用之一实现无需CPU干预的、基于实际电流采样的硬件逐周期限流。步骤硬件连接将电机相电流采样信号通过运放调理后接入DSP的ADC输入同时也接入片内模拟比较器CMPSS1的同相输入端。在比较器的反相输入端通过DAC或参考电压设置一个电流限值例如20A对应的电压值。配置CMPSS使能比较器当采样电流电压高于限值电压时比较器输出CMPSS1.H变高表示过流。配置DC子模块设置DCTRIPSEL将CMPSS1.H信号选择为DCAH或DCBH取决于你用哪路PWM控制该相的事件源。配置TZDCSEL使得当DCAH为高时产生DCAEVT2事件。配置Trip-Zone在TZSEL寄存器中使能DCAEVT2作为周期循环CBC故障源。在TZCTL中设置当DCAEVT2事件发生时将对应的PWM输出强制为低或高阻。运行结果电机运行中一旦相电流超过20ACMPSS1.H立即变高 - 触发DCAEVT2- 触发CBC故障 - 当前PWM周期内该相下管或所有管子立即被强制关断电流开始下降。在下一个PWM周期开始时TBCTR0硬件自动检查如果电流已低于20ACMPSS1.H变低则PWM输出自动恢复正常。整个过程完全由硬件完成响应延迟极短通常在几十纳秒内完美实现了硬件峰值电流保护。注意事项抗抖动与滤波比较器输出可能在阈值附近抖动导致误触发。ePWM的DC模块和Trip-Zone输入通常有数字滤波功能或需要结合GPIO MUX的滤波。务必使能合适的滤波周期例如连续检测到3个TBCLK周期的高电平才认为事件有效以避免噪声引起的误保护。滤波时间的设置需要在响应速度和抗噪性之间取得平衡。5. 事件触发ET子模块让中断与ADC采样精准同步事件触发子模块虽然不直接产生PWM或处理故障但它是连接PWM时序与CPU中断和ADC采样的桥梁对于实现精准控制算法如FOC中的电流采样至关重要。5.1 中断事件的产生与预分频ET模块可以监控多种事件计数器等于零CTR0、等于周期值CTRPRD、等于比较器A/B值CTRCMPA/CMPB等。你可以通过ETSEL[INTSEL]选择由哪个事件来触发中断。关键技巧在于ETPS[INTPRD]中断周期寄存器。它可以让你不是每个事件都产生中断而是每N个事件产生一次N1,2,3。这有什么用降低CPU负载在高速PWM如100kHz下如果每个PWM周期都进中断CPU负担会很重。你可以设置为每2个或3个周期进一次中断执行控制算法。实现多速率控制例如PWM频率为20kHz电流环快环每周期执行一次即20kHz而速度环慢环可以每4个PWM周期执行一次5kHz。这可以通过在中断服务程序中设置不同的任务计数器或者更优雅地配置两个ePWM模块一个用于产生PWM并触发高速中断另一个配置为更低频率来触发低速中断。中断产生流程选择事件源如CTRCMPA。设置ETPS[INTPRD]2每2个事件。使能中断ETSEL[INTEN]1。当CMPA匹配事件第一次发生时事件计数器INTCNT从0增加到1。当CMPA匹配事件第二次发生时INTCNT增加到2等于INTPRD。此时如果中断标志ETFLG[INT]为0则硬件自动产生中断脉冲。置位中断标志ETFLG[INT]1。清零事件计数器INTCNT0。CPU响应中断在服务程序中必须手动清除中断标志写ETCLR[INT]1以允许下一次中断产生。5.2 ADC启动转换SOC的精准触发在电机FOC控制中需要在PWM周期的特定时刻通常是PWM中点或谷底对相电流进行采样以最小化开关噪声的影响。ePWM的ET模块可以生成精确的EPWMxSOCA和EPWMxSOCB信号来触发ADC。如何实现中点采样假设我们使用增-减计数模式并且希望在PWM周期中的中央即计数器从增到减的转折点采样电流此时开关管状态稳定。配置时间基准TB设置为增-减计数模式周期值TBPRD。配置动作限定器AQ设置CTRCMPA时EPWMxA输出拉高CTRCMPB时EPWMxA输出拉低。其中CMPA和CMPB的值决定了占空比。配置事件触发ET设置ETSEL[SOCASEL]选择事件源为“时间基准计数器等于周期值”CTRPRD。在增-减计数模式下计数器达到PRD的瞬间正是从增计数转为减计数的峰值点。但我们需要的是周期中点。更准确的方法是将CMPA的值设置为TBPRD/2。然后设置ETSEL[SOCASEL]选择事件源为“增计数时等于比较器A”CTRUCMPA。这样当计数器从0向上计数到TBPRD/2时就会触发SOCA信号。这个点正好是增-减计数模式下一个周期的中点对称PWM波形的中心点。连接ADC将EPWMxSOCA信号连接到ADC模块的启动转换输入端。结果每个PWM周期当计数器计数到中点时硬件自动产生一个脉冲触发ADC采样软件无需干预采样时刻的抖动为零这对于高性能电流控制是必须的。实操心得SOCA与SOCB的分工一个ePWM模块可以产生两个独立的SOC信号。我通常这样分配SOCA用于触发关键的、必须严格同步的采样如电机相电流采样用于FOC电流环。SOCB用于触发辅助采样如直流母线电压采样、温度采样等或者用于在同一个PWM周期内触发第二次采样例如用于空间矢量调制SVPWM的双采样技术。通过ETPS[SOCAPRD]和ETPS[SOCBPRD]可以独立设置它们的触发频率分频。6. 实战配置流程与常见问题排查6.1 一个完整的ePWM初始化配置流程以生成带死区和故障保护的互补PWM为例以下是一个基于TI C2000的典型配置步骤涵盖了TB、CC、AQ、DB、TZ模块// 假设使用ePWM1模块系统时钟SYSCLKOUT 100MHz void InitEPWM1(void) { // 1. 初始化时基 (TB) 模块 EPwm1Regs.TBCTL.bit.CTRMODE TB_COUNT_UPDOWN; // 增-减计数模式 EPwm1Regs.TBPRD 5000; // 周期值对应PWM频率 100MHz / (2*5000) 10kHz EPwm1Regs.TBCTL.bit.PHSEN TB_DISABLE; // 禁止相位同步 EPwm1Regs.TBCTL.bit.HSPCLKDIV TB_DIV1; // 高速时钟分频 EPwm1Regs.TBCTL.bit.CLKDIV TB_DIV1; // 时基时钟分频TBCLK SYSCLKOUT // 2. 初始化比较器 (CC) 模块 EPwm1Regs.CMPA.half.CMPA 2500; // 比较器A值初始占空比 50% (2500/5000) EPwm1Regs.CMPB 2500; // 比较器B值可用于生成另一路PWM或不对称死区 // 3. 初始化动作限定器 (AQ) 模块 - 生成初始的EPWM1A (高有效) EPwm1Regs.AQCTLA.bit.CAU AQ_SET; // 增计数到CMPA时置高 EPwm1Regs.AQCTLA.bit.CAD AQ_CLEAR; // 减计数到CMPA时清低 // EPWM1B由死区模块生成互补信号AQ模块可以不配置B输出或配置为相反逻辑。 // 4. 初始化死区 (DB) 模块 - 生成互补带死区信号 // 目标AHC模式死区时间 1usTBCLK 100MHz (10ns) // 所需计数值 1us / 10ns 100 EPwm1Regs.DBCTL.bit.IN_MODE DBA_ALL; // EPWM1A作为两个延迟的源 EPwm1Regs.DBCTL.bit.POLSEL DB_ACTV_HIC; // 高有效互补模式 (AHC) EPwm1Regs.DBCTL.bit.OUT_MODE DB_FULL_ENABLE; // 使能上升沿和下降沿延迟 EPwm1Regs.DBRED 100; // 上升沿延迟 100 * 10ns 1000ns EPwm1Regs.DBFED 100; // 下降沿延迟 100 * 10ns 1000ns // 5. 初始化故障保护 (TZ) 模块 // 假设TZ1接硬件过流信号OSHTTZ2接软件比较器限流信号CBC EPwm1Regs.TZSEL.bit.OSHT1 1; // 使能TZ1为单次触发(OSHT)源 EPwm1Regs.TZSEL.bit.CBC2 1; // 使能TZ2为周期循环(CBC)源 // 故障时将两路输出都强制置为高阻态最安全依靠外部下拉电阻关断驱动 EPwm1Regs.TZCTL.bit.TZA TZ_FORCE_HIZ; EPwm1Regs.TZCTL.bit.TZB TZ_FORCE_HIZ; // 使能TZ1和TZ2的中断如果需要 EPwm1Regs.TZEINT.bit.OST 1; EPwm1Regs.TZEINT.bit.CBC 1; // 6. 初始化事件触发 (ET) 模块 - 用于在周期中点触发ADC采样 EPwm1Regs.ETSEL.bit.SOCASEL ET_CTRU_CMPA; // SOCA由增计数到CMPA事件触发 EPwm1Regs.ETPS.bit.SOCAPRD ET_1ST; // 每个事件都触发一次SOCA EPwm1Regs.ETSEL.bit.SOCAEN 1; // 使能SOCA // 7. 使能PWM输出如果需要某些引脚需要额外配置GPIO MUX // EPwm1Regs. ... 根据具体芯片型号配置 }6.2 常见问题与排查技巧实录问题1死区时间设置了但用示波器测量发现实际死区与计算值不符。可能原因1TBCLK频率算错。仔细检查TBCTL[HSPCLKDIV]和TBCTL[CLKDIV]的分频设置。TBCLK SYSCLKOUT / (HSPCLKDIV * CLKDIV)。可能原因2忽略了半周期时钟。如果DBCTL[HALFCYCLE]1实际死区时间分辨率是TTBCLK/2。此时用同样的DBRED值死区时间会减半。可能原因3驱动芯片本身的传播延迟。你测量的是DSP引脚输出的信号但驱动芯片内部也有延迟几十到几百纳秒。实际的功率管栅极信号之间的死区是DSP死区与驱动芯片两路输出延迟差的叠加。务必以功率管栅极或源极的波形为准。排查步骤先用示波器测量DSP的EPWMxA和EPWMxB引脚输出验证寄存器设置是否正确。再测量驱动芯片的输出分析差异。问题2故障保护Trip不动作过流时依然烧管。可能原因1故障输入引脚未正确配置。TZ1~TZ3是GPIO复用功能除了配置ePWM模块还必须将对应的GPIO引脚通过GPIOxMUX寄存器配置为TZn功能而不是普通的数字输入。可能原因2故障信号有效电平搞反。TZn信号是低电平有效。你的比较器或保护电路输出的是高电平有效故障信号吗如果是中间需要加一个反相器或使用比较器的反相输出。可能原因3故障信号脉宽太短。数据手册要求TZn输入低电平脉宽至少持续3 * TBCLK周期才能被可靠锁存。如果是一个毛刺可能被过滤掉。检查故障信号质量必要时在外部硬件或软件上增加滤波但会延迟保护速度。可能原因4TZCTL配置错误。检查TZCTL[TZA/TZB]是否设置成了TZ_NO_CHANGE11这个设置会让故障时输出无变化。排查步骤首先在软件中强制触发故障写TZFRC寄存器看PWM输出是否能被强制。如果能说明ePWM配置正确问题在外部信号或GPIO配置。如果不能检查ePWM配置。用示波器同时监测故障信号输入引脚和PWM输出引脚。问题3配置了CBC限流但电机运行时仍有明显的电流尖峰甚至触发OSHT。可能原因1CBC响应速度不够快。从电流超限到PWM关闭存在硬件比较器延迟、信号传播延迟、ePWM模块内部延迟。这个总延迟时间可能长达几百纳秒。在这段时间内电流会继续上升。你需要确保你设置的CBC限流值比较器阈值低于OSHT的硬保护阈值并留有足够的裕量。可能原因2环路补偿不足。CBC是“事后”保护它在电流超限后关断。要抑制电流尖峰根本上需要优化电流环的PI参数提高带宽和响应速度让软件控制能及时抑制扰动。可能原因3采样延迟或误差。电流采样电路存在延迟采样值不能反映实时电流。或者采样点在PCB布局上引入噪声导致比较器误触发或迟触发。优化采样电路和布局。排查步骤用高带宽示波器同时捕捉电流采样信号、比较器输出TZ引脚和PWM输出。观察从电流超过阈值到PWM关断的实际延迟时间。根据这个延迟时间重新计算并设置合理的CBC和OSHT阈值。问题4ADC采样时刻不对采到的电流值波动很大。可能原因1SOC触发事件选择错误。在增-减计数模式下如果你希望在PWM周期中点采样触发事件必须是CTRUCMPA或CTRDCMPA并且CMPA的值要设置为TBPRD/2。如果你选择了CTRPRD触发点是在周期峰值此时开关管可能正在动作采样噪声最大。可能原因2ADC采样窗口与PWM不同步。确保ADC模块的采样时钟和转换时钟稳定并且ADC的启动信号确实来自于ePWM的SOC而不是其他源。检查ADC的配置确保它工作在SOC触发模式。可能原因3PCB布局噪声。即使采样时刻正确如果电流采样走线受到开关噪声干扰采样值也会不准。确保采样电阻的Kelvin连接走线远离功率回路并使用差分放大和滤波。排查步骤使用示波器测量ePWM的SOCA输出引脚如果芯片引出和ADC的“开始转换”信号确认它们同步。在电流稳定如电机堵转的情况下读取ADC结果观察其波动是否在合理范围内。尝试在软件中微调CMPA的值例如TBPRD/2 ± 几个时钟周期找到电流纹波最小的采样点。