ePWM故障保护与数字比较模块:硬件级实时保护的配置与实战

发布时间:2026/7/19 10:16:03
ePWM故障保护与数字比较模块:硬件级实时保护的配置与实战 1. 项目概述与核心价值在搞电机驱动或者数字电源的兄弟肯定都跟ePWM增强型脉宽调制器打过交道。这东西说白了就是咱们微控制器里那个能产生高精度PWM波形的“心脏”占空比调得好电机转得稳电源输出才干净。但光会发波还不够真正的挑战在于“保命”——当系统突然出现过流、过压或者温度飙升时你的硬件反应必须比软件中断快几个数量级否则就是一阵青烟和老板的“亲切问候”。这就是ePWM的Trip-Zone故障保护区和Digital Compare数字比较模块存在的意义。它们不是锦上添花的功能而是系统安全的“最后一道硬件防线”。Trip-Zone模块能直接响应外部故障引脚比如TZ1到TZ6的信号在几个时钟周期内强制改变PWM输出的状态是纯粹的硬件动作。而Digital Compare模块则更“智能”一些它能把外部模拟比较器输出的信号、或者其他数字信号拿进来做逻辑比较然后灵活地触发各种后续动作比如让Trip-Zone干活、产生中断告诉CPU、或者直接命令ADC开始采样。把这两个模块玩明白了你设计的系统才能既灵敏又可靠。比如在峰值电流控制中每个PWM周期都需要根据电流反馈及时关断这靠软件是来不及的必须依赖Digital Compare的实时比较和Trip-Zone的逐周期Cycle-by-Cycle保护。又比如在桥式电路中需要区分严重故障一次性关断和可恢复故障每个周期都检查这就得用到Trip-Zone的单次触发One-Shot和逐周期两种模式。接下来我就结合手册里的配置实例和多年踩坑经验把这套机制的里里外外、配置要点和实战避坑指南给你拆解清楚。2. Trip-Zone模块深度解析与配置实战Trip-Zone模块是ePWM的“紧急制动系统”。它的设计哲学很简单当特定的故障输入信号有效时绕过所有软件逻辑直接、强制地改变PWM输出引脚EPWMxA和EPWMxB的状态。这种硬件级的响应确保了保护的实时性和确定性。2.1 两种核心保护模式One-Shot与Cycle-by-Cycle理解这两种模式是配置的基石它们应对的是不同严重等级的故障。One-Shot (OSHT) 单次触发模式 顾名思义这种模式像保险丝熔断了就需要手动复位。一旦触发ePWM输出会被强制锁定在预设的安全状态比如全部拉低并且不会自动恢复直到软件显式地清除故障标志位。它用于处理致命的、不可恢复的故障例如硬件短路、严重过温。触发后系统通常需要完全停机检查。Cycle-by-Cycle (CBC) 逐周期模式 这种模式更像一个自动复位断路器。在每个PWM周期开始时故障锁存器会被自动清除。如果在本周期内发生了故障输出会被强制动作但到了下一个周期如果故障信号已经消失ePWM输出会自动恢复正常调制无需软件干预。它用于处理临时的、可恢复的过载比如电机的瞬时过流。这是实现峰值电流控制等高级算法的关键。2.2 寄存器配置核心思路与场景实现手册里给了两个经典的配置例子我们不仅要看懂它写了什么更要明白它为什么这么写。场景A解析集中式严重故障保护这个场景描述是TZ1引脚上的一个One-Shot故障需要同时关断ePWM1的输出拉低并把ePWM2的输出置为高电平安全状态。ePWM1配置逻辑TZSEL[OSHT1] 1 这步是“启用警报”。它告诉ePWM1模块“请注意TZ1这个引脚是作为One-Shot故障的源一旦它报警你要立刻行动。”TZCTL[TZA] 2与TZCTL[TZB] 2 这步是“定义应急预案”。值2代表“强制拉低”Force Low。这意味着当TZ1触发时EPWM1A和EPWM1B这两个引脚会被硬件强制拉到低电平无论此时计数器比较模块CC想输出什么。在多数功率电路中拉低意味着关闭上桥臂或下桥臂的驱动是常见的关断状态。ePWM2配置逻辑TZSEL[OSHT1] 1 同样让ePWM2也监听TZ1这个全局故障信号。TZCTL[TZA] 1与TZCTL[TZB] 1 这里的值1代表“强制拉高”Force High。这说明了安全状态并非只有“拉低”一种。在某些拓扑中比如某些半桥或特定刹车电路将输出置为高电平才是安全状态可以确保功率管完全关闭或进入特定续流模式。这个场景的典型应用在一个多相电机驱动器中TZ1可能连接到一个全局的硬件过流保护电路。一旦检测到贯穿所有相线的致命短路立即触发One-Shot将所有ePWM模块的输出置于预设的安全态有的相拉低有的相拉高实现系统级硬关断。场景B解析混合故障与精细化控制这个场景更复杂它演示了如何对不同ePWM模块、不同故障源进行差异化响应。ePWM1的响应 它只对TZ5上的CBC故障做出反应动作是将两个输出都强制拉低。这很适合用于该模块自身的逐周期电流限流保护。ePWM2的响应 它对TZ1或TZ6上的OSHT故障做出反应。但注意它对两个输出通道的处理方式不同TZCTL[TZA] 0 值0代表“高阻态”Hi-Z。这意味着EPWM2A引脚在故障时对外呈现高阻抗相当于断开连接。这常用于需要让外部电路如互锁逻辑、另一个控制器接管控制的场景。TZCTL[TZB] 3 值3代表“忽略”Do Nothing。EPWM2B完全不理睬这个故障继续正常输出。这可能在冗余设计或某些特定保护逻辑中使用例如只关断故障相健康相继续运行。配置中的关键陷阱与实操要点警告配置顺序是生命线手册的Note里强调了一点但很多新手会栽在这里一定要先配置好GPIO多路复用器和输入X-BAR最后再使能Trip-Zone设置TZSEL。如果你反着来在配置X-BAR输入选择的瞬间引脚电平变化可能会被误认为是一个跳变的故障信号从而立即触发保护导致系统无法正常启动。正确的顺序是1. 配置GPIO引脚功能为ePWM TZ输入2. 配置Input X-BAR将物理引脚映射到内部的TZ信号3. 配置EPWM X-BAR如果需要4. 最后才去写TZSEL寄存器来启用这些故障源。2.3 故障中断的产生与处理光有硬件动作还不够我们通常还需要CPU知道“故障发生了”以便记录日志、尝试恢复或上报。这就是图26-44所描述的Trip-Zone中断逻辑。每个故障事件CBC、OST、以及来自Digital Compare的DCAEVT1/2、DCBEVT1/2都有自己独立的中断标志位TZFLG[CBC],TZFLG[OST],TZFLG[DCAEVT1]等和使能位TZEINT寄存器中对应的位。中断产生流程故障事件发生例如TZ1引脚有效。如果该事件在TZSEL中被启用且对应的中断在TZEINT中被使能则相应的标志位如TZFLG[OST]会被置位。所有这些事件的中断输出在内部进行“或”运算最终产生一个EPWMxTZINT中断信号给到PIE外设中断扩展器。CPU进入中断服务程序ISR。中断服务程序ISR里的关键操作 在TZ中断ISR里第一件事就是读取并清除中断标志。这里有个重要细节TZFLG寄存器是只读的你不能直接写它来清除标志。清除标志需要通过写TZCLR寄存器对应的位。例如要清除OST中断标志需要执行TZCLR[OST] 1。为么需要先读TZFLG因为多个故障源可能共享同一个EPWMxTZINT中断。通过读取TZFLG你可以判断具体是哪个或哪几个事件触发了本次中断从而进行针对性的处理。处理完毕后再写TZCLR清除你已处理的事件标志。一个常见的坑在One-Shot故障触发后输出被锁死。即使故障源已经消失你也必须在ISR中完成a) 检查并处理故障原因b) 清除TZFLG[OST]标志c) 有时还需要手动清除TZFRC[OSHT]寄存器中的强制输出状态位如果之前被置位或者通过其他软件流程复位系统ePWM输出才会恢复正常。否则输出将永远停留在故障安全状态。3. Digital Compare模块从信号到事件的智能桥梁如果说Trip-Zone是条件反射式的快速反应那么Digital CompareDC模块就是ePWM的“感官中枢”和“预处理大脑”。它负责接收并解释外部复杂的数字信号将其转化为ePWM内部能理解的标准化“事件”从而触发更丰富的操作。3.1 模块功能与信号通路全景看图26-50我们可以把DC模块的工作拆解成几个核心环节信号输入选择源头 DC模块的输入信号极其灵活不限于TZ1-TZ3。通过DCTRIPSEL、DCAHTRIPSEL等寄存器你可以将多达15种外部信号通过Input X-BAR引入配置为DC模块的源。这包括传统的故障引脚TZ1, TZ2, TZ3。来自模拟比较器子系统CMPSS的输出CMPSSx.TRIPH/L这是最常用的方式用于将模拟电流/电压信号转化为数字保护信号。其他外设的错误信号如ECCDBLERR存储器双位错误、PIEVECTERRPIE向量错误等可以实现系统级联锁保护。甚至可以将多个输入进行“或”组合Trip Combination Input形成一个综合的故障信号。事件生成翻译 被选中的输入信号会被分类为“Digital Compare A High/Low (DCAH/DCAL)”和“Digital Compare B High/Low (DCBH/DCBL)”这四类基本信号。然后通过TZDCSEL等寄存器的配置这些高低电平信号可以产生两类核心事件DCAEVT1和DCAEVT2 主要关联到EPWMxA输出通道。DCBEVT1和DCBEVT2 主要关联到EPWMxB输出通道。 每个DCxEVTy事件都可以独立配置其触发条件例如在DCAH为高时产生DCAEVT1。事件分发与执行行动 生成的DCxEVTy事件有四种强大的去处.force 直接强制Trip-Zone动作。这是最直接的链路DCAEVT1.force信号可以直接像TZ信号一样去控制EPWMxA的输出状态通过TZCTL[DCAEVT1]等寄存器配置实现了通过模拟比较器结果直接进行硬件保护。.inter 产生Trip-Zone中断。通过使能TZEINT[DCAEVT1]等位可以让DC事件触发CPU中断进行软件处理。.soc 触发ADC开始转换。这是实现精准采样同步的关键。例如在电流达到某个阈值由CMPSS检测时立刻触发ADC采样该时刻的电流值用于数字控制算法。.sync 产生同步信号用于同步本模块或其他ePWM模块的时基计数器TBCTR实现多模块的精确相位联动。3.2 消隐窗口对抗噪声的利器在功率变换中开关管如MOSFET、IGBT开通和关断的瞬间会产生严重的电压和电流尖峰噪声。这些噪声如果被模拟比较器捕捉到可能会产生虚假的故障信号导致系统误保护。DC模块的消隐窗口Blanking Window功能就是为了解决这个问题。工作原理 消隐窗口是在每个PWM周期内人为设置的一段“无视期”。在这段时间内即使有DCxEVTy事件产生也会被过滤掉不会产生.force、.inter等动作。关键配置寄存器DCFCTL[BLANKE] 总使能位。DCFCTL[PULSESEL] 选择消隐窗口的同步基准。通常选择CTRPRD周期匹配点或CTR0计数器零点。这决定了窗口在周期内的起始参考点。DCFOFFSET偏移量。从同步基准点如CTRPRD之后延迟多少个TBCLK时钟周期才开始消隐窗口。这个值用于避开开关瞬间的噪声。DCFWINDOW窗口宽度。消隐窗口持续多少个TBCLK时钟周期。配置实例与计算 假设你的PWM频率为100kHz周期10usTBCLK为100MHz10ns。开关噪声主要出现在开关管动作后的0.5us内。设置DCFCTL[PULSESEL]以CTRPRD为基准。计算偏移量为了避开噪声我们从周期点后开始消隐。Offset 0.5us / 10ns 50个时钟周期。所以DCFOFFSET 50。计算窗口宽度我们希望屏蔽掉持续约1us的噪声窗口。Window 1us / 10ns 100个时钟周期。所以DCFWINDOW 100。这样在每个PWM周期开始CTRPRD后的0.5us到1.5us这段时间内DC模块忽略所有事件。1.5us之后系统恢复对真实故障信号的检测。一个至关重要的提醒手册中特别强调你必须配置消隐窗口使得故障输入信号在消隐窗口结束后至少保持3个ePWM时钟周期TBCLK的有效状态。这是为了确保Trip-Zone的锁存器有足够的时间来可靠地捕捉到故障信号。如果信号有效时间太短可能无法被锁存导致保护失效。在设计比较器电路和设置消隐参数时必须把这条硬件时序要求考虑进去。3.3 高级功能事件锁存与同步在图26-52和26-53中可以看到DCxEVT1LAT这个锁存器。这个功能对于像相移全桥PSFB这样复杂的拓扑非常有用。锁存器的作用 在某些应用中我们需要对CBC事件和OST事件采取不同的动作。DCxEVT1LAT可以锁存住一个DC事件直到特定的清除条件发生。其清除条件DCxCTL.EVTy.LATCLRSEL可以配置为CNT0时清除CTRPRD时清除CNT0或CTRPRD时清除这模仿了CBC故障的自动清除机制。你可以选择将.force信号来源于原始事件还是锁存后的事件通过DCxCTL.EVTyLATSEL配置。这样就能实现诸如“第一次过流触发CBC动作如果下个周期过流仍存在则触发OST锁存并执行完全关断”的复杂保护逻辑。同步信号.sync的应用DCAEVT1.sync和DCBEVT1.sync可以输出到时间基子模块用于同步TBCTR计数器。这意味着你可以用一个外部事件比如由CMPSS检测到的过零点来重新同步PWM的相位这在无传感器电机控制或需要与外部时钟严格同步的场合非常有用。4. Event-Trigger模块精准的事件调度器Event-TriggerET模块是ePWM内部的“事件管理器”和“定时触发器”。它接收来自时间基TB、计数器比较CC和数字比较DC子模块的各种事件然后以可编程的节奏去触发中断EPWMxINT和ADC转换启动EPWMxSOCA/B。4.1 核心机制事件预分频ET模块最强大的功能之一是事件预分频。不是每个事件都需要立刻响应。例如你可能只想在每第4个CTRCMPA事件即每4个PWM周期才触发一次中断用于执行速度较慢的控制环路计算。这通过两个寄存器协同工作来实现ETSEL事件选择寄存器。决定哪些事件可以作为触发源。例如ETSEL[INTSEL]选择中断源可以是CTR0,CTRPRD,CTRCMPA上升/下降沿等。ETPS事件预分频寄存器。控制触发节奏。它包含一个计数器INTCNT或SOCACNT和一个期值INTPRD或SOCAPRD。工作流程当所选事件发生时计数器INTCNT加1。当INTCNT累加到等于INTPRD时才产生一个中断脉冲同时INTCNT清零重新开始计数。INTPRD可以设置为1每个事件都中断、2每两个事件中断一次等。增强型预分频 对于更精细的控制ETINTPS和ETSOCPS寄存器提供了第二套计数器INTCNT2/SOCACNT2和周期值INTPRD2/SOCAPRD2支持最多每15个事件触发一次。通过ETPS[INTPSSEL]位来选择使用哪套计数器系统。4.2 配置流程与ADC同步触发实战以配置一个由DC模块事件触发、且每两次事件才启动一次ADC转换为例选择事件源 假设我们想用DCAEVT1.soc事件来触发ADC的SOCA。配置ETSEL[SOCASEL] 10b选择DCAEVT1.soc作为SOCA事件源。具体数值需查手册映射表。配置预分频 我们希望每发生两次DCAEVT1.soc事件才启动一次ADC转换。设置ETPS[SOCAPRD] 2周期为2。ETPS[SOCACNT]寄存器是只读的它会从0开始每次事件发生时自动加1到2时触发SOCA脉冲并归零。使能SOCA生成设置ETSEL[SOCAEN] 1使能SOCA脉冲发生器。关联ADC模块 在ADC模块的配置中需要将对应的EPWMxSOCA信号分配给某个ADC转换序列的启动触发器。这样当Digital Compare模块产生一个事件比如电流超过阈值DCAEVT1.soc信号有效。ET模块的计数器加1。当第二次事件发生时计数器等于周期值2ET模块便产生一个EPWMxSOCA脉冲信号触发ADC启动一次精确的采样。这种硬件级的同步消除了软件延迟带来的抖动对于需要高精度采样时刻的应用如功率因数校正、谐振变换器至关重要。4.3 计数器初始化与同步ETCNTINIT和ETCNTINITCTL寄存器提供了在特定时刻如收到同步输入信号EPWMxSYNCI时初始化INTCNT2/SOCACNT2计数器的能力。这用于在多模块同步系统中确保所有ePWM模块的事件计数器从同一个起点开始从而实现中断和ADC采样的严格同步触发。5. 综合应用与高级调试技巧理解了各个模块后如何将它们串联起来解决实际问题才是工程能力的体现。5.1 构建一个完整的逐周期峰值电流保护系统这是电机和电源控制中最经典的应用之一。信号链 电机相电流通过采样电阻和运放送入CMPSS模拟比较器子系统。CMPSS内部与一个可编程的参考电压即电流限值进行比较。Digital Compare配置将CMPSS的输出例如CMPSS1.TRIPH通过Input X-BAR映射到DC模块的输入例如配置为DCAH信号。配置TZDCSEL使得当DCAH为高电流超限时产生DCAEVT1事件。配置DCFCTL,DCFOFFSET,DCFWINDOW设置合理的消隐窗口避开开关噪声。Trip-Zone配置将DCAEVT1.force信号配置为Cycle-by-Cycle故障源TZSEL[CBCx] 1具体x取决于映射。配置TZCTL[TZA] 2使得当CBC故障触发时强制对应的PWM输出为低关闭该相上管或下管。Event-Trigger配置可选使能DCAEVT1.inter中断TZEINT[DCAEVT1]1用于在软件中记录过流事件次数进行诊断或累计保护。或者使能DCAEVT1.soc在电流达到阈值的瞬间触发ADC采样用于更复杂的算法。这样一旦电流超过设定值CMPSS输出变高DC模块在消隐窗口外检测到DCAH有效立即产生DCAEVT1.force信号。Trip-Zone模块以CBC模式响应在本PWM周期内立即强制关断PWM输出限制电流上升。到了下一个PWM周期开始如果电流已回落CMPSS输出变低则保护自动解除PWM恢复正常输出。整个过程完全由硬件完成响应时间在几十到几百纳秒级软件无需干预。5.2 调试与排查常见问题故障无动作检查信号通路 用示波器或寄存器查看工具一级级确认。GPIO引脚有信号吗Input X-BAR选择对了吗DCTRIPSEL和DCAHTRIPSEL等寄存器配置正确吗DCAH/DCAL状态位是否变化检查使能TZSEL寄存器中对应的故障源使能了吗TZCTL动作配置对吗检查消隐窗口 是否因为DCFOFFSET或DCFWINDOW设置不当把真实故障信号也给“消隐”掉了计算一下时间参数。误触发频繁首要怀疑对象是噪声 检查硬件布局电流采样回路是否远离功率开关回路比较器参考电压是否干净大概率需要调整消隐窗口参数增加DCFOFFSET延迟或加大DCFWINDOW宽度。检查输入信号极性TZ引脚和DC输入信号是高电平有效还是低电平有效TZCTL中配置的TZx信号极性选择位如果支持是否正确One-Shot故障后无法恢复确认在中断服务程序ISR中是否清除了TZFLG[OST]标志通过写TZCLR[OST]1。检查是否清除了TZFRC[OSHT]寄存器中的强制状态位如果之前被置位。检查故障源信号是否已经真正消失。有时需要软件复位整个ePWM模块或相关外设。中断进不去检查本地使能TZEINT寄存器中对应的事件中断使能位开了吗检查PIE配置EPWMxTZINT在PIE模块中是否正确映射到了中断向量表该中断在PIE和CPU级别是否被使能PIECTRL,IER寄存器检查标志位 是否之前的中断标志未清除TZFLG位为1时会阻止新的中断产生。掌握ePWM的Trip-Zone和Digital Compare模块意味着你掌握了在电力电子系统中实现纳秒级实时保护的钥匙。从简单的引脚故障保护到基于模拟比较的复杂逐周期限流再到与ADC采样的精密同步这套硬件机制提供了无与伦比的可靠性和灵活性。配置时牢记“信号流”思想从外部引脚到内部事件再到最终动作逐级检查。调试时善用寄存器的状态位和示波器重点关注消隐窗口和时序要求。把这些模块吃透你设计的电机驱动或电源产品在稳定性和可靠性上就能甩开对手一个身位。