C2000 ePWM硬件保护:Trip-Zone与Digital Compare实战解析 1. 项目概述与核心价值在搞电机驱动、数字电源或者任何需要高可靠性PWM输出的嵌入式系统时最怕的就是“炸管”。一个瞬间的过流或过压轻则烧毁MOSFET重则整个系统瘫痪。传统的软件保护有延迟等CPU反应过来黄花菜都凉了。这时候硬件级的即时保护机制就是你的“救命稻草”。德州仪器TIC2000系列微控制器中的增强型脉宽调制器ePWM模块其Trip-Zone故障区和Digital Compare数字比较子模块正是为此而生。它们不是锦上添花的功能而是构建坚固系统护城河的基石。简单来说Trip-ZoneTZ是你的紧急刹车系统。它通过专用的硬件引脚TZ1-TZ6实时监测故障信号一旦发现问题能在纳秒级时间内绕过CPU直接强制PWM输出进入预设的安全状态比如全部拉低切断危险源。而Digital CompareDC子模块则像是一个高度可配置的“信号翻译官”和“智能哨兵”。它能把来自模拟比较器输出或其他数字信号的状态灵活地映射成ePWM模块能理解的“事件”Event进而触发Trip-Zone动作或者直接产生中断、启动ADC转换甚至同步其他PWM模块。这意味着你的保护逻辑可以基于更复杂的模拟量条件比如“母线电压高于某阈值且电流也超标”而不仅仅是简单的数字电平。本文将彻底拆解这两个子模块。我不会只复述数据手册的寄存器描述而是结合我多年在电机控制和电源项目中的实际踩坑经验带你理解它们的设计哲学、联动方式并给出从配置思路到寄存器操作、从常见陷阱到调试技巧的完整实战指南。无论你是正在评估方案还是已经深陷调试泥潭相信这些内容都能帮你把ePWM的“安全气囊”真正用起来而不是让它躺在数据手册里睡大觉。2. 深入理解Trip-Zone子模块系统的硬件看门狗2.1 TZ信号来源与架构设计Trip-Zone的核心思想是异步、快速、可靠。每个ePWM模块都连接着6个TZ信号TZ1至TZ6但它们并非“一视同仁”其来源和用途体现了分层保护的设计理念TZ1, TZ2, TZ3 这三个信号来源于GPIO复用模块。这是最常用、最灵活的外部故障输入。你可以将电流采样电路的比较器输出、电压检测信号、驱动芯片的故障输出如DESAT保护等直接连接到这三个引脚。它们通常用于用户自定义的、需要快速响应的故障如逐周期电流限流、硬件过流保护。TZ4 其信号源是EQEP1ERR与EQEP2ERR的逻辑或。这是专为电机控制设计的安全特性。当正交编码器QEP模块检测到错误例如信号丢失、计数错误时会自动触发此故障让你能在电机位置反馈异常时立即停止PWM输出防止失步或飞车。TZ5 连接到系统时钟振荡器或PLL失效逻辑。这是针对芯片自身“心跳”的监控。如果系统主时钟发生故障PWM的时基将混乱输出不可预测。TZ5能在此情况下强制PWM进入安全状态是系统级的安全备份。TZ6 来源于CPU调试模式暂停指示输出。当你在仿真器中进行单步调试或遇到断点时TZ6会自动生效方便你安全地暂停PWM输出而不损坏外围电路。这种设计将故障分为外部物理故障TZ1-TZ3、外围模块故障TZ4、时钟故障TZ5和调试故障TZ6实现了多维度、纵深防御。实操心得引脚分配策略在实际PCB布局时一定要将TZ1-TZ3引脚优先分配给最关键的故障信号并且走线要短远离噪声源。例如在三相逆变器中我通常将下桥臂的直通保护Shoot-Through信号分配给TZ1因为它要求最高的响应速度。TZ4、TZ5、TZ6通常由内部逻辑自动管理但务必在软件初始化时确认其默认状态是否符合预期。2.2 两种核心保护模式OSHT与CBCTZ子模块提供了两种响应模式对应不同严重等级的故障2.2.1 单次触发单次触发模式用于处理严重的、不可恢复的故障例如严重的短路、过压或系统级错误。其行为逻辑是“一击即锁”触发当配置为OSHT源的TZ信号有效低电平时立即触发。动作立即执行TZCTL寄存器中为TZA/TZB或DCAEVT1/DCBEVT1配置的动作如强制输出高、低或高阻。锁存故障状态会被硬件锁存。即使外部故障信号已经消失PWM输出也将保持在被强制后的安全状态。恢复必须通过软件手动清除。你需要向TZCLR[OST]位写1才能清除锁存使PWM输出恢复正常调制。同时TZFLG[OST]状态标志位会置1并可配置产生EPWMx_TZINT中断通知CPU进行故障日志记录或系统复位。2.2.2 逐周期触发逐周期触发模式用于处理可恢复的、周期性的限流或保护例如峰值电流保护。其行为逻辑是“每周期仲裁”触发当配置为CBC源的TZ信号有效时立即触发。动作立即执行TZCTL寄存器中配置的对应动作。自动清除故障状态不是锁存的。当时基计数器TBCTR归零TBCTR 0x0000时硬件会自动检查TZ信号。如果此时故障信号已消失则PWM输出在下一个周期自动恢复正常调制如果故障依然存在则在新周期再次触发保护动作。标志位TZFLG[CBC]标志位会在触发时置1但它不会阻止PWM在新周期恢复。该标志需要软件手动清除写TZCLR[CBC]但如果清除时故障信号仍存在它会立即再次被置1。核心配置解析TZSEL寄存器这是TZ模块的“总开关”和“路由表”。TZSEL[CBCn]和TZSEL[OSHTn]位n1~6分别决定每个TZ信号是作为CBC源还是OSHT源。一个TZ信号只能选择一种模式。例如TZSEL[CBC1]1且TZSEL[OSHT1]0表示TZ1是CBC源。TZSEL[DCAEVT1/2]和TZSEL[DCBEVT1/2]位则用于将Digital Compare事件映射为OSHT或CBC源这是两个子模块联动的关键。2.3 输出动作配置与优先级当故障发生时你可以独立配置每个PWM输出通道EPWMxA和EPWMxB的行为通过TZCTL寄存器控制TZCTL[TZA]或[TZB]位域EPWMxA/B 动作适用场景与注释0,0高阻抗最安全的模式。直接关闭驱动器的上下桥臂使输出悬空。常用于防止短路但需注意负载可能因惯性产生反电动势。0,1强制为高强制输出恒定高电平。在某些拓扑中如某些半桥驱动这可能是安全状态。需根据具体功率电路判断。1,0强制为低最常用、最安全的动作。对于大多数桥式电路强制所有输出为低可以关断所有开关管切断电源与负载的连接。1,1无变化忽略此次故障。可用于调试或在多路PWM中仅让部分通道响应故障。动作优先级是一个极易混淆但至关重要的概念。当多个故障源如TZ信号和DC事件同时或先后作用于同一个输出引脚时硬件遵循固定的优先级裁决对于EPWMxA引脚TZA配置的动作优先级最高其次是DCAEVT1最低是DCAEVT2。对于EPWMxB引脚TZB配置的动作优先级最高其次是DCBEVT1最低是DCBEVT2。这意味着如果一个TZ信号已将输出强制为低通过TZA那么即使后续发生一个配置为强制为高的DCAEVT1事件出也将保持为低因为TZA的优先级更高。这确保了最严重的故障拥有最高控制权。2.4 寄存器配置实战与代码示例理解了原理我们来看如何用代码配置。假设一个典型场景我们使用TZ1来自硬件比较器的过流信号作为逐周期限流使用TZ2来自另一个比较器的过压信号作为单次触发的严重故障保护。// 假设 ePWM1 模块基地址为 EPWM1_BASE // 1. 配置故障源选择寄存器 (TZSEL) // 将 TZ1 配置为逐周期(CBC)源将 TZ2 配置为单次触发(OSHT)源 EPWM_setTripZoneSource(EPWM1_BASE, EPWM_TZ_SOURCE_DCAEVT1, // DCAEVT1 未使用 EPWM_TZ_SOURCE_DCAEVT2, // DCAEVT2 未使用 EPWM_TZ_SOURCE_DCBEVT1, // DCBEVT1 未使用 EPWM_TZ_SOURCE_DCBEVT2); // DCBEVT2 未使用 // 使用位域操作更清晰以TI的driverlib风格为例 HWREGH(EPWM1_BASE EPWM_O_TZSEL) 0x0000; // 先清零 HWREGH(EPWM1_BASE EPWM_O_TZSEL) | EPWM_TZSEL_CBC1; // TZ1 作为 CBC 源 HWREGH(EPWM1_BASE EPWM_O_TZSEL) | EPWM_TZSEL_OSHT2; // TZ2 作为 OSHT 源 // 2. 配置故障动作控制寄存器 (TZCTL) // 当CBC故障(TZ1)发生时将A通道强制拉低B通道强制拉低 EPWM_setTripZoneAction(EPWM1_BASE, EPWM_TZ_ACTION_EVENT_TZA, // 针对TZA事件即CBC/OSHT事件 EPWM_TZ_ACTION_LOW); // 动作强制为低 EPWM_setTripZoneAction(EPWM1_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW); // 当OSHT故障(TZ2)发生时我们希望动作相同但通常OSHT和CBC共用TZA/TZB配置。 // 如果需要为DC事件配置不同动作需使用以下函数 EPWM_setDigitalCompareTripAction(EPWM1_BASE, EPWM_DC_TRIP_TRIPIN1, // DCAEVT1 EPWM_DC_TRIP_OUTPUT_A, EPWM_TZ_ACTION_HIGH); // 例如DCAEVT1让A输出高 // 3. 使能故障中断如果需要CPU记录 // 使能CBC和OSHT中断 EPWM_enableTripZoneInterrupt(EPWM1_BASE, EPWM_TZ_INTERRUPT_CBC); EPWM_enableTripZoneInterrupt(EPWM1_BASE, EPWM_TZ_INTERRUPT_OST); // 配置PIE中断向量等此处省略... // 4. 在中断服务函数中处理故障标志 __interrupt void epwm1TzISR(void) { uint16_t tzFlags EPWM_getTripZoneFlags(EPWM1_BASE); if (tzFlags EPWM_TZ_FLAG_CBC) { // 处理逐周期限流事件 // 可能是瞬时过载可以记录或调整控制参数 EPWM_clearTripZoneFlag(EPWM1_BASE, EPWM_TZ_FLAG_CBC); } if (tzFlags EPWM_TZ_FLAG_OST) { // 处理单次触发严重故障 // 1. 记录故障日志如发生时的电流、电压 // 2. 可能需要执行系统安全停机序列 // 3. 清除标志注意清除OST标志不会恢复PWM输出输出仍被锁存 EPWM_clearTripZoneFlag(EPWM1_BASE, EPWM_TZ_FLAG_OST); // 4. 在确保故障原因已排查后再通过TZCLR[OST]恢复PWM通常需要用户操作或重启 // EPWM_forceTripZoneEvent(EPWM1_BASE, EPWM_TZ_FORCE_EVENT_OST); // 这是强制触发不是清除 // 正确的恢复操作通常是复位整个ePWM模块或重新初始化。 } // ... 清除PIE中断应答位 }避坑指南异步与同步TZ信号是异步输入的这意味着即使系统时钟SYSCLK丢失只要引脚上有有效的低电平脉冲持续至少3个TBCLK周期宽度保护仍然能动作。这是“救命”的特性。但这也带来了噪声敏感的问题。务必在硬件上对TZ输入信号进行适当的RC滤波并在GPIO模块中启用数字滤波如果支持以防止误触发。数据手册中“3*TBCLK”的最小脉宽要求是你设计滤波电路时的重要参考。3. Digital Compare子模块灵活的事件引擎如果说Trip-Zone是简单的紧急按钮那么Digital Compare就是一个功能强大的可编程逻辑控制器。它允许你将外部数字信号主要是TZ1-TZ3进行逻辑组合和条件判断生成更复杂的事件来驱动ePWM的其他部分。3.1 核心信号流从输入到事件DC子模块的核心流程可以概括为选择信号 - 定义条件 - 生成事件 - 分发执行。信号选择 通过DCTRIPSEL寄存器你可以指定哪些信号作为“数字比较A高/低”和“数字比较B高/低”的输入源。最常用的源就是TZ1, TZ2, TZ3这三个GPIO引脚。你可以将模拟比较器COMP1的输出接到TZ1并配置为DCAH数字比较A高的信号源。事件生成 通过TZDCSEL寄存器它属于TZ模块但功能上服务于DC来定义事件触发的条件。这是DC模块灵活性的关键。对于DCAEVT1和DCAEVT2事件你可以定义它们在DCAH和DCAL信号处于何种逻辑状态时触发。例如可以配置DCAEVT1在DCAH1且DCAL0时触发即信号为高DCAEVT2在DCAH0且DCAL1时触发即信号为低。这允许你对信号的上升沿和下降沿分别定义不同的事件。DCBEVT1/2同理对应DCBH和DCBL信号。事件分发与过滤 生成的事件DCAEVT1/2,DCBEVT1/2有四个去处Force 直接作为“强制”信号送入Trip-Zone模块可以立即触发PWM输出动作通过TZCTL[DCAEVT1]等位配置或作为OSHT/CBC的源通过TZSEL寄存器选择。Interrupt 产生Trip-Zone中断EPWMx_TZINT通知CPU。SOC 作为事件触发子模块的源用于启动ADC转换SOCA或SOCB。这是实现与模拟信号同步采样的强大工具。Sync 产生同步脉冲可以同步本模块或其他ePWM模块的时基计数器TBCTR。此外事件在分发前还可以选择是否经过一个消隐窗口进行滤波。3.2 消隐窗口滤波对抗噪声的利器在电机控制中功率器件如IGBT、MOSFET开关瞬间会产生巨大的电压电流尖峰和噪声。这些噪声很可能被模拟比较器误判为故障信号导致保护误动作。DC模块的消隐窗口功能就是为了滤除这些开关噪声。其工作原理类似于一个可编程的“屏蔽时段”对齐点 窗口的起始点与PWM的特定点对齐由DCFCTL[PULSESEL]选择通常是CTRPRD周期点或CTR0零点。这确保了窗口与PWM周期同步。偏移量DCFOFFSET寄存器设定一个以TBCLK为单位的延迟。在对齐点之后经过偏移量这么长时间消隐窗口才开始。窗口宽度DCFWINDOW寄存器定义了窗口的持续时间同样以TBCLK为单位。在此窗口期内所有选定的DC事件都会被忽略。应用场景 例如在一个采用双采样中点采样和峰值采样的电流环中你知道功率管开关后的一段固定时间内即死区时间及振铃衰减期比较器输出是不可靠的。你可以将消隐窗口设置在这段时间完美避开噪声。配置示例滤除开关噪声假设PWM频率为10kHz周期100usTBCLK100MHz10ns。开关噪声大约持续2us。我们希望在每个PWM周期开始CTR0后的0.5us开始屏蔽持续2.5us。计算偏移量 0.5us / 10ns 50个TBCLK周期。窗口宽度 2.5us / 10ns 250个TBCLK周期。配置DCFCTL[PULSESEL] 0(选择CTR0对齐)DCFOFFSET 50DCFWINDOW 250。效果在每个PWM周期的前0.5us以及2.5us之后DC事件正常响应而在中间的2.5us窗口内事件被忽略从而避免了开关噪声干扰。3.3 高级应用基于DC的事件触发与同步DC模块与事件触发子模块的联动解锁了ePWM的高级同步与采样功能。3.3.1 精准的ADC同步采样传统上我们使用CTRCMPA或CTRPRD等时间点来触发ADC这对于固定时刻采样是足够的。但有了DC我们可以实现基于条件的自适应采样。例如在功率因数校正电路中我们希望在线电压过零点附近进行高精度采样。你可以将经过整流的线电压信号送入比较器与一个阈值比较输出接到TZ1并配置为DCAH信号。然后配置DCAEVT1.soc作为SOCA的触发源。这样ADC的启动不再依赖于固定的计数器值而是依赖于真实的模拟信号过零点事件实现了与电网的严格同步。3.3.2 复杂的多模块同步DCAEVT1.sync和DCBEVT1.sync可以输出同步脉冲。这意味着一个ePWM模块中由模拟信号触发的事件可以作为同步源去同步其他ePWM模块的时基。这在需要多个PWM模块严格跟随某个外部物理事件如转子位置的应用中非常有用比如在多相交错并联的电源中实现精确的相位同步。3.4 寄存器配置实战实现一个基于比较器的逐周期限流场景使用模拟比较器COMP1监控电感电流当其输出超过阈值高电平时我们希望立即关断当前PWM周期CBC动作并在下个周期恢复。同时记录该事件发生的时刻。// 硬件连接COMP1输出 - GPIO引脚配置为TZ1功能 // 目标COMP1输出高电平时触发ePWM1的逐周期保护并强制A/B输出低。 // 1. 配置 Digital Compare 信号源选择 (DCTRIPSEL) // 将 TZ1 引脚信号映射为 Digital Compare A High (DCAH) 的信号源 // 假设 TZ1 对应 DCAH 的选项值为 1 (请查阅具体器件数据手册) HWREGH(EPWM1_BASE EPWM_O_DCTRIPSEL) 0x0000; // 先清零 HWREGH(EPWM1_BASE EPWM_O_DCTRIPSEL) | (1 EPWM_DCTRIPSEL_DCAHCOMPSEL_S); // DCAH 源选择 TZ1 // 2. 配置 Trip-Zone Digital Compare 选择 (TZDCSEL) // 定义 DCAEVT1 事件在什么条件下产生。 // 我们希望当 DCAH1 (即COMP1输出高表示过流) 时触发 DCAEVT1。 // 同时我们不关心 DCAL将其条件设为“不关心”(X)。 // 通常配置为DCAEVT1 在 (DCAH高, DCAL低) 时触发这对应信号为逻辑高。 // 假设寄存器值DCAEVT1 在 DCAH高 DCAL低 时触发。 HWREGH(EPWM1_BASE EPWM_O_TZDCSEL) 0x0000; // 设置 DCAEVT1 的触发条件为 DCAH高有效。具体位域需查手册例如 // HWREGH(EPWM1_BASE EPWM_O_TZDCSEL) | (EPWM_TZDCSEL_DCAEVT1_SEL_DCAH_HI EPWM_TZDCSEL_DCAEVT1_SEL_S); // 3. 配置 Trip-Zone 选择 (TZSEL) // 将 DCAEVT1 事件配置为逐周期(CBC)故障源 HWREGH(EPWM1_BASE EPWM_O_TZSEL) | EPWM_TZSEL_DCAEVT1; // DCAEVT1 作为事件源 // 同时需要将其模式设为 CBC注意某些器件中 DCAEVT1 固定为OSHT或CBC需查证。这里假设可配 // 更常见的做法是DCAEVT1 通过 TZCTL 直接动作或作为 CBC 源。我们选择后者。 // 需要设置 TZSEL 中对应 DCAEVT1 为 CBC 的位。假设该位为 TZSEL[DCEVTFILT] 或类似。 // 此处简化实际需根据寄存器定义操作。 // 4. 配置 Trip-Zone 动作 (TZCTL) // 当 DCAEVT1 作为 CBC 事件发生时我们希望它执行的动作。 // 由于我们将其配置为CBC源它应通过 TZA/TZB 动作响应或者有专用的 DCAEVT1 动作控制位。 // 假设我们通过 TZCTL[DCAEVT1] 位域来配置动作。 EPWM_setDigitalCompareTripAction(EPWM1_BASE, EPWM_DC_TRIP_TRIPIN1, // DCAEVT1 EPWM_DC_TRIP_OUTPUT_A, EPWM_TZ_ACTION_LOW); // A输出强制低 EPWM_setDigitalCompareTripAction(EPWM1_BASE, EPWM_DC_TRIP_TRIPIN1, EPWM_DC_TRIP_OUTPUT_B, EPWM_TZ_ACTION_LOW); // B输出强制低 // 5. 可选配置消隐窗口以滤除开关噪声 EPWM_setDigitalCompareFilterInput(EPWM1_BASE, EPWM_DC_FILTER_INPUT_DCAEVT1); // 对 DCAEVT1 滤波 EPWM_setDigitalCompareFilterWindowOffset(EPWM1_BASE, 50); // 偏移 50 TBCLK EPWM_setDigitalCompareFilterWindowLength(EPWM1_BASE, 250); // 窗口 250 TBCLK EPWM_setDigitalCompareFilterEdge(EPWM1_BASE, EPWM_DC_FILTER_PULSE_CTR_ZERO); // 对齐到 CTR0 EPWM_enableDigitalCompareFilter(EPWM1_BASE); // 使能滤波 // 6. 可选使能中断并捕获故障时刻 EPWM_enableDigitalCompareCounterCapture(EPWM1_BASE); // 使能计数器捕获 EPWM_setDigitalCompareCounterCaptureMode(EPWM1_BASE, EPWM_DC_CAPTURE_MODE_SHADOW); // 影子模式 EPWM_enableTripZoneInterrupt(EPWM1_BASE, EPWM_TZ_INTERRUPT_DCAEVT1); // 在中断中你可以读取捕获的计数器值知道故障发生在PWM周期的哪个精确时刻 // uint16_t captureVal EPWM_getDigitalCompareCounterCapture(EPWM1_BASE);4. 联动应用与高级配置策略4.1 TZ与DC的协同工作模式在实际系统中TZ和DC很少孤立工作而是协同构建多层次保护初级保护 使用TZ1硬件比较器实现纳秒级响应的逐周期限流。这是最后一道、也是最快的硬件防线用于抑制每个PWM周期内的电流尖峰。次级保护 使用DC模块监控另一个比较器或经过处理的信号当条件满足时如平均电流过高触发单次故障并产生中断。CPU在中断服务程序中可以执行更复杂的故障处理如逐步降频、安全停机序列。事件触发 利用DCAEVT1.soc在电流过零点自动触发ADC采样实现最优的采样时刻提升控制精度。同步 利用DCAEVT1.sync让一个从ePWM模块的时基与主模块的某个DC事件同步实现复杂的多相调制。4.2 配置流程 checklist为了避免遗漏建议按照以下清单进行配置[ ]GPIO/引脚配置 将用于TZ输入的引脚配置为ePWM故障功能并设置上拉/下拉、数字滤波。[ ]模拟比较器配置 如果使用内部COMP模块配置其参考电压、 hysteresis、输出极性。[ ]DCTRIPSEL 明确每个DC信号DCAH, DCAL, DCBH, DCBL的来源哪个TZ引脚。[ ]TZDCSEL 定义每个DC事件DCAEVT1/2, DCBEVT1/2的触发逻辑高有效、低有效、双边沿。[ ]TZSEL确定哪些TZ引脚用作故障源CBC或OSHT。确定哪些DC事件用作故障源并指定其模式CBC或OSHT。[ ]TZCTL 为每个可能的故障源TZA, TZB, DCAEVT1, DCAEVT2, DCBEVT1, DCBEVT2配置输出动作。[ ]消隐窗口 根据开关噪声情况计算并配置DCFOFFSET和DCFWINDOW并选择对齐脉冲。[ ]中断 在TZEINT寄存器中使能所需的中断源CBC, OST, DCAEVT1等并配置PIE/VIM。[ ]软件强制与清除 在调试时善用TZFRC寄存器软件强制故障以及TZCLR寄存器清除标志。4.3 调试技巧与常见问题排查问题1保护功能不动作。检查引脚电平 用示波器直接测量TZ输入引脚确认故障信号确实达到了低电平且脉宽大于3个TBCLK周期。检查GPIO复用 确认引脚是否正确配置为ePWM TZ功能而非普通GPIO。检查寄存器配置 逐项核对上述checklist中的寄存器。特别注意TZSEL寄存器是否使能了对应的故障源。一个常见的疏忽是只配置了TZCTL动作却忘了在TZSEL中使能信号源。检查消隐窗口 如果使能了消隐确认故障事件是否发生在窗口期内。可以暂时禁用消隐窗口进行测试。问题2保护误动作没有故障时触发。硬件噪声 这是最常见原因。检查TZ走线是否远离功率回路增加RC滤波启用GPIO内部数字滤波。消隐窗口设置不当 窗口未能覆盖开关噪声时段。用示波器观察比较器输出和PWM开关时刻调整DCFOFFSET和DCFWINDOW。比较器振荡 在阈值点附近噪声可能导致比较器输出振荡。增加比较器的迟滞。接地与电源噪声 确保模拟地AGND和数字地DGND单点连接良好电源去耦电容充足。问题3OSHT故障后无法恢复PWM输出。理解锁存机制 记住OSHT是锁存的。清除TZFLG[OST]标志不会恢复输出。输出被TZCTL配置的动作强制锁存了。恢复方法软件清除 向TZCLR[OST]位写1可以清除OST锁存器但前提是故障源信号已无效。如果故障信号依然有效清除后会被立即再次置位。模块复位 更可靠的方法是在确认安全后通过软件复位整个ePWM模块例如将TBCTL寄存器中的SWFSYNC位置1并重新初始化或者重新初始化ePWM的所有寄存器。系统设计 通常触发OSHT意味着严重故障系统应进入彻底的安全状态可能需要用户干预或重启而不是自动恢复。问题4DC事件未能触发ADC转换。信号路径检查 确认DCAEVT1.soc信号是否已生成。检查DCTRIPSEL,TZDCSEL配置。ETSEL配置 在事件触发子模块中是否将ETSEL[SOCASEL]或ETSEL[SOCBSEL]正确设置为来自DC事件例如DCAEVT1.socSOC使能 是否使能了SOCA或SOCB输出ETSEL[SOCAEN]或ETSEL[SOCBEN]ADC配置 ADC模块是否已配置为接受ePWM的SOC信号作为触发源掌握Trip-Zone和Digital Compare子模块意味着你掌握了ePWM安全与灵活性的钥匙。它们将保护动作从软件延迟中解放出来交给了可靠的硬件逻辑。在调试时务必结合示波器观察TZ引脚、PWM输出和寄存器的实时查看从信号源头到最终动作一步步验证你的配置。

本月热点