深入解析eHRPWM死区、斩波与故障保护三大核心模块 📅 2026/7/22 14:35:53 1. 项目概述与eHRPWM核心价值在电机驱动、逆变器或者开关电源这些电力电子系统的核心硬件里PWM脉冲宽度调制信号的生成质量直接决定了整个系统的效率、可靠性和性能上限。我们平时在MCU上简单调用一个PWM库函数出来的可能只是一个基础的方波但在工业级、对可靠性要求极高的场合这远远不够。比如驱动一个三相全桥你敢让上下桥臂的开关管有同时导通直通的瞬间吗那意味着瞬间短路和炸管。又比如驱动一个需要脉冲变压器隔离的IGBT你如何确保第一个驱动脉冲有足够的能量去快速打开器件后续又能维持住导通状态再比如系统检测到过流了你的PWM输出能多快响应是直接关断还是进入限流模式德州仪器TI在其C2000系列DSP中集成的增强型高分辨率PWM模块也就是eHRPWM就是为了解决这些工程实践中的“魔鬼细节”而生的。它不仅仅是一个计数器加比较器而是一整套包含时间基准、比较、动作限定、死区、斩波、故障保护、事件触发乃至高分辨率扩展的完整子系统。今天我就结合多年的电机控制器开发经验抛开手册式的罗列深入聊聊eHRPWM里三个最体现其“增强”特性的子模块死区生成DB、PWM斩波PC和故障保护TZ。理解了它们你才能真正驾驭这颗“心脏”设计出既高效又鲁棒的功率电路。2. 死区生成器DB防止直通的艺术2.1 为什么死区不可或缺在H桥或三相全桥这样的桥式电路中同一桥臂的上管和下管是互补导通的。理想情况下一个关断后另一个立刻导通。但现实中功率器件如MOSFET、IGBT的开关并非瞬时完成存在开启延迟Turn-on delay和关断延迟Turn-off delay。如果互补的PWM信号没有间隔在上管尚未完全关断时下管就开始导通就会形成一条从电源正极到地的低阻抗通路产生巨大的直通Shoot-through电流瞬间损坏器件。死区就是在互补的PWM信号之间插入的一段两个信号都为无效状态通常均为低电平的时间窗口确保一个管子完全关断后另一个才允许开启。eHRPWM的死区生成器模块提供了硬件级的、高度可配置的死区插入方案。它的输入是动作限定器AQ输出的原始EPWMxA和EPWMxB信号输出则是经过死区处理后的最终EPWMxA和EPWMxB。其核心思想是对信号的边沿进行可编程延迟。2.2 核心寄存器与配置逻辑控制死区模块主要靠三个寄存器它们都不是影子寄存器Shadowed意味着配置立即生效这在动态调整死区时间时需要特别注意。DBCTL (Dead-Band Control Register, 偏移地址 1Eh)这是大脑控制输入源、输出模式和极性。DBRED (Dead-Band Rising Edge Delay Count Register, 偏移地址 20h)设置上升沿延迟的计数值。DBFED (Dead-Band Falling Edge Delay Count Register, 偏移地址 22h)设置下降沿延迟的计数值。这里面的配置逻辑环环相扣输入源选择 (DBCTL[IN_MODE])决定哪个信号作为延迟的源头。最常见也最经典的模式是EPWMxA In作为上升沿延迟RED和下降沿延迟FED的共同源。这样你只需要一个原始的EPWMxA信号就能生成一对带死区的互补信号。但模块也支持更灵活的配置比如用EPWMxA的下降沿去延迟生成EPWMxB的上升沿这在一些非对称PWM生成中可能有奇效。输出模式控制 (DBCTL[OUT_MODE])决定延迟块是否被旁路。你可以选择仅应用上升沿延迟、仅应用下降沿延迟、两者都应用或两者都旁路。经典死区模式是两者都应用。极性控制 (DBCTL[POLSEL])决定延迟后的信号是否反相。这是生成不同有效电平PWM对的关键。例如对于典型的“高电平有效”互补驱动AHC你需要将上升沿延迟后的信号反相而下降沿延迟后的信号不反相。2.3 经典死区模式波形与计算手册中列举的几种经典模式AHC, ALC, AH, AL是工程中的标配。以最常用的Active High Complementary (AHC)模式为例它的目标是当原始EPWMxA为高时希望EPWMxA和EPWMxB输出一对互补的高电平有效信号且两者之间插入死区。配置DBCTL[IN_MODE] 00(EPWMxA为源)DBCTL[OUT_MODE] 11(RED和FED均生效)DBCTL[POLSEL] 10(RED输出反相FED输出不反相)。波形生成过程原始EPWMxA的上升沿经过RED延迟后反相成为EPWMxB的下降沿原始EPWMxA的下降沿经过FED延迟后成为EPWMxA的下降沿。这样在EPWMxA下降沿实际关断时刻到EPWMxB上升沿另一个开启时刻之间就自然形成了一个两者都为低的死区时间。死区时间计算 这是硬件工程师和软件工程师必须对齐的关键参数。延迟时间由DBRED和DBFED这两个10位寄存器值决定。计算公式非常直接死区时间 寄存器值 × TBCLK周期其中TBCLK是时间基准时钟由系统时钟SYSCLKOUT分频而来。例如系统时钟为100MHz (T 10ns)TBCLK不分频那么设置DBRED 100对应的上升沿延迟时间就是100 * 10ns 1μs。实操心得死区时间的设置并非越小越好。它必须大于功率器件的“关断延迟时间”减去“开启延迟时间”。通常需要根据器件数据手册中的t_d(off)和t_d(on)参数并留出足够的余量比如20%-30%来确定。在调试阶段可以用示波器测量两个互补信号的交叉点确保死区时间内电压平台是平坦的没有重叠。2.4 非典型模式与灵活应用除了经典模式eHRPWM的死区生成器还支持一些“增强模式”。例如通过配置IN_MODE可以让EPWMxA和EPWMxB两个输入信号独立控制RED和FED。这在需要生成非对称或带有特定相位关系的多路PWM时非常有用。不过在大多数桥式驱动场景下经典模式已经足够。3. PWM斩波器PC驱动脉冲变压器的利器3.1 斩波器解决什么问题当你需要驱动高压、隔离的功率器件如IGBT时常会使用脉冲变压器进行栅极驱动隔离。PWM斩波器的核心作用就是将eHRPWM生成的主PWM波形用一个频率高得多的载波信号进行调制生成一串高频脉冲。这串脉冲可以通过一个很小的隔离变压器传递然后在副边通过整流恢复成直流栅极驱动电压。为什么要这么做因为直接传输低频的PWM方波需要变压器磁芯非常大而传输高频脉冲则可以使用体积小、成本低的磁芯。PWM斩波器模块自动完成了这项调制工作。3.2 模块工作原理与关键寄存器斩波器模块相对简单主要通过一个控制寄存器PCCTL来管理。PCCTL (PWM-Chopper Control Register, 偏移地址 3Ch)控制斩波使能、载波频率、占空比和首脉冲宽度。其工作流程可以分解为两部分首脉冲One-Shot Pulse当输入的PWM信号来自死区模块从无效变为有效时斩波器会先产生一个宽度可编程的独立长脉冲。这个脉冲能量较高目的是为了快速、可靠地开启功率器件克服其栅极电容的米勒效应。维持脉冲Sustaining Pulses在首脉冲之后只要输入PWM信号保持有效斩波器就会持续输出一串高频的载波脉冲以维持功率器件的导通状态。3.3 参数计算与配置要点载波频 (PCCTL[CHPFREQ])载波时钟由SYSCLKOUT分频得到。CHPFREQ位域选择分频系数决定了载波频率。例如SYSCLKOUT100MHzCHPFREQ设置为2分频则载波频率为50MHz。需要根据变压器的磁芯材料和工作频率范围来选择通常在几百kHz到几MHz。首脉冲宽度 (PCCTL[OSHTWTH])这是关键参数。首脉冲宽度T_first 8 × OSHTWTH × T_SYSCLKOUT。OSHTWTH是一个4位值1-16。假设系统时钟周期T_SYSCLKOUT10nsOSHTWTH设为8则首脉冲宽度为8 * 8 * 10ns 640ns。这个宽度需要足够驱动栅极电压达到开启阈值但又不能太长导致变压器饱和。通常需要通过实验调整。维持脉冲占空比 (PCCTL[CHPDUTY])维持脉冲的占空比有7档可选12.5%, 25%, ..., 87.5%。占空比的选择影响变压器伏秒积和副边整流后的平均电压。占空比太低可能无法维持栅极电压占空比太高可能导致变压器磁通复位困难。通常选择50%是一个不错的起点。注意事项PWM斩波功能通常只应用于需要变压器隔离驱动的场景。对于直接使用光耦或集成驱动芯片的方案应旁路此模块设置PCCTL[CHPEN]0。在调试时务必用示波器观察斩波后的波形确保首脉冲和维持脉冲清晰没有畸变并且变压器副边恢复出的栅极电压稳定、干净。4. 故障保护子系统TZ系统的紧急制动4.1 保护机制的重要性在功率变换系统中过流、过压、过热等故障是致命的。软件检测再响应往往太慢。eHRPWM的故障保护Trip-Zone子模块提供了硬件级的、纳秒级响应的保护机制。它通过专用的TZ1~TZn引脚通常连接电流采样比较器或温度传感器的输出接收故障信号并立即对PWM输出采取强制动作。4.2 两种保护模式CBC与OSHT这是故障保护的核心概念必须理解清楚逐周期保护 (Cycle-By-Cycle, CBC)当故障信号有效时立即强制PWM输出为预设的安全状态如强制为低。关键在于这个强制状态会在每个PWM周期开始时计数器归零时自动解除并重新检查故障信号是否依然存在。如果故障已消失PWM输出恢复正常如果故障持续则再次强制。CBC模式用于限流。例如在电机启动或突然加载时电流可能会瞬间超过阈值但很快回落CBC模式允许PWM在每个新周期尝试恢复实现平滑的电流钳位。单次触发保护 (One-Shot, OSHT)当故障信号有效时立即强制PWM输出为预设的安全状态。这个状态会一直保持直到软件手动清除故障标志位。OSHT模式用于处理严重的、不可自恢复的故障如短路。一旦触发系统必须完全停机等待软件进行故障诊断和人工干预后才能复位。4.3 寄存器配置与实战场景故障保护涉及多个寄存器配置逻辑如下故障源选择 (TZSEL)为当前ePWM模块选择哪些TZn引脚作为故障源并指定每个引脚是CBC模式还是OSHT模式。例如TZSEL[CBC1]1表示TZ1引脚上的信号将作为CBC故障源。故障动作配置 (TZCTL)为EPWMxA和EPWMxB分别配置故障触发时的动作强制高、强制低、高阻态或无动作。强制低是最常用的安全状态因为它能关断大多数高边或低边开关管。高阻态常用于驱动芯片使能端控制。中断控制 (TZEINT, TZFLG, TZCLR)使能故障中断并在中断服务程序中读取TZFLG标志位来判断是CBC还是OSHT故障然后执行相应的处理如记录故障日志、停机序列最后通过写TZCLR来清除标志位。对于OSHT故障必须在安全条件确认后手动清除标志PWM输出才会恢复。实战配置示例 假设我们设计一个电机驱动器使用电流采样比较器连接TZ1引脚实现硬件过流保护。目标轻微过流时如1.5倍额定触发CBC限流严重过流或短路时如3倍额定触发OSHT立即关断。挑战通常一个比较器只能提供一个电平信号。如何区分两种故障方案使用两个比较器一个设置较低阈值接TZ1CBC一个设置较高阈值接TZ2OSHT。或者使用一个快速ADC配合DAC动态生成可编程阈值但这需要更复杂的电路和软件。ePWM1配置TZSEL[CBC1] 1// TZ1 作为 CBC 源TZSEL[OSHT2] 1// TZ2 作为 OSHT 源TZCTL[TZA] 2// 故障时 EPWM1A 强制低TZCTL[TZB] 2// 故障时 EPWM1B 强制低TZEINT[CBC] 1// 使能 CBC 中断TZEINT[OST] 1// 使能 OSHT 中断避坑指南异步陷阱TZ引脚是异步输入意味着即使系统时钟丢失故障信号依然能关断PWM。这是安全的最后防线。但在软件处理中断时要注意可能存在的毛刺。通常需要在硬件上对TZ信号进行RC滤波并在软件中断服务程序中加入去抖逻辑。标志位清除时机对于CBC中断在服务程序中读取并清除TZFLG[CBC]即可。对于OSHT中断切勿在未排除故障原因前清除TZFLG[OST]否则PWM会立即恢复输出可能导致二次损坏。正确的流程是进入OSHT中断 - 全面关闭驱动如关闭其他PWM模块、关闭电源- 记录故障代码 - 进入安全状态等待复位。软件强制测试TZFRC寄存器允许软件模拟一个故障事件。这在系统自检或调试阶段非常有用可以验证整个故障保护链路是否正常工作而无需制造一个真实的硬件故障。5. 事件触发与高分辨率PWM扩展5.1 事件触发ET精准的定时中断事件触发模块看似简单但它决定了CPU何时被中断去执行关键的实时任务如更新PWM占空比实现电流环、读取ADC采样值等。其核心是事件选择和预分频。事件选择 (ETSEL[INTSEL])你可以选择在计数器等于零CTR0、等于周期值CTRPRD、等于CMPA/CMPB向上/向下计数时等时刻产生事件。在电机FOC控制中最常用的就是在CTR0或CTRPRD时触发中断在这个PWM周期的“安全区”更新下一个周期的比较值实现对称空间矢量调制。预分频 (ETPS[INTPRD])你可以设定每发生1次、2次或3次选定事件才产生一次中断。这可以降低CPU的中断负载。例如对于一个100kHz的PWM如果每个周期都中断CPU负担很重。如果设置成每2个周期中断一次INTPRD2中断频率就降到了50kHz依然能满足许多动态响应要求不极端的应用。5.2 高分辨率PWMHRPWM突破时钟限制的精度常规PWM的分辨率受限于系统时钟频率。分辨率比特数计算公式为分辨率(bit) log2(PWM周期 / 系统时钟周期)。当PWM频率很高时分辨率会急剧下降。例如系统时钟100MHzPWM频率1MHz理论分辨率仅为log2(100) ≈ 6.6 bits这意味着占空比调节的最小步进约为1.5%在很多精密控制中是不够的。HRPWM模块通过微边沿定位器MEP技术将一个系统时钟周期粗调步进进一步细分为最多255个微步进MEP步进每个MEP步进的时间分辨率可达到皮秒级如150ps。这样占空比或相位的控制精度就得到了数量级的提升。如何使用HRPWM配置模式 (HRCNFG)首先选择是控制占空比使用CMPAHR寄存器控制上升沿RE或下降沿FE还是控制相位使用TBPHSHR寄存器控制双边沿BE。电机控制中多用占空比模式。计算与赋值HRPWM的占空比计算需要联合使用16位的CMPA粗调和8位的CMPAHR微调。通常的算法是总期望时间 占空比 * PWM周期。CMPA 总期望时间的整数部分以系统时钟周期为单位。CMPAHR (总期望时间的小数部分 * MEP比例因子) 经过舍入后的值。 具体的转换函数TI的库函数如DriverLib或IQmath库中通常会提供。自检与校准MEP的步进时间会随工艺、电压、温度PVT变化。HRPWM模块提供了自检诊断模式可以在运行时监测MEP逻辑是否在最优范围内工作确保精度的可靠性。个人体会HRPWM是提升系统性能的“利器”但也是一把“双刃剑”。它极大地提升了高频下的控制精度比如在500kHz开关频率的图腾柱PFC中实现精细的电流整形。然而它的配置和计算比常规PWM复杂且对时钟抖动更敏感。在不是必需的情况下如PWM频率低于150kHz且分辨率已足够建议优先使用常规PWM以简化软件和调试工作。当决定使用HRPWM时务必仔细阅读器件数据手册中关于MEP步进精度的图表并在整个工作温度范围内验证其性能。6. 系统集成与调试实战指南6.1 初始化流程与配置顺序配置一个完整的eHRPWM通道需要遵循一个合理的顺序避免中间状态产生意外的PWM输出。我通常的初始化流程如下禁用输出并进入安全状态首先通过TZCTL寄存器将故障保护动作设置为强制低或高阻态。也可以通过GPIO MUX暂时将PWM引脚配置为普通输入。配置时间基准TB设置时钟预分频、计数模式增、减、增减、周期值TBPRD和相位值如果需要同步多个ePWM模块。配置比较模块CC设置CMPA和CMPB的初始值并配置其影子寄存器的加载时机通常是在CTR0或CTRPRD时加载。配置动作限定器AQ定义当计数器等于CMPA、CMPB、0、PRD时EPWMxA和EPWMxB的输出动作置高、置低、翻转。这是生成原始PWM波形的核心。配置死区DB根据驱动电路的需求高有效互补、低有效互补等配置死区模式和延迟时间。配置斩波器PC如果需要使能并配置斩波频率、首脉冲宽度和维持脉冲占空比。否则禁用它。配置故障保护TZ选择故障源、配置保护模式CBC/OSHT和故障动作。使能所需的中断。配置事件触发ET选择中断事件源和预分频使能中断。配置高分辨率HRPWM如果需要配置HRPWM模式并计算初始的CMPAHR值。使能输出最后通过清除软件强制故障标志或重新配置GPIO MUX释放PWM输出。6.2 常见问题排查与示波器调试技巧即使配置正确在实际硬件调试中也可能遇到各种问题。以下是一些典型的排查思路问题完全没有PWM输出。检查GPIO复用配置是否正确TZ引脚是否有故障信号被拉低默认低电平有效TZFLG寄存器是否有标志位被置位EPWMx模块的时钟是否使能技巧先将TZCTL配置为“无动作No Change”排除故障保护模块的影响。问题PWM有输出但占空比不对或频率不对。检查TBPRD寄存器值是否正确TBCLK的分频配置是否正确CMPA/CMPB的值是否在0到TBPRD之间AQ模块的动作配置是否正确例如在增计数模式下CTRCMPA时清除CTRPRD时置位才能生成一个从0%开始的PWM技巧使用CCS的寄存器观察窗口在运行时监控TBCNT、CMPA、CMPB的值看它们是否按预期变化。问题死区时间看起来不对或没有死区。检查DBRED和DBFED寄存器值是否已写入DBCTL[OUT_MODE]是否已使能延迟设为11用示波器双通道测量互补的两路输出使用上升沿触发并放大观察交叉区域。确认是“先关断后开通”的模式。技巧计算出的死区时间应以TBCLK为基准。确认你计算时使用的系统时钟频率和分频系数与实际一致。问题故障保护不动作或误动作。检查TZSEL寄存器是否已正确使能对应的TZn引脚TZ引脚的外部电路比较器、光耦等输出电平是否匹配低有效PCB布局是否引入了噪声导致误触发技巧利用TZFRC寄存器进行软件强制故障测试这是验证保护逻辑是否生效的最快方法。同时在中断服务程序中设置断点或翻转一个测试IO确认中断能被正确触发。问题HRPWM精度达不到预期。检查HRCNFG寄存器配置的模式边沿模式、控制模式是否正确CMPAHR的值计算是否正确是否考虑了MEP的舍入调整器件是否工作在推荐的电压和温度范围内技巧运行HRPWM的自检诊断功能检查MEP逻辑的状态标志。使用高带宽、高采样率的示波器通过测量实际PWM脉冲宽度的微小变化来验证HRPWM的精度。调试eHRPWM一台好的示波器至关重要。不仅要看波形更要会使用它的高级功能测量频率/占空比、使用光标精确测量死区时间、观察斩波后的高频脉冲序列、捕捉故障发生瞬间的波形细节。将理论配置、寄存器状态和实际波形三者对照分析是解决复杂PWM问题的唯一捷径。