TI C2000 ePWM死区生成与故障保护机制深度解析与实战
1. 项目概述与核心价值在电力电子和电机驱动的世界里PWM脉宽调制信号就像是控制功率开关的“指挥棒”它的精确与否直接决定了整个系统的效率、性能和寿命。然而这个看似简单的开关动作背后却隐藏着两个致命的“雷区”一个是桥臂直通短路另一个是突发故障导致的系统崩溃。前者会让你的功率管瞬间“烟花灿烂”后者则可能让昂贵的电机或负载毁于一旦。今天我们就来深入拆解TI C2000系列DSP中增强型PWMePWM模块的两大守护神——死区生成Dead-Band Generator和故障保护Trip-Zone机制。这不仅仅是寄存器配置的罗列而是结合我多年在伺服驱动和逆变器开发中的实战经验告诉你它们为何如此设计以及如何在实际项目中避坑、调优让你的PWM控制既精准又安全。简单来说死区生成是为了防止同一桥臂上下两个开关管比如MOSFET或IGBT因开关延迟而同时导通造成电源直通短路。而故障保护则是系统的“紧急制动”按钮一旦检测到过流、过压、过热等异常能在纳秒级时间内强制PWM输出进入安全状态如强制拉高、拉低或高阻态保护功率器件和负载。对于从事开关电源、UPS、新能源逆变器或伺服驱动的工程师而言吃透这两部分是写出稳定、可靠控制程序的基础。2. ePWM死区生成模块深度解析2.1 死区的本质为何它是必须的在讨论如何生成死区之前我们必须先理解死区为何存在。想象一下H桥或三相逆变器的上下桥臂理想情况下我们希望上管关断后下管立刻导通反之亦然。但现实是骨感的功率开关管如IGBT的关断存在拖尾电流驱动电路也有传播延迟。如果上管还没完全关断下管就导通了就会形成一条从电源正极到负极的低阻抗通路产生巨大的直通电流Shoot-Through Current。这个电流峰值可能高达数百甚至上千安培足以在微秒级时间内摧毁功率器件。因此死区就是在互补的PWM信号对例如EPWMxA和EPWMxB之间插入的一段两者都为无效状态的时间。在这段时间里确保一个管子完全关断后另一个管子才被允许开启。这个时间必须大于功率器件的最大关断时间与驱动电路延迟之和并留有一定裕量。在ePWM模块中死区生成DB子模块位于动作限定器AQ之后。AQ模块生成了原始的、带占空比信息的EPWMxA和EPWMxB信号DB模块则负责对这两个信号的边沿进行延迟处理生成最终的、带有死区保护的输出信号。2.2 死区生成的核心寄存器与配置逻辑死区模块的配置主要围绕三个核心寄存器展开它们都是非影子寄存器即写入立即生效这在实时性要求高的故障保护场景中至关重要。1. 死区控制寄存器 (DBCTL)这是死区模块的“大脑”决定了信号的处理模式。我们需要重点关注其中几个关键位域IN_MODE (输入模式选择)这决定了延迟模块的输入信号来源。默认情况下EPWMxA In同时作为上升沿延迟RED和下降沿延迟FED的源。但在一些高级应用中你可以交叉配置例如用EPWMxA的上升沿去延迟EPWMxB的下降沿这为实现非对称死区或特殊保护逻辑提供了可能。不过在绝大多数经典桥式驱动应用中我们使用默认模式EPWMxA In作为双延迟源即可。OUT_MODE (输出模式选择)这个配置决定了哪些延迟会被应用到输出上。你可以选择旁路RED、旁路FED、同时应用两者或全部旁路即禁用死区功能。对于典型的互补PWM我们需要同时启用上升沿和下降沿延迟。POLSEL (极性选择)这是最容易让人困惑但也最强大的功能之一。它决定了经过延迟后的信号是否需要进行反相然后再输出。结合OUT_MODE它能生成四种经典的死区极性模式。2. 死区上升沿延迟计数寄存器 (DBRED)这是一个10位寄存器用于设置上升沿延迟的计数值。实际的延迟时间T_RED DBRED * T_TBCLK。其中T_TBCLK是时间基准时钟TBCLK的周期。TBCLK通常由系统时钟分频得到。3. 死区下降沿延迟计数寄存器 (DBFED)同样是一个10位寄存器用于设置下降沿延迟的计数值。实际延迟时间T_FED DBFED * T_TBCLK。关键经验DBRED和DBFED的值是独立的这意味着你可以为上升沿和下降沿设置不同的延迟时间。这在某些特定拓扑中很有用例如当上下管采用不同型号的器件其关断特性差异较大时可以设置非对称死区来优化效率。但在对称桥臂设计中通常设置DBRED DBFED。2.3 四种经典死区模式详解与波形分析根据DBCTL[POLSEL]和DBCTL[OUT_MODE]的配置可以产生表20-14中列举的几种经典模式。我们结合图20-28的波形来深入理解每一种模式的应用场景。假设我们从AQ模块得到的是一个Active High的原始PWM信号EPWMxA In高电平有效占空比介于0%到100%之间。模式2高有效互补模式 (Active High Complementary, AHC)配置POLSEL1, OUT_MODE1(即S31, S20, S11, S01)。波形行为原始信号EPWMxA In同时送入RED和FED模块。RED模块输出一个上升沿被延迟的信号FED模块输出一个下降沿被延迟的信号。然后POLSEL1意味着RED路径的信号被反相FED路径的信号保持不变。最终EPWMxA输出的是反相后的RED信号EPWMxB输出的是FED信号。结果EPWMxA和EPWMxB都是高电平有效但它们的上升沿之间插入了死区时间。当原始信号从低变高时EPWMxB下管会先变高经过T_FED时间后EPWMxA上管才变高。当原始信号从高变低时EPWMxA上管先变低经过T_RED时间后EPWMxB下管才变低。这确保了任何切换时刻都有一个死区窗口。典型应用驱动绝大多数标准的、高电平使能的半桥或全桥栅极驱动器芯片。模式3低有效互补模式 (Active Low Complementary, ALC)配置POLSEL0, OUT_MODE1(即S30, S21, S11, S01)。波形行为与AHC类似但POLSEL0意味着RED路径信号不反相而FED路径信号被反相。最终EPWMxA输出RED信号EPWMxB输出反相后的FED信号。结果EPWMxA和EPWMxB都是低电平有效。其边沿关系与AHC模式本质是相同的只是有效电平相反。典型应用驱动低电平使能的栅极驱动器或者某些需要低电平触发关断的保护电路。模式4高有效模式 (Active High, AH)配置POLSEL0, OUT_MODE1(注意表20-14中模式4的POLSEL为0但根据图20-27逻辑要使两个输出同相且高有效需要仔细推演。实际上AH模式通常指两个输出都是同相的高有效信号但死区模块通常用于生成互补信号AH模式在此上下文的典型用法是生成两个同步的高有效信号其中一个带有边沿延迟。更常见的理解是它生成了一对信号其中EPWMxA是原始信号EPWMxB是带有死区延迟的互补信号这里需要结合具体寄存器配置和波形图理解。根据手册描述和常见实践AH模式通常用于需要单个PWM信号驱动但另一个信号用作同步或触发的情况死区功能可能被用于产生一个固定的相位差)。模式5低有效模式 (Active Low, AL)配置POLSEL1, OUT_MODE1。类比模式4只是有效电平为低。实操心得模式选择速查在实际项目中你不需要死记硬背这些真值表。我的方法是确定硬件连接先看你的栅极驱动器芯片数据手册明确其输入是高有效还是低有效是否需要互补输入。使用TI的配置工具如ControlSUITE中的ePWM配置图形界面或SysConfig工具。你只需要在图形界面上选择你想要的输出极性High-Active Complementary, Low-Active Complementary等工具会自动帮你计算出正确的DBCTL寄存器值。示波器验证这是最关键的一步。配置好死区后务必在空载不接功率管或接纯阻性负载测试情况下用示波器同时测量EPWMxA和EPWMxB引脚的实际波形。确认死区时间是否符合设定以及两个信号的相位关系是否正确例如在AHC模式下下管信号EPWMxB的上升沿是否领先于上管信号EPWMxA的上升沿。2.4 死区时间计算与半周期时钟死区时间的精度直接由TBCLK决定。计算公式很简单死区时间 延迟计数值 (DBRED或DBFED) × T_TBCLK例如系统时钟SYSCLK 200 MHzTBCLK分频设置为 /2则T_TBCLK 1 / (200MHz / 2) 10 ns。若设置DBRED 100则上升沿死区时间为100 * 10 ns 1000 ns 1 μs。提升分辨率半周期时钟模式当死区时间需要非常精细的调节时例如在高开关频率的GaN应用中10ns的步进可能仍显粗糙。ePWM的DB模块提供了一个“外挂”半周期时钟模式DBCTL[HALFCYCLE]。原理当此位置1时DBRED和DBFED计数器以2 * TBCLK的频率计数。也就是说其时间分辨率提高了一倍。计算此时死区时间 延迟计数值 × (T_TBCLK / 2)。注意启用半周期时钟模式后DBRED和DBFED寄存器的最大值所对应的绝对时间范围会减半。你需要权衡分辨率和最大死区时间需求。避坑指南死区时间设置过小或过大过小 ( 器件关断时间)无法防止直通风险极高。务必根据功率器件数据手册中的“关断延迟时间td(off)”和“下降时间tf”以及驱动芯片的传播延迟来估算所需最小死区。通常要留出1.5到2倍的安全裕量。例如IGBT的关断时间可能是500ns那么死区至少设为750ns-1μs。过大会导致输出波形畸变尤其是在低占空比或高占空比时。过大的死区会“吃掉”有效的脉冲宽度降低最大输出电压引入非线性影响控制环路性能。在电机控制中过大的死区还会导致电流波形畸变和转矩脉动。因此死区时间应在安全裕量的基础上尽可能小。3. Trip-Zone故障保护机制实战精讲如果说死区是预防性保护那么Trip-Zone故障区域就是抢救性保护。它的设计目标是在硬件层面实现纳秒级的故障响应完全独立于CPU软件中断服务程序确保即使软件跑飞也能强行将系统拉入安全状态。3.1 故障信号来源与分类ePWM模块可以响应多达6路故障输入TZ1~TZ6它们来自不同的硬件源优先级和用途各异TZ1, TZ2, TZ3来自GPIO引脚。这是最常用的故障源通常连接电流采样比较器的输出、电压检测电路或温度传感器的报警信号。它们是异步的意味着即使系统时钟失效这些引脚上的低电平也能触发保护。TZ4由两个正交编码器错误信号EQEP1ERR和EQEP2ERR逻辑或产生。常用于电机驱动中编码器信号异常保护。TZ5连接至系统时钟振荡器失败或PLL失锁逻辑。用于检测芯片时钟异常属于系统级严重故障。TZ6来自CPU的调试模式暂停指示。当芯片进入调试暂停时可以触发PWM进入安全状态防止调试时功率部分失控。此外故障还可以由数字比较DC子模块产生DCAEVT1/2, DCBEVT1/2。DC模块可以将内部模拟比较器CMPSS的输出与内部DAC设定的阈值进行比较直接在芯片内部生成故障事件无需外部引脚响应速度更快。3.2 两种核心保护模式Cycle-By-Cycle vs One-Shot这是Trip-Zone模块最核心的概念理解它们的区别是正确配置的关键。3.2.1 逐周期跳变 (Cycle-By-Cycle, CBC)触发机制当配置为CBC的故障信号如TZn或DCAEVT2/DCBEVT2有效时立即触发保护动作。清除机制自动清除。在每个PWM周期开始时即时间基准计数器TBCTR 0x0000时硬件会自动检查故障信号是否依然存在。如果故障已经消失则保护动作自动解除PWM输出恢复正常如果故障依然存在则保护动作持续。标志位TZFLG[CBC]在故障发生时置位需要软件手动清除写TZCLR[CBC]1。即使故障已消失且PWM已恢复该标志位仍保持置位直到被软件清除。典型应用峰值电流限制。例如在电机驱动中当相电流超过某个安全阈值时CBC故障触发强制PWM关断以限制电流。只要过流消失下一个PWM周期即可恢复正常工作实现平滑的限流控制。它像是一个“自动复位”的断路器。3.2.2 单次跳变 (One-Shot, OSHT)触发机制当配置为OSHT的故障信号如TZn或DCAEVT1/DCBEVT1有效时立即触发保护动作。清除机制手动清除。一旦触发保护动作将一直保持直到软件显式地写TZCLR[OST]1来清除故障标志TZFLG[OST]。即使外部故障信号早已消失PWM输出也不会自动恢复。标志位TZFLG[OST]在故障发生时置位必须由软件清除。典型应用严重故障保护如短路、过压、IGBT直通、散热器过热等。这些故障通常是致命的或需要系统彻底停机检查的。OSHT模式相当于一个“熔断器”一旦触发就必须人工干预或由上位机命令才能复位防止故障扩大。经验之谈如何选择CBC还是OSHT我遵循一个简单的原则“可自恢复的故障用CBC不可自恢复或严重的故障用OSHT”。CBC例子电机启动时的瞬时过流、负载轻微突变。这些情况下系统有能力在下一个周期自行调整。OSHT例子散热器温度超过85°C、直流母线电压超过最大值、硬件检测到桥臂直通。这些故障必须停机等待温度下降、电压恢复正常或人工检修。 在实际系统中我通常将硬件过流比较器输出连接到TZ1配置为CBC将温度传感器报警和母线电压过压检测连接到TZ2和TZ3配置为OSHT。3.3 故障响应动作配置当故障发生时你可以独立配置每个ePWM通道EPWMxA和EPWMxB的输出行为通过TZCTL寄存器00: 高阻态 (High-Impedance)这是最安全的模式直接将输出引脚置为高阻外部栅极驱动器依靠其内部下拉电阻将功率管关断。适用于需要绝对关断且驱动器有下拉电阻的场景。01: 强制高电平 (Force to High)强制PWM输出为高。如果你的栅极驱动器是低有效使能例如输入高电平时关闭率管那么这个配置可以强制关断。10: 强制低电平 (Force to Low)强制PWM输出为低。对于高有效使能的驱动器此配置强制关断功率管。11: 无变化 (No Change)忽略故障输出保持不变。慎用仅在调试或特定冗余设计中使用。配置示例三相逆变器保护假设我们有一个三相逆变器使用ePWM1、2、3驱动三个桥臂。我们希望任何一相的硬件过流CBC故障触发时仅关断该相的上下管输出强制为低假设驱动器高有效其他相继续工作。这可以实现单相限流。当系统检测到严重过热OSHT故障时关断所有三个桥臂输出强制为低。// 假设 TZ1 连接硬件过流比较器CBC TZ2 连接温度报警OSHT // 驱动器为高有效低电平关闭功率管 // 配置 ePWM1, 2, 3 对 TZ1 (CBC) 的响应 EPwm1Regs.TZSEL.bit.CBC1 1; // 使能 TZ1 作为 CBC 源 EPwm1Regs.TZCTL.bit.TZA TZ_FORCE_LO; // TZ1触发时EPWM1A 强制低 EPwm1Regs.TZCTL.bit.TZB TZ_FORCE_LO; // TZ1触发时EPWM1B 强制低 EPwm2Regs.TZSEL.bit.CBC1 1; EPwm2Regs.TZCTL.bit.TZA TZ_FORCE_LO; EPwm2Regs.TZCTL.bit.TZB TZ_FORCE_LO; EPwm3Regs.TZSEL.bit.CBC1 1; EPwm3Regs.TZCTL.bit.TZA TZ_FORCE_LO; EPwm3Regs.TZCTL.bit.TZB TZ_FORCE_LO; // 配置 ePWM1, 2, 3 对 TZ2 (OSHT) 的响应 EPwm1Regs.TZSEL.bit.OSHT2 1; // 使能 TZ2 作为 OSHT 源 EPwm1Regs.TZCTL.bit.TZA TZ_FORCE_LO; // TZ2触发时EPWM1A 强制低 EPwm1Regs.TZCTL.bit.TZB TZ_FORCE_LO; // TZ2触发时EPWM1B 强制低 // 注意TZCTL寄存器对于不同故障源TZA/TZB vs DCAEVT等是分开的位域 // 这里为简化说明实际中TZCTL对TZ1/TZ2等外部信号和DC事件的控制位是独立的。 // 更精确的配置需要分别设置 TZCTL[TZA] 和 TZCTL[DCAEVT1] 等。 // 对于所有TZn信号触发的动作通常由 TZCTL[TZA] 和 TZCTL[TZB] 统一控制除非为DC事件单独配置。3.4 数字比较DC子模块与高级故障保护数字比较子模块是Trip-Zone的“智能前哨”。它允许你将内部模拟比较器CMPSS的输出直接映射为故障事件无需CPU干预。工作原理CMPSS模块持续将采样到的电流/电压信号与内部可编程DAC设定的阈值进行比较。当信号超过阈值时CMPSS输出数字信号CMPxH 高阈值 CMPxL 低阈值。这些数字信号被路由到ePWM的DC子模块通过DCTRIPSEL寄存器选择信号源。DC子模块根据TZDCSEL寄存器的配置将CMPSS的输出逻辑组合如上升沿、下降沿、电平生成事件DCAEVT1,DCAEVT2,DCBEVT1,DCBEVT2。这些DC事件可以直接作为CBC或OSHT故障源触发Trip-Zone动作。优势超快响应从模拟信号越限到PWM动作全程由硬件完成延迟极短通常在100ns量级。节省CPU资源无需软件轮询或ADC中断减轻CPU负担。高可靠性独立于软件运行即使软件死机硬件保护依然有效。配置示例硬件逐周期电流限流假设我们用CMPSS1监控电机U相电流当电流超过20A时需要立即关断U相下管假设下管由EPWM1B控制高有效进行逐周期限流。// 1. 配置CMPSS1: DACVAL设置为对应20A的电压值配置为比较器输出高有效。 // 2. 配置DCTRIPSEL将CMPSS1的输出假设是CMPSS1H映射到DCAH信号。 EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL 1; // 选择CMPSS1H作为DCAH源 // 3. 配置TZDCSEL定义DCAH信号如何生成DCAEVT事件。 // 例如当DCAH为高电平时立即触发DCAEVT1用于OSHT和DCAEVT2用于CBC。 EPwm1Regs.TZDCSEL.bit.DCAEVT1SRCSEL DC_EVT_SRC_DCAH; // DCAEVT1源为DCAH EPwm1Regs.TZDCSEL.bit.DCAEVT1FRCSYNCSEL DC_EVT_FRC_SYNC; // 同步强制 EPwm1Regs.TZDCSEL.bit.DCAEVT2SRCSEL DC_EVT_SRC_DCAH; // DCAEVT2源也为DCAH EPwm1Regs.TZDCSEL.bit.DCAEVT2FRCSYNCSEL DC_EVT_FRC_SYNC; // 4. 配置TZSEL将DCAEVT2事件作为CBC故障源。 EPwm1Regs.TZSEL.bit.DCAEVT2 1; // 使能DCAEVT2作为CBC源 // 5. 配置TZCTL指定当CBC故障此处由DCAEVT2触发时EPWM1B的动作。 // 我们希望仅关断下管EPWM1B上管EPWM1A保持原状或也关断根据拓扑决定。 // 假设仅关断EPWM1B强制为低。 EPwm1Regs.TZCTL.bit.DCAEVT2 TZ_FORCE_LO; // DCAEVT2触发时EPWM1B强制低 // 注意TZCTL中针对DCAEVT2的控制位是独立的可以单独配置EPWMxA和EPWMxB。 // 这里假设TZCTL.DCAEVT2配置为对EPWM1B有效。4. 死区与故障保护联合调试实战与常见问题4.1 调试流程与工具静态配置检查在程序初始化阶段通过CCS的寄存器观察窗口仔细核对DBCTL、DBRED、DBFED、TZSEL、TZCTL、TZDCSEL等关键寄存器的值是否符合预期。一个常见的错误是忘记使能某个故障源TZSEL位没置1。死区波形验证使用示波器测量EPWMxA和EPWMxB引脚。先在不带负载或接小电阻的情况下测试。测量上升沿到上升沿、下降沿到下降沿之间的时间确认死区时间与计算值一致。切换不同的占空比0% 50% 100%观察死区是否稳定存在特别是在极窄脉冲时。故障保护触发测试CBC测试模拟一个瞬时故障例如短暂拉低TZ1引脚。观察PWM输出是否立即被强制为预设的安全状态如低电平并在下一个PWM周期开始TBCTR0时是否自动恢复。同时检查TZFLG[CBC]标志是否被置位。OSHT测试模拟一个持续故障拉低TZ2引脚。观察PWM输出是否进入安全状态并保持即使故障信号随后消失。只有软件写TZCLR[OST]1后PWM才应恢复。检查TZFLG[OST]标志。DC模块测试通过改变CMPSS的DAC值或输入电压使其输出翻转验证是否能触发对应的PWM保护动作。4.2 常见问题与排查技巧问题1设置了死区但示波器上看不到间隔或者间隔时间不对。可能原因1DBCTL[OUT_MODE]配置错误没有同时使能RED和FED。检查寄存器值。可能原因2TBCLK频率计算错误。确认系统时钟SYSCLK和TBCTL[CLKDIV]分频设置。使用示波器测量一个PWM周期的实际时间反推TBCLK频率。可能原因3在增计数模式下死区表现正常但在增-减计数模式下死区行为可能因对称PWM而看起来不同。确保你理解在对称PWM下死区是如何在波形的两侧插入的。排查先将死区时间设为一个很大的值如对应5μs用示波器看是否出现明显间隔。然后逐步减小确认线性关系。问题2故障保护不动作或者误动作。可能原因1故障输入引脚TZn的GPIO复用功能未正确配置。必须将相应引脚配置为ePWM的Trip-Zone功能而非普通GPIO。可能原因2故障信号脉宽太短。手册要求TZn输入低电平脉宽至少持续3个TBCLK周期才能被可靠锁存。如果故障信号是毛刺可能无法触发。需要在硬件前端增加RC滤波或施密特触发器整形。可能原因3TZCTL配置的安全状态与外部驱动器逻辑不匹配。例如配置了“强制高”但你的驱动器是高有效这反而会导通功率管务必根据驱动器数据手册确认安全状态。最保险的方式通常是“强制低”或“高阻态”前提是驱动器有下拉电阻。可能原因4多个ePWM模块的故障响应冲突。例如你希望TZ1触发时只关断ePWM1但ePWM2也被错误配置为响应TZ1。仔细检查每个ePWM模块的TZSEL寄存器。排查使用软件强制故功能TZFRC寄存器。写TZFRC[CBC]1或TZFRC[OST]1可以模拟一个故障事件。如果软件强制能触发保护但外部引脚不能问题就在外部信号或GPIO配置上。问题3CBC故障后PWM无法自动恢复。可能原因故障信号是电平有效且一直保持低电平。CBC模式只在每个PWM周期开始时TBCTR0检查故障状态。如果故障信号持续为低保护动作就会持续。确认你的故障检测电路是否在故障消失后能及时将信号拉高。排查用示波器同时监控故障引脚和PWM输出。确认故障引脚的电平是否在下一个PWM周期开始前已经恢复为高。问题4使用DC模块保护但响应似乎有延迟。可能原因1CMPSS模块的DAC输出稳定时间或比较器响应时间。检查CMPSS的配置特别是DAC参考电压的稳定时间。可能原因2DC事件的选择逻辑TZDCSEL配置有误。例如配置为“上升沿触发”但你的信号是电平触发。可能原因3数字路径同步延迟。虽然DC是硬件路径但信号从CMPSS到ePWM内部仍需要几个时钟周期的同步。对于极高开关频率的应用如500kHz这个延迟可能需要考虑。排查用另一个DAC生成一个快速变化的斜坡电压作为CMPSS输入用示波器测量从输入电压超过阈值到PWM输出动作之间的延迟。这个延迟应基本恒定且远小于软件中断响应时间通常200ns。5. 高级应用与设计考量5.1 死区补偿策略死区虽然防止了直通但也引入了非线性失真尤其是在低电压输出时会导致电流波形畸变和零电流钳位现象。在高性能电机矢量控制FOC中通常需要软件死区补偿。基本思想根据电流方向判断电流是流经上管二极管还是下管二极管续流从而判断实际施加在电机上的电压是高于还是低于PWM命令电压。然后在软件中对PWM占空比命令进行微调增加或减少一个等效的死区时间。实现难点需要精确的电流极性检测。在电流过零点附近检测容易出错可能引起振荡。通常需要结合观测器或滤波器进行平滑处理。5.2 多级故障保护架构在一个可靠的系统中故障保护应该是多层次的硬件第一级Trip-Zone针对最紧急、最危险的故障短路、严重过流响应时间1μs。完全由硬件实现。硬件第二级DC模块CBC针对可恢复的过流、过压实现快速的逐周期限流响应时间在几个μs内。软件保护ADC采样中断针对变化较慢的故障如平均过流、过热、通信故障等。响应时间在几十到几百μs。上位机/系统级保护最高层的逻辑保护如顺序启停、连锁逻辑等。ePWM的Trip-Zone和DC模块完美覆盖了前两级是构建安全电力电子系统的基石。5.3 与事件触发ET模块的联动Trip-Zone在触发保护动作的同时还可以产生中断EPWMx_TZINT。你可以通过TZEINT寄存器使能这些中断。在中断服务程序ISR中你可以读取TZFLG寄存器判断是哪个故障源触发的CBC还是OSHT是TZ1还是DC事件。执行更复杂的故障处理逻辑如记录故障日志、通知上位机、尝试安全重启序列等。清除相应的故障标志TZCLR。重要提示对于OSHT故障必须在ISR中手动清除TZFLG[OST]标志PWM输出才会被释放。这是一个常见的软件bug来源——故障处理后忘了清除标志导致系统无法重启。最后再分享一个调试小技巧在开发初期可以故意在代码中插入对TZFRC寄存器的写操作来模拟各种故障从而在不连接真实功率电路的情况下全面测试你的保护逻辑和软件响应是否正确。这能极大提高开发效率和安全性。记住在电力电子领域保护电路的可靠性永远排在第一位没有“差不多”必须“百分百”。