公司动态
深入解析C2000 eHRPWM高级功能:死区、斩波与故障保护实战
1. 项目概述为什么我们需要关注eHRPWM的“高级”功能在电力电子和电机驱动的世界里PWM脉冲宽度调制是那个我们每天都在用但可能很少深究其内部细节的“老朋友”。我们通常只关心它的频率和占空比就像开车只关心油门和刹车。然而当你从简单的LED调光、风扇调速进入到伺服驱动、大功率数字电源、车载充电器OBC或者光伏逆变器这些领域时你会发现一个“裸奔”的PWM信号是远远不够的。它就像一个没有安全气囊、没有ABS、没有ESP的汽车在平坦的城市道路或许可以一旦上了高速或者遇到复杂路况就危机四伏。这就是德州仪器TIC2000系列微控制器中增强型高分辨率PWMeHRPWM模块的价值所在。它不仅仅是一个简单的定时器比较输出单元而是一个集成了死区控制、斩波调制、故障保护、高分辨率边缘定位等高级功能的完整PWM生态系统。今天我们不谈基础的TB时基和CC计数器比较模块那是PWM的“发动机”。我们来深入拆解它的“主动安全系统”——死区生成DB、斩波PC和故障保护TZ模块。理解它们你才能真正驾驭eHRPWM设计出既高效又可靠的功率控制系统。简单来说死区生成DB防止H桥或半桥的上下管“打架”直通短路的交通警察。它通过在互补的PWM信号之间插入一个可控的“安全间隙”。PWM斩波PC为基于脉冲变压器的隔离栅极驱动“量身定制”的调制器。它把PWM信号调制成高频脉冲串解决变压器磁复位和驱动能量的问题。故障保护TZ系统的紧急制动和断电开关。当检测到过流、过压、过热时能在纳秒级内强制PWM输出进入安全状态拉高、拉低或高阻。高分辨率PWMHRPWM给PWM边缘装上“微调旋钮”实现皮秒级的时间精度在追求极致效率和纹波性能的高频电源中至关重要。如果你正在设计电机驱动器、UPS、太阳能逆变器或任何需要精密功率控制的设备那么掌握eHRPWM的这些高级功能将从“能跑”升级到“跑得稳、停得准、刹得住”。2. 核心模块深度解析与设计考量2.1 死区生成模块不仅仅是延迟死区顾名思义就是在互补的一对PWM信号如EPWMxA和EPWMxB的跳变沿之间插入的一段两者都为无效状态通常为低电平的时间。其根本目的是防止在桥式电路中由于开关管如MOSFET、IGBT的开启和关断存在延迟导致上下管同时导通形成低阻通路瞬间产生巨大的直通电流烧毁器件。2.1.1 模块工作原理与寄存器精讲eHRPWM的死区模块非常灵活远不止是简单的双边延迟。它的核心是一个可配置的信号路径如下图所示概念简化EPWMxA In (来自AQ模块) --- [S0] --- [上升沿延迟RED] --- [S2] --- [极性选择S4] --- EPWMxA Out | | | | --- [下降沿延迟FED] --- [S3] --- [极性选择S5] --- EPWMxB Out注S0-S5为内部多路选择器由寄存器控制。关键控制寄存器只有三个但组合出的模式非常强大DBCTL (Dead-Band Control Register - 地址偏移 0x1E)这是大脑。IN_MODE[1:0]输入源选择。这是最容易被忽略但极其有用的功能。它决定了哪个信号作为RED和FED的输入源。00默认模式。EPWMxA In同时作为RED和FED的输入。这是最经典的用法用一个输入生成带死区的互补输出。01EPWMxA In给FEDEPWMxB In给RED。这允许你对两个独立生成的信号分别进行下降沿和上升沿延迟实现非对称或更复杂的死区关系。10EPWMxA In给REDEPWMxB In给FED。与上一种类似方向互换。11EPWMxB In同时作为RED和FED的输入。用EPWMxB作为主信号生成互补对。OUT_MODE[1:0]输出模式控制。决定延迟块是否被旁路。00RED和FED均被旁路。EPWMxA/B Out直接等于EPWMxA/B In。相当于关闭死区功能。01仅使能下降沿延迟FED。EPWMxA Out EPWMxA In或经RED取决于POLSELEPWMxB Out EPWMxA In 经过FED延迟。10仅使能上升沿延迟RED。EPWMxA Out EPWMxA In 经过RED延迟EPWMxB Out EPWMxA In或经FED。11使能RED和FED。这是最常用的“完全死区”模式。POLSEL[1:0]输出极性选择。决定经过延迟后的信号是否取反。00EPWMxA Out不取反EPWMxB Out不取反。01EPWMxA Out取反EPWMxB Out不取反。10EPWMxA Out不取反EPWMxB Out取反。11EPWMxA Out取反EPWMxB Out取反。DBRED (Dead-Band Rising Edge Delay Count Register - 地址偏移 0x20)10位寄存器无影子寄存器。设置上升沿延迟的时钟周期数。延迟时间 DBRED值 × TBCLK周期。TBCLK是系统时钟SYSCLKOUT经过时基模块分频后的时钟。DBFED (Dead-Band Falling Edge Delay Count Register - 地址偏移 0x22)10位寄存器无影子寄存器。设置下降沿延迟的时钟周期数。延迟时间 DBFED值 × TBCLK周期。2.1.2 经典模式与实战配置手册中列出了7种模式但实践中我们主要用到模式2-5它们对应了驱动芯片常见的输入逻辑。模式描述POLSELOUT_MODE对应驱动芯片需求典型应用场景2高电平有效互补 (AHC)0111输入INH/INL均为高有效输出互补很多半桥驱动芯片如IR21xx3低电平有效互补 (ALC)1011输入INH/INL均为低有效输出互补某些集成驱动模块4高电平有效 (AH)0011单一高有效信号死区在内部处理需要自己外搭逻辑电路时5低电平有效 (AL)1111单一低有效信号死区在内部处理需要自己外搭逻辑电路时实战配置示例模式2AHC假设我们需要一对互补、高电平有效的PWM信号死区时间为1µs系统时钟SYSCLKOUT为100MHz时基分频器TBCTL[HSPCLKDIV, CLKDIV]设置为/1即TBCLKSYSCLKOUT100MHz周期为10ns。// 假设使用ePWM1模块 // 1. 配置死区时间 EPwm1Regs.DBRED.all 100; // 上升沿延迟100 * 10ns 1000ns 1µs EPwm1Regs.DBFED.all 100; // 下降沿延迟100 * 10ns 1µs // 2. 配置死区控制寄存器为AHC模式 // POLSEL 01 (A取反B不取反) OUT_MODE11 (使能REDFED) IN_MODE00 (默认A作为源) EPwm1Regs.DBCTL.bit.IN_MODE 0; // EPWM1A作为源 EPwm1Regs.DBCTL.bit.POLSEL DB_CTL_POLSEL_ACTIVE_HIC; // 即值1AHC模式 EPwm1Regs.DBCTL.bit.OUT_MODE DB_CTL_OUT_MODE_ENABLE; // 即值3使能双边延迟这样如果AQ模块产生的EPWM1A是一个占空比为D的普通PWM波经过DB模块后EPWM1A输出将是原信号取反后再在上升沿插入1µs延迟实际是原信号的下降沿后延迟EPWM1B输出将是原信号在下降沿插入1µs延迟。最终得到一对中心对齐、带有1µs死区的互补高有效信号。关键经验死区时间计算与选择死区时间并非越大越好。过大的死区会降低最大可用占空比增加输出波形畸变导致电机转矩脉动或电源输出电压误差。过小则起不到保护作用。其最小值必须大于功率管的最大关断延迟时间Turn-off delay与最小开启延迟时间Turn-on delay之差并留有一定裕量通常20%-50%。例如某MOSFET的t_off(max)100ns,t_on(min)50ns则理论最小死区需 100ns - 50ns 50ns建议设置为80ns ~ 120ns。务必查阅你所使用的功率器件和驱动芯片的数据手册来确定这个值。2.2 PWM斩波模块驱动脉冲变压器的“编码器”PWM斩波模块PC是一个相对小众但至关重要的功能主要用于基于脉冲变压器的隔离栅极驱动。在高压、高隔离要求的场合如多电平逆变器、高压变频器脉冲变压器因其简单、可靠、成本低而被广泛使用。但它有一个核心问题变压器需要交变的磁通来传递能量直流或单极性脉冲会导致变压器磁芯饱和。2.2.1 模块工作原理单脉冲与维持脉冲PC模块的核心思想是将原始的PWM信号来自DB模块输出用一个频率高得多的载波PSCLK进行调制将其转换成一串高频脉冲。载波生成载波频率由PCCTL[CHPFREQ]位域控制来源于系统时钟SYSCLKOUT的分频。分频系数可选1/1到1/16。单脉冲One-Shot在调制后的脉冲串开始时第一个脉冲的宽度可以独立设置通常比后续的维持脉冲宽得多。这个宽脉冲提供了更大的能量确保功率管能够快速、可靠地开启克服米勒平台快速给栅极电容充电。其宽度由PCCTL[OSHTWTH]4位控制公式为单脉冲宽度 8 × OSHTWTH × T_SYSCLKOUT。例如OSHTWTH4SYSCLKOUT100MHz则单脉冲宽度 8 * 4 * 10ns 320ns。维持脉冲Sustaining Pulses在单脉冲之后是一系列占空比可调的维持脉冲。这些脉冲的作用是在功率管导通期间持续提供能量以维持栅极电压补偿栅极电荷的泄漏。其占空比由PCCTL[CHPDUTY]3位控制可选12.5%, 25%, 37.5%, 50%, 62.5%, 75%, 87.5%七档。旁路通过PCCTL[CHPEN]位可以完全旁路该模块当不使用脉冲变压器驱动时应关闭此模块以节省功耗。2.2.2 实战配置与磁设计考量配置PC模块相对直接但难点在于与脉冲变压器设计的配合。// 假设使用ePWM1模块SYSCLKOUT 100MHz // 1. 使能斩波器 EPwm1Regs.PCCTL.bit.CHPEN 1; // 使能PWM斩波模块 // 2. 配置载波频率。假设我们希望载波频率为 100MHz / 8 12.5MHz EPwm1Regs.PCCTL.bit.CHPFREQ 3; // 二进制011即分频系数为8 // 3. 配置单脉冲宽度。假设需要320ns的单脉冲。 // 计算所需系统时钟周期数 320ns / 10ns 32个周期。 // 根据公式宽度 8 * OSHTWTH * T_sysclk - OSHTWTH 宽度 / (8 * T_sysclk) 32 / 8 4 EPwm1Regs.PCCTL.bit.OSHTWTH 4; // 4. 配置维持脉冲占空比。假设选择50%占空比以平衡磁复位和驱动能力。 EPwm1Regs.PCCTL.bit.CHPDUTY 4; // 二进制100对应50%占空比核心陷阱变压器饱和与占空比选择这是使用斩波模块最容易出问题的地方。脉冲变压器传递的是伏秒积电压×时间。如果维持脉冲的占空比设置得过高如87.5%在一个PWM周期内施加在变压器原边的正向伏秒积可能远大于负向伏秒积因为信号有正有负才能复位导致磁芯累积直流偏磁最终饱和。饱和的变压器阻抗急剧下降会烧毁驱动电路或MCU的IO口。解决方案对称设计确保变压器原边绕组能够双向施加电压例如采用H桥或推挽电路驱动变压器使得正负半周的伏秒积相等。谨慎选择占空比如果驱动电路是单端的只有一端开关到VCC另一端接地那么负向复位能力有限。此时必须选择较低的维持脉冲占空比如25%-37.5%并精确计算确保在一个PWM周期内磁通能够复位到零。这需要根据变压器磁芯参数Ae, Bmax和绕组匝数进行详细计算。强烈建议在实际硬件上用电流探头观察变压器原边电流波形确认其峰值不会持续增长饱和迹象。2.3 故障保护模块系统的“紧急制动与安全气囊”故障保护Trip-Zone TZ模块是eHRPWM的“看门狗”和“急停按钮”。它通过外部引脚TZ1-TZ6具体数量依芯片而定实时监控系统状态如过流、过压、过热一旦发生故障无需CPU干预硬件自动强制PWM输出进入预设的安全状态响应时间极短纳秒级。2.3.1 两种保护模式OSHT与CBC这是TZ模块的精髓对应不同的故障严重程度和处理逻辑单次触发One-Shot Trip, OSHT用于处理严重的、不可恢复的故障如负载短路、严重过流、IGBT直通。一旦触发ePWM输出会立即被锁存到安全状态由TZCTL定义并且只有通过软件手动清除TZFLG[OST]标志位PWM输出才能恢复。这相当于汽车的“安全气囊引爆”故障解除后需要“维修复位”。应用场景硬件过流保护、硬件短路保护、紧急停机按钮。寄存器配置TZSEL[OSHTn]位使能对应TZn引脚的OSHT功能。逐周期触发Cycle-By-Cycle Trip, CBC用于处理可恢复的、需要限流的故障例如电机的峰值电流限制。当故障发生时ePWM输出立即进入安全状态但在每个PWM周期开始时TBCTR0硬件会自动检查TZ引脚状态。如果故障消失PWM输出自动恢复正常如果故障持续则输出继续保持安全状态。这相当于汽车的“ABS防抱死系统”动态干预故障解除即恢复。应用场景峰值电流限制、逐周期过流保护。寄存器配置TZSEL[CBCn]位使能对应TZn引脚的CBC功能。2.3.2 寄存器详解与配置流程TZ模块的寄存器较多但逻辑清晰TZSEL (Trip-Zone Select Register - 0x24)故障源选择寄存器。决定本ePWM模块响应哪些TZ引脚以及每个引脚是OSHT还是CBC模式。例如TZSEL.bit.OSHT1 1表示TZ1引脚上的低电平信号将触发本模块的OSHT保护。TZCTL (Trip-Zone Control Register - 0x28)动作控制寄存器。定义当故障发生时EPWMxA和EPWMxB输出引脚应该被强制为何种状态。TZA[1:0],TZB[1:0] 每个通道有4种选择00强制为高阻态High-Z。这是最安全、最常用的方式因为它让功率桥的驱动输入悬空通常会导致其内部下拉电阻将功率管关闭。01强制为高电平。10强制为低电平。11无动作忽略故障。TZEINT (Trip-Zone Enable Interrupt Register - 0x2A)中断使能寄存器。可以分别使能OSHT和CBC事件触发CPU中断以便在故障发生后进行日志记录、状态上报或复杂恢复。TZFLG (Trip-Zone Flag Register - 0x2C)标志寄存器。只读指示OSHT或CBC事件是否发生。TZCLR (Trip-Zone Clear Register - 0x2E)标志清除寄存器。向CBC或OST位写1可清除TZFLG中对应的标志位。对于OSHT事件必须在故障物理消除后手动清除OST标志PWM输出才会恢复。TZFRC (Trip-Zone Force Register - 0x30)软件强制触发寄存器。通过软件写CBC或OST位为1可以模拟一个故障事件用于测试保护逻辑是否正常工作。2.3.3 实战配置一个完整的过流保护例子假设我们有一个三相电机驱动器使用ePWM1/2/3驱动三个半桥。我们使用一个比较器监控直流母线电流当电流超过阈值时比较器输出低电平到MCU的TZ1引脚。我们希望实现逐周期限流CBC并在严重过流时完全关断OSHT。我们将TZ1配置为CBC源TZ2配置为OSHT源例如来自另一个更高速的硬件保护电路。// 配置 ePWM1, ePWM2, ePWM3 对 TZ1 和 TZ2 的响应 // 1. 选择故障源和模式 EPwm1Regs.TZSEL.bit.CBC1 1; // TZ1 作为 ePWM1 的 CBC 源 EPwm1Regs.TZSEL.bit.OSHT2 1; // TZ2 作为 ePWM1 的 OSHT 源 // 对 ePWM2, ePWM3 做同样配置确保一个故障关断所有桥臂 EPwm2Regs.TZSEL.bit.CBC1 1; EPwm2Regs.TZSEL.bit.OSHT2 1; EPwm3Regs.TZSEL.bit.CBC1 1; EPwm3Regs.TZSEL.bit.OSHT2 1; // 2. 配置故障动作发生任何故障时将所有PWM输出置为高阻态最安全 EPwm1Regs.TZCTL.bit.TZA TZ_CTL_TZA_HIZ; // 0高阻 EPwm1Regs.TZCTL.bit.TZB TZ_CTL_TZB_HIZ; // 0高阻 EPwm2Regs.TZCTL.bit.TZA TZ_CTL_TZA_HIZ; EPwm2Regs.TZCTL.bit.TZB TZ_CTL_TZB_HIZ; EPwm3Regs.TZCTL.bit.TZA TZ_CTL_TZA_HIZ; EPwm3Regs.TZCTL.bit.TZB TZ_CTL_TZB_HIZ; // 3. 使能故障中断可选用于记录和恢复 EPwm1Regs.TZEINT.bit.CBC 1; // 使能 CBC 中断 EPwm1Regs.TZEINT.bit.OST 1; // 使能 OSHT 中断 // ... 同样配置 ePWM2, ePWM3 // 4. 在中断服务程序 (ISR) 中处理故障 __interrupt void epwm1TzIsr(void) { if (EPwm1Regs.TZFLG.bit.CBC 1) { // 逐周期过流发生 g_fault_log.cbc_count; EPwm1Regs.TZCLR.bit.CBC 1; // 清除CBC标志硬件在下一个周期会自动重新评估 // 可以在这里降低电流指令或采取其他限流措施 } if (EPwm1Regs.TZFLG.bit.OST 1) { // 严重故障发生系统必须停机 g_fault_log.ost_occurred 1; System_Halt(); // 执行系统停机程序 // 注意OST标志必须在故障物理消除后由软件手动清除才能恢复PWM // EPwm1Regs.TZCLR.bit.OST 1; // 这步在安全重启流程中做 } EPwm1Regs.TZCLR.bit.INT 1; // 清除中断标志 PieCtrlRegs.PIEACK.all PIEACK_GROUP2; // 应答PIE中断 }生死攸关的注意事项异步Trip与滤波TZ输入是异步的这意味着即使系统时钟SYSCLKOUT丢失只要引脚上有低电平故障信号保护依然会动作。这是硬件安全的最后防线。但这也带来了风险噪声毛刺可能误触发保护导致系统频繁误停机。解决方案硬件滤波在TZ输入引脚前端增加RC低通滤波电路滤除高频噪声。时间常数需要仔细计算既要滤除噪声又不能影响对真实故障的响应速度。软件去抖虽然TZ是硬件动作但可以在中断服务程序中加入简单的状态机或计数器只有连续检测到多次故障才判定为真实故障并执行系统级关机如关闭使能信号。但这只能防止软件误报无法阻止硬件最初的强制动作。PCB布局TZ走线应远离高频、大电流的开关节点并采用包地或差分走线如果可能以减少耦合噪声。2.4 高分辨率PWM模块突破数字PWM的精度极限当PWM频率升高时传统PWM的分辨率会急剧下降。分辨率比特数计算公式为分辨率(bit) log2(PWM周期 / 系统时钟周期)。例如在100MHz系统时钟下产生一个100kHz的PWM其周期有1000个时钟周期分辨率约为log2(1000) ≈ 10位。但如果要产生1MHz的PWM周期只有100个时钟分辨率就降到约6.6位这意味着占空比调节的步进将超过1%在很多精密控制中是无法接受的。HRPWM模块通过微边沿定位器MEP技术解决了这个问题。它能在一个系统时钟周期Coarse Step内再进行最多255次细分Fine Step将时间分辨率提升到皮秒级例如150ps。2.4.1 核心原理CMPAHR寄存器HRPWM通常只作用于EPWMxA通道有些器件支持B通道。其核心是一个8位的扩展寄存器CMPAHR。传统的16位CMPA寄存器决定了PWM边沿的“粗调”位置在哪个系统时钟周期跳变而CMPAHR寄存器则负责“微调”决定在该系统时钟周期内的具体哪个“微步MEP Step”跳变。占空比的高精度计算公式以增计数模式为例计算目标时间目标时间 期望占空比 * PWM周期 (以秒为单位)。转换为系统时钟周期数总周期数 目标时间 / T_SYSCLKOUT。分离整数和小数部分CMPA floor(总周期数)// 整数部分写入16位CMPA寄存器。小数部分 总周期数 - CMPA。计算MEP步数MEP步数 小数部分 * MEP比例因子。MEP比例因子是关键它表示一个系统时钟周期内包含多少个MEP步。这个值不是固定的它与SYSCLKOUT频率和工艺有关需要通过HRPWM模块的自校准逻辑或查表获得。TI的库函数通常提供了获取该因子的API如HRPWM_cal()。写入CMPAHRCMPAHR (MEP步数 8) 0x80。这里的0x80十进制128是一个四舍五入的偏移量用于提高精度。2.4.2 配置模式与实战步骤HRPWM有三种边沿控制模式通过HRCNFG[EDGMODE]配置00高分辨率模式禁用传统PWM。01高分辨率仅作用于上升沿MEP on Rising Edge。用于占空比控制。10高分辨率仅作用于下降沿MEP on Falling Edge。用于占空比控制。11高分辨率作用于双边沿MEP on Both Edges。用于相位控制如移相全桥。配置流程示例占空比控制上升沿高分辨率#include hrpwm.h // 使用TI的HRPWM库 // 1. 初始化ePWM模块为常规模式设置频率、计数模式等。 InitEPwm1(); // 假设这个函数配置了TB, CC, AQ模块 // 2. 使能并配置HRPWM模块 EPwm1Regs.HRCNFG.bit.EDGMODE HR_EDGMODE_RISING_EDGE; // 上升沿高分辨率 EPwm1Regs.HRCNFG.bit.CTLMODE HR_CTLMODE_CMPA; // 由CMPAHR控制占空比模式 EPwm1Regs.HRCNFG.bit.HRLOAD HR_LOAD_CTR_ZERO; // 在CTR0时加载影子寄存器与CMPA同步 // 3. 关键运行HRPWM校准获取当前SYSCLKOUT下的MEP比例因子。 // 这个函数会测量MEP步的实际时间并更新内部比例因子。 HRPWM_cal(EPWM1_BASE); // 4. 使用高精度函数设置占空比 // 假设我们需要50.123%的占空比PWM周期为1000个TBCLKCMPA周期值1000 float desired_duty 0.50123; uint16_t tbprd EPwm1Regs.TBPRD; uint32_t cmpahr_value (uint32_t)(desired_duty * (float)tbprd * 256.0); // 计算扩展值 // 更规范的做法是使用TI提供的宏或函数它会自动处理MEP比例因子和舍入。 // 例如HRPWM_setCounterCompareValue(EPWM1_BASE, HRPWM_COUNTER_COMPARE_A, cmpahr_value); // 5. 分离高低位写入寄存器 EPwm1Regs.CMPA.half.CMPA (uint16_t)(cmpahr_value 8); // 高16位给CMPA EPwm1Regs.CMPA.half.CMPAHR (uint16_t)(cmpahr_value 0xFF); // 低8位给CMPAHRHRPWM的“坑”MEP范围与频率限制MEP的细分能力不是无限的。每个系统时钟周期内能插入的MEP步数MEP比例因子受限于硅工艺和时钟频率。在很高的SYSCLKOUT频率下一个时钟周期很短能容纳的MEP步数就少高分辨率提升的效果会打折扣。TI的手册会给出一个类似“MEP Steps per SYSCLKOUT”的表格。务必确保你计算出的MEP步数小于个最大值否则精度会失效。此外HRPWM功能在非常高的PWM频率下例如接近SYSCLKOUT/2可能无法使用。在设计高频电源时需要仔细查阅芯片数据手册中HRPWM章节的频率-精度曲线。3. 模块联动与系统级设计实战在实际系统中这些模块很少独立工作而是协同运作。以一个典型的数字电源半桥LLC谐振变换器为例时基与比较模块产生固定频率、可变占空比或变频的原始PWM脉冲。死区模块为半桥的上下管EPWMxA和EPWMxB插入精确的死区时间防止直通。通常采用AHC模式。故障保护模块TZ1CBC连接电流采样比较器实现初级侧峰值电流限制。一旦过流立即关断当前周期下个周期自动恢复。TZ2OSHT连接输出电压过压保护OVP电路或温度传感器。发生严重故障时永久关断PWM直到软件复位。PWM斩波模块如果LLC的变压器驱动采用脉冲变压器隔离则启用此模块将PWM调制成高频脉冲串并设置合适的单脉冲宽度和维持脉冲占空比确保变压器磁平衡。高分辨率PWM在追求轻载高效率的变频控制中使用HRPWM对频率或相位进行微调可以实现更平滑的模式切换和更低的输出电压纹波。事件触发模块配置在计数器等于CMPA或CMPB时产生中断用于在ADC采样窗口中心点触发ADC采样实现精准的电流、电压反馈采样。初始化顺序建议先配置GPIO MUX将引脚功能切换到ePWM。配置时基TB模块设置时钟、周期、计数模式。配置计数器比较CC模块设置CMPA/CMPB初始值。配置动作限定AQ模块定义比较匹配时的输出动作。配置死区DB模块根据驱动芯片需求设置模式和延迟时间。配置故障保护TZ模块配置引脚、模式、动作这是安全关键步骤应尽早配置。可选配置PWM斩波PC模块。可选配置高分辨率PWMHRPWM模块并执行校准。配置事件触发ET模块使能所需中断。最后使能时基计数器TBCTL[CTRMODE]让PWM开始运行。4. 调试技巧与常见问题排查调试eHRPWM尤其是多个模块联动时逻辑分析仪或高端示波器是必不可少的。4.1 死区时间不对或没有死区检查DBCTL寄存器确认OUT_MODE是否为11使能双边延迟。POLSEL是否与驱动芯片逻辑匹配IN_MODE是否是你期望的输入源检查DBRED/DBFED值确认写入的值是否正确。计算一下期望时间(ns) / TBCLK周期(ns)。确保结果没有超过10位寄存器最大值1023。检查TBCLK频率死区时间基于TBCLK而非SYSCLKOUT。确认TBCTL[HSPCLKDIV, CLKDIV]的分频设置是否正确。示波器测量用示波器同时测量EPWMxA和EPWMxB输出使用上升沿/下降沿延时测量功能确认死区时间是否符合预期。4.2 故障保护不动作或误动作确认TZ引脚电平用万用表或示波器检查故障发生时TZ引脚是否确实被拉低低电平有效。检查TZSEL寄存器确认你期望响应的TZn引脚是否已使能OSHTn或CBCn位为1。检查TZCTL寄存器确认故障动作TZA/TZB是否设置为你期望的状态如高阻00。检查TZFLG标志位在故障发生时读取TZFLG寄存器看CBC或OST标志是否置位。这能区分是信号问题还是配置问题。噪声问题如果频繁误触发检查TZ走线增加硬件RC滤波如1kΩ 100pF并考虑在软件中断中加入去抖逻辑。4.3 PWM斩波输出异常变压器发热、驱动不足确认PCCTL[CHPEN]已使能。测量载波频率用示波器测量EPWMxA输出看是否出现了高频调制。频率应为SYSCLKOUT / (CHPFREQ分频系数)。检查单脉冲宽度第一个脉冲是否明显宽于后续脉冲宽度是否符合8 * OSHTWTH * T_SYSCLKOUT的计算检查维持脉冲占空比后续脉冲的占空比是否与CHPDUTY设置一致变压器饱和这是最隐蔽的问题。用电流探头观察变压器原边电流波形。如果电流波形在每个PWM周期结束时没有回到零附近而是基线持续上升说明磁芯正在累积直流偏磁即将饱和。立即降低维持脉冲占空比CHPDUTY或者检查变压器驱动电路是否为双向励磁。4.4 HRPWM精度达不到预期运行校准函数确保在系统时钟稳定后调用了HRPWM_cal()函数。该函数必须在PWM开始运行前调用。检查MEP范围计算你需要的MEP步数。确保(期望的小数部分 * MEP比例因子) 255。如果超过说明你要求的精度超出了该SYSCLKOUT频率下HRPWM的能力需要降低PWM频率或提高系统时钟。确认控制模式HRCNFG[CTLMODE]设置是否正确占空比控制用HR_CMPA相位控制用HR_PHS。影子寄存器加载点HRCNFG[HRLOAD]的设置是否与主CMPA寄存器的加载点CMPCTL[LOADAMODE]一致通常都设置为在CTR0时加载。4.5 软件强制与调试善用TZFRC强制故障和ETFRC强制事件寄存器。你可以在调试时通过软件模拟一个故障或事件而不需要真的制造一个硬件故障这能非常安全地验证你的保护逻辑和中断服务程序是否正确。最后也是最关键的一点在给功率部分上高压电之前务必在低压、小电流甚至断开功率部分的情况下用示波器完整地验证所有PWM波形、死区、保护响应逻辑。将硬件保护作为最后防线但不要依赖它来弥补设计缺陷。eHRPWM的这些高级功能是强大的工具理解其原理并谨慎配置才能构建出坚固可靠的电力电子系统。