深入解析C2000 ePWM高级功能:AQ优先级、死区与斩波模块实战
2026/7/24 11:46:26 网站建设 项目流程

1. 项目概述与ePWM核心价值

在电力电子和电机控制领域,脉冲宽度调制(PWM)技术是连接数字控制器与物理功率世界的桥梁。我们常说的“占空比控制”背后,远不止一个简单的定时器翻转输出那么简单。尤其是在处理高功率、高频率、高可靠性的应用时,比如伺服驱动器、车载充电机(OBC)或光伏逆变器,一个功能强大且灵活的PWM外设模块至关重要。德州仪器(TI)在其C2000系列微控制器中集成的增强型PWM(ePWM)模块,正是为此类工业级应用而生。它不仅仅是一个“定时器+比较器”,而是一个高度模块化、可编程的波形生成引擎。

今天,我们不谈基础的PWM原理,而是深入ePWM模块中三个常被数据手册一笔带过,却在实战中决定系统成败的高级子模块:动作限定器(Action-Qualifier, AQ)的事件优先级机制死区生成(Dead-Band, DB)模块的灵活配置,以及PWM斩波(PWM-Chopper, PC)模块的特殊应用。理解它们,你就能从“会配置PWM”进阶到“能设计PWM”,从容应对互补驱动、脉冲变压器隔离驱动等复杂场景。无论你是正在调试三相逆变器的新手,还是优化数字电源环路的老手,这些细节都将直接影响你的波形质量、系统效率和可靠性。

2. 动作限定器(AQ)子模块:事件优先级与波形合成的艺术

动作限定器是ePWM的“大脑”,它根据时间基计数器(TBCNT)与比较寄存器(CMPA/CMPB)以及周期值(TBPRD)的匹配事件,决定输出引脚(EPWMxA/B)的置高(SET)、拉低(CLEAR)或翻转(TOGGLE)。听起来简单,但当多个事件在同一时刻(或相邻的TBCLK周期内)发生时,硬件以何种顺序执行这些“动作”?这就是事件优先级机制要解决的问题。

2.1 为什么需要事件优先级?

设想一个场景:在上下计数模式下,你希望计数器到达CMPA时拉高输出,到达周期值(TBPRD)时拉低输出。如果CMPA的值恰好等于TBPRD,那么“匹配CMPA”和“匹配TBPRD”这两个事件几乎同时发生。如果没有明确的优先级,输出行为将是未定义的,可能导致一个极窄的毛刺脉冲,甚至逻辑错误。事件优先级机制就是为了消除这种歧义,确保在任何配置下,输出行为都是确定且符合预期的。

2.2 三种计数模式下的优先级详解

ePWM支持三种计数模式:递增计数(Up-Count)、递减计数(Down-Count)和递增-递减计数(Up-Down-Count)。每种模式下的事件优先级顺序都不同,这是由硬件逻辑决定的。

2.2.1 递增-递减计数模式(Up-Down-Count)这是生成对称PWM最常用的模式。其优先级规则体现了“时间先后”和“方向敏感”的原则。

  • 最高优先级(1):软件强制事件。这是通过API手动触发的事件,拥有绝对优先权,用于即时控制输出状态。
  • 优先级(2 & 3):与当前计数方向同向的CMPB/CMPA匹配事件。例如,在递增阶段(TBCNT从0到TBPRD),CBU(CMPB Up-match)的优先级高于CAU(CMPA Up-match)。这允许你用CMPB来定义更高优先级的边沿。
  • 优先级(4):计数器零值(ZERO)或周期值(TBPRD)匹配事件。在递增阶段是ZERO事件,在递减阶段是TBPRD事件。
  • 优先级(5 & 6):与当前计数方向反向的CMPB/CMPA匹配事件。例如,在递增阶段,CBD事件(本应在递减阶段发生)的优先级最低。

关键设计启示:这种设计保证了波形的对称性。当你设置CAU=SETCAD=CLEAR时,无论CMPA值如何变化,上升沿和下降沿总是关于波形中心对称。优先级确保了即使在边界条件下(如CMPA=0或CMPA=TBPRD),也不会产生非预期的脉冲。

2.2.2 递增计数模式(Up-Count)此模式用于生成非对称PWM(左对齐或右对齐)。其优先级顺序更简单:

  1. 软件强制事件
  2. 周期匹配事件(PRD)
  3. CMPB递增匹配事件(CBU)
  4. CMPA递增匹配事件(CAU)
  5. 零值匹配事件(ZERO)

注意:递减事件(CAD/CBD)在此模式下永远不会被触发。这种优先级顺序使得你可以方便地实现“在周期点清零,在比较点置高”的经典非对称PWM生成逻辑。

2.2.3 递减计数模式(Down-Count)与递增模式镜像:

  1. 软件强制事件
  2. 零值匹配事件(ZERO)
  3. CMPB递减匹配事件(CBD)
  4. CMPA递减匹配事件(CAD)
  5. 周期匹配事件(PRD)

2.3 比较值大于周期值的特殊情况处理

这是一个容易踩坑的细节。当CMPA或CMPB的值被设置为大于TBPRD时,硬件的行为并非报错,而是有明确的规则:

  • 递增计数模式:如果CMPx > TBPRD,则递增匹配事件(CAU/CBU)永远不会发生。因为计数器永远达不到这个值。
  • 递减计数模式:如果CMPx >= TBPRD,则在计数器等于TBPRD(周期点)时触发事件。这相当于将比较事件“映射”到了周期事件上。
  • 递增-递减计数模式:如果CMPx >= TBPRD,则在计数器等于TBPRD时触发事件(无论是CAU/CBU还是CAD/CBD)。

实战经验:这个特性可以被巧妙利用。例如,在某些保护逻辑中,你可以通过将CMP值设置为一个远超正常工作范围的值(如0xFFFF),来“禁用”某个比较事件,而不需要频繁地修改动作限定器的配置。但在计算占空比时,必须确保CMP值在有效范围内(0 ≤ CMPx ≤ TBPRD),否则会导致占空比计算失效。

2.4 影子寄存器与波形更新时机

数据手册中的波形图通常是基于静态CMP值绘制的。但在实际运行系统中,CMPA/CMPB通常由其影子寄存器在特定时刻(如CTR=ZERO或CTR=PRD)更新。这里存在一个关键延迟:新值加载后,基于新值的动作可能延迟一个PWM周期才生效,而基于旧值的动作可能多持续一个周期。

避坑指南

  1. 对称PWM(Up-Down-Count)
    • 如果在CTR=ZERO时加载CMP,请确保CMP值≥ 1
    • 如果在CTR=PRD时加载CMP,请确保CMP值≤ TBPRD - 1
    • 这样做的目的是保证每个PWM周期内至少有一个TBCLK周期宽度的脉冲。这个极窄的脉冲在实际的功率系统中(由于开关器件的响应时间)往往会被忽略,但它避免了因更新延迟导致的“丢脉冲”或“全高/全低”状态。
  2. 非对称PWM(Up-Count):若要实现0%-100%的占空比调制,一个可靠的配置是:在CTR=PRD时加载CMP,设置ZERO事件为SET,CAU事件为CLEAR。然后,将CMP值从0调制到TBPRD+1。当CMP=TBPRD+1时,由于CAU事件不发生,输出在整个周期保持高电平,实现100%占空比。

3. 死区生成(DB)子模块:功率开关的“安全卫士”

在H桥、三相全桥等拓扑中,同一桥臂的上管和下管绝不能同时导通,否则会导致电源直通短路,瞬间烧毁器件。死区时间就是在控制上管关断和下管导通(或反之)之间插入的一段两个管子都关断的延时。ePWM的死区模块自动化了这个过程。

3.1 死区模块的工作原理与配置逻辑

死区模块的核心是两路独立的可编程延迟线:一路用于上升沿延迟(RED),一路用于下降沿延迟(FED)。它接收来自AQ模块的EPWMxA_In和EPWMxB_In信号,经过延迟和极性控制,输出最终的EPWMxA_Out和EPWMxB_Out。

其配置围绕三个控制维度展开,通过DBCTL寄存器设置:

  1. 输入源选择(IN_MODE):决定哪路信号作为延迟线的输入。最常见的是模式0:EPWMxA_In同时作为RED和FED的输入��。这样可以从一个AQ输出生成一对带死区的互补信号。更灵活的模式允许将EPWMxA_In和EPWMxB_In分别分配给RED和FED,用于处理非标准或更复杂的波形需求。
  2. 输出模式控制(OUT_MODE):决定输出是否包含延迟。可以旁路RED、旁路FED、同时应用两者,或两者都旁路(直通)。
  3. 极性选择(POLSEL):决定对延迟后的信号是否进行取反。这是生成不同有效电平互补信号的关键。

3.2 经典死区工作模式解析

基于IN_MODE=0(EPWMxA_In作为唯一输入)的经典模式有五种,它们覆盖了绝大多数栅极驱动器的需求:

模式描述POLSELOUT_MODE典型应用场景
AHC (Active High Complementary)高有效互补1, 01, 1驱动需要高电平导通,且互补信号本身也应为高有效的开关管。输出EPWMxA_Out是原始信号经RED和FED后的结果,EPWMxB_Out是其反相。
ALC (Active Low Complementary)低有效互补0, 11, 1驱动需要低电平导通(如某些IGBT模块),且互补信号为低有效。输出关系与AHC类似,但极性相反。
AH (Active High)高有效独立0, 01, 1生成两路同相、但边沿错开(带死区)的高有效信号。常用于驱动需要独立信号且高电平导通的两个开关管。
AL (Active Low)低有效独立1, 11, 1生成两路同相、但边沿错开(带死区)的低有效信号。
Bypass直通模式x, x0, 0完全旁路死区模块,AQ的输出直接送到引脚。用于不需要死区或由软件生成死区的场景。

波形生成要点:要得到正确的死区波形,AQ模块的配置必须与DB模块的期望输入匹配。例如,要生成AHC波形,AQ应配置为生成一个占空比为D的EPWMxA信号(假设高有效),而EPWMxB在AQ中可以不配置或配置为无关状态。死区模块会以这个EPWMxA_In为基准,自动生成其互补反相并带有死区的两路输出。

3.3 死区时间计算与精度

死区时间由DBREDDBFED寄存器直接设置,计算公式非常简单:死区时间 = 寄存器值 × TBCLK周期

例如,系统时钟SYSCLKOUT为100MHz,TBCLK不分频(即TBCLK周期为10ns)。若需要500ns的上升沿延迟,则设置DBRED = 500ns / 10ns = 50

注意事项

  1. 分辨率:死区寄存器的位宽(通常为10位或更多)决定了最小可设置步进(一个TBCLK周期)。在高开关频率下,TBCLK周期很短,死区时间分辨率很高。
  2. 最大值:寄存器最大值限制了最大死区时间。例如10位寄存器最大值为1023,若TBCLK=10ns,则最大死区约10.23μs。对于极低频率的应用可能不够,此时可能需要降低TBCLK频率(增加预分频)。
  3. 不对称死区:RED和FED可以设置为不同的值,实现不对称死区。这在某些特定开关器件(如MOSFET和IGBT的关断时间不同)的驱动中可能有用。
  4. 测量与验证:死区时间必须用示波器在真实硬件上测量验证,测量点应在功率器件的栅极驱动引脚上。PCB布局、驱动器传播延迟都会影响最终的死区效果。

4. PWM斩波(PC)子模块:驱动脉冲变压器的利器

PWM斩波模块是一个相对小众但功能独特的部分。它的作用是用一个高频载波信号(Chopping Carrier)去调制来自DB模块(或AQ模块)的基波PWM信号。其主要应用场景是基于脉冲变压器的隔离栅极驱动

4.1 为什么需要斩波?

在高压、高隔离要求的场合,常使用脉冲变压器来传递栅极驱动信号。变压器无法传递直流或低频分量,它需要交变的信号来维持磁通变化。如果一个PWM导通脉宽很长(例如几毫秒),直流分量会使变压器磁芯饱和,导致驱动失效。斩波模块将长导通脉宽“切碎”成一系列高频脉冲,第一个脉冲(One-Shot Pulse)提供足够的能量以快速打开开关管,后续的维持脉冲(Sustaining Pulses)则提供足够的伏秒积来保持开关管导通,同时避免变压器饱和。

4.2 斩波模块的工作机制

斩波模块的核心是一个由系统时钟(SYSCLKOUT)分频得到的高频载波(PSCLK)。其频率由PCCTL[CHPFREQ]控制,分频系数可选。当输入信号(EPWMxA_In)为高时,斩波模块启动:

  1. 首脉冲(One-Shot):产生一个宽度可编程的独立脉冲。其宽度计算公式为:T_first = T_sysclk * 8 * OSHTWTHOSHTWTH是4位控制字,范围1-16。这个脉冲通常较宽,能量大,用于确保开关管可靠开启。
  2. 维持脉冲(Sustaining Pulses):首脉冲结束后,以载波频率PSCLK持续产生脉冲序列,直到输入信号变低。维持脉冲的占空比由PCCTL[CHPDUTY]控制,可在12.5%到87.5%之间以12.5%的步进选择。调整占空比可以优化变压器的磁化状态,避免饱和。

4.3 配置要点与应用考量

  1. 载波频率选择(CHPFREQ):需远高于基波PWM频率,通常为几百kHz到几MHz。频率太高会增加开关损耗,太低则可能无法有效维持变压器磁通。需要根据脉冲变压器的磁芯材料和设计参数来确定。
  2. 首脉冲宽度(OSHTWTH):需要足够宽,以提供栅极电荷所需的能量。这取决于开关管的栅极总电荷(Qg)和驱动电路的电流能力。可以通过计算或实验确定。
  3. 维持脉冲占空比(CHPDUTY):50%占空比通常能提供对称的伏秒积,但有时为了补偿变压器或电路的非线性,需要微调。例如,选择稍高的占空比(如62.5%)来补偿传输过程中的损耗。
  4. 使能与旁路:通过PCCTL[CHPEN]位使能。对于非变压器驱动应用,务必禁用(旁路)此模块,否则PWM波形会被意外调制。
  5. 信号路径:斩波模块通常只应用于EPWMxA通道。EPWMxB通道可以选择直通或也被斩波,具体取决于硬件设计。

一个典型的配置流程:假设系统时钟为100MHz,需要首脉冲宽度200ns,维持脉冲载波频率2MHz,占空比50%。

  • 计算OSHTWTH:T_sysclk = 10nsOSHTWTH = 200ns / (8 * 10ns) = 2.5,取整为3(寄存器值2,因通常从0开始计数或公式有偏移,需查具体手册)。实际宽度为10ns * 8 * 3 = 240ns
  • 计算CHPFREQ分频系数:目标PSCLK周期 = 1/2MHz = 500ns。SYSCLKOUT周期为10ns,所需分频比 = 500ns / 10ns = 50。查找寄存器中最近的可选分频值。
  • 设置CHPDUTY为50%对应的编码(通常为4/8,即编码100b或类似)。

5. 实战配置:从寄存器到波形——一个完整的互补PWM生成案例

让我们结合AQ、DB模块,配置一个用于H桥驱动的、带死区的互补对称PWM。目标:PWM频率20kHz(周期50μs),死区时间1μs,采用高有效互补模式(AHC)。

步骤1:系统与时间基(TB)配置假设系统时钟SYSCLKOUT = 100MHz。我们选择TBCLK不分频,即TBCLK = 100MHz (周期10ns)。 对于对称PWM(Up-Down-Count),PWM周期公式为:PWM_Period = 2 * TBPRD * T_TBCLK。 因此,TBPRD = (PWM_Period / 2) / T_TBCLK = (50μs / 2) / 10ns = 2500。 设置TBCTL.CTRMODE = TB_UPDOWN(上下计数模式),TBPRD = 2500

步骤2:动作限定器(AQ)配置我们希望生成一个占空比可调的基波。设置:

  • AQCTLA.CAU = AQ_SET(递增匹��CMPA时置高)
  • AQCTLA.CAD = AQ_CLEAR(递减匹配CMPA时拉低)
  • AQCTLB暂不配置(因为死区模块将以EPWMxA_In为源生成互补信号)。
  • 设置CMPA的初始值,例如1250,对应50%占空比(因为对称模式下,高电平时间 = 2 * (TBPRD - CMPA) * T_TBCLK?这里需要仔细计算:在CAU=SET, CAD=CLEAR配置下,输出在CTR从0递增到CMPA期间为低,从CMPA到TBPRD为高,然后递减时从TBPRD到CMPA为高,从CMPA到0为低。因此高电平总时间 = 2*(TBPRD - CMPA)*T_TBCLK。占空比 = 高电平时间 / 总周期 = (TBPRD - CMPA) / TBPRD。所以对于50%占空比,CMPA = TBPRD / 2 = 1250)。
  • 配置影子寄存器加载模式:CMPCTL.LOADAMODE = CC_CTR_ZERO(在CTR=0时从影子寄存器加载CMPA)。

步骤3:死区(DB)配置目标:1μs死区,AHC模式。

  • 计算死区寄存器值:DBRED = DBFED = 1μs / 10ns = 100
  • 设置DBRED = 100,DBFED = 100
  • 配置DBCTL
    • IN_MODE = 0(EPWMxA作为RED和FED的源)
    • POLSEL = 1, 0(AHC模式:对RED输出取反,FED输出不取反?这里需要对照手册表格。对于AHC,通常POLSEL设置为10b,表示EPWMxB输出取反以互补)
    • OUT_MODE = 1, 1(使能RED和FED延迟)

步骤4:PWM斩波(PC)配置(本例不需要,故禁用)

  • 设置PCCTL.CHPEN = 0,旁路斩波模块。

步骤5:代码实现要点(以C语言为例)

// 假设 ePWM1 基地址为 EPWM1_BASE #include "driverlib.h" void configureEPWM1(void) { // 1. 时间基配置 EPWM_setTimeBasePeriod(EPWM1_BASE, 2500); // TBPRD = 2500 EPWM_setPhaseShift(EPWM1_BASE, 0); EPWM_setTimeBaseCounter(EPWM1_BASE, 0); EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP_DOWN); EPWM_disablePhaseShiftLoad(EPWM1_BASE); EPWM_setClockPrescaler(EPWM1_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_CLOCK_DIVIDER_1); // 2. 比较器与AQ配置 EPWM_setCounterCompareValue(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, 1250); // 初始50%占空比 EPWM_setCounterCompareShadowLoadMode(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO); EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA); EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA); // EPWMxB 输出由死区模块生成,AQ可设为无动作 EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO); // ... 其他事件也设为 NO_CHANGE // 3. 死区配置 EPWM_setDeadBandDelayMode(EPWM1_BASE, EPWM_DB_RED, EPWM_DB_MODE_ENABLE_FALLING_DELAY); // 输入模式:EPWMxA作为源 EPWM_setDeadBandDelayMode(EPWM1_BASE, EPWM_DB_FED, EPWM_DB_MODE_ENABLE_RISING_DELAY); EPWM_setDeadBandDelayPolarity(EPWM1_BASE, EPWM_DB_RED, EPWM_DB_POLARITY_ACTIVE_HIGH); // 根据AHC模式设置极性 EPWM_setDeadBandDelayPolarity(EPWM1_BASE, EPWM_DB_FED, EPWM_DB_POLARITY_ACTIVE_LOW_COMP); EPWM_setRisingEdgeDeadBandDelayCount(EPWM1_BASE, 100); // DBRED = 100 EPWM_setFallingEdgeDeadBandDelayCount(EPWM1_BASE, 100); // DBFED = 100 EPWM_setDeadBandControlSignals(EPWM1_BASE, EPWM_DB_CONTROL_SIGNAL_MODE, EPWM_DB_CONTROL_SIGNAL_MODE_NORMAL); // 使能输出 // 4. 禁用斩波 EPWM_disablePWMChopper(EPWM1_BASE); // 5. 启动计数器 EPWM_startCounter(EPWM1_BASE); }

调试提示:配置完成后,先用示波器观察EPWM1A(AQ直接输出)的波形,确保占空比正确。然后再观察EPWM1A和EPWM1B经过死区模块后的最终输出,验证死区时间是否准确,互补关系是否正确。

6. 常见问题排查与高级技巧

在实际工程中,ePWM的配置问题往往表现为波形异常、无输出或驱动故障。以下是一些典型问题的排查思路和高级使用技巧。

6.1 波形异常问题排查清单

  1. 无输出信号

    • 检查GPIO复用:确认EPWMx引脚已正确配置为PWM功能,而非普通GPIO。
    • 检查时钟与计数器:确认ePWM模块时钟已使能(PCLKCRx寄存器),TBCLK配置正确,计数器(TBCNT)是否在运行。尝试在调试器中读取TBCNT寄存器,看其是否在循环计数。
    • 检查输出使能:某些芯片的ePWM输出可能需要额外的全局使能位(如HRPCTL[HRPE]对于高分辨率PWM)。
  2. 占空比不正确或不可调

    • 影子寄存器未加载:这是最常见的原因。确保CMPCTL.LOADxMODE已正确配置(如CC_CTR_ZERO),并且计数器确实经过了ZERO或PRD点。在调试时,可以在影子寄存器加载事件(CTR=ZERO)的ISR中设置断点,检查CMPA/CMPB影子寄存器的值是否被更新。
    • 比较值超出范围:确认CMPA/CMPB值在0到TBPRD之间(对称模式需注意边界条件)。如果CMP值大于TBPRD,事件可能不会按预期发生。
    • 动作配置错误:仔细核对AQCTLAAQCTLB寄存器的每一位。常见的错误是把CAUCAD的动作设反了,或者SET/CLEAR搞混。
  3. 死区时间不生效或错误

    • 输入源模式(IN_MODE)错误:如果死区模块的输入源配置错误,它可能在对一个错误的信号进行延迟。确保DBCTL.IN_MODE与你的AQ输出意图一致。
    • 极性(POLSEL)配置错误:AHC和ALC模式容易混淆。如果发现EPWMxA和EPWMxB不是互补,而是同相或同时高/低,首先检查极性配置。最好的方法是结合期望的真值表和寄存器描述逐位核对。
    • 输出模式(OUT_MODE)未使能:确保OUT_MODE位使能了RED和/或FED路径。如果设为00,则死区模块被旁路。
    • 时间单位弄错:确认死区时间计算中使用的TBCLK周期是正确的。如果TBCLK有分频,计算时要用分频后的周期。
  4. 开关频率附近出现毛刺或抖动

    • 影子寄存器加载时机冲突:如果在PWM周期中间(非ZERO/PRD点)更新了CMP或TBPRD的影子寄存器,并且加载事件发生在当前周期,可能导致比较匹配点出现一个时钟周期的偏差。确保在稳定的时刻(如CTR=ZERO)进行加载。
    • 中断服务程序(ISR)延迟:如果占空比是在PWM周期中断(如CTR=PRD中断)中计算并更新的,ISR的执行时间必须远小于PWM周期。否则,当ISR执行过长,可能错过下一个周期的加载点,导致更新延迟一个周期。优化ISR代码,或考虑使用DMA自动更新CMP寄存器。

6.2 高级技巧与优化

  1. 利用事件触发(ET)模块实现精细控制:ePWM的事件触发模块可以在特定事件(如CTR=ZERO, CTR=PRD, CTR=CMPA)发生时产生中断或启动ADC转换。这对于实现电流环采样(在PWM周期中点或谷底采样)至关重要。合理配置ET模块,可以实现与PWM波形严格同步的采样控制。

  2. 使用Trip-Zone(TZ)模块进行硬件保护:不要仅仅依赖软件进行过流、过压保护。将故障信号(如比较器输出)连接到TZ引脚,并配置ePWM在故障发生时立即将输出强制为高阻态、低电平或高电平(通过TZCTL寄存器)。这种硬件级的保护响应时间在纳秒级,远比任何软件中断都要快,是系统安全的最后防线。配置为循环跳变(CBC)模式可用于逐周期限流,配置为单次跳变(OSHT)模式用于严重故障的锁存保护。

  3. 相位同步实现多模块协作:在多个ePWM模块需要协同工作(如三相逆变器)时,使用EPWMxSYNCIEPWMxSYNCO信号进行主从同步。确保所有模块的计数器从相同的相位开始,可以避免相间不平衡和次谐波问题。通常将一个模块设为主机(Master),其他设为从机(Slave),主机在CTR=ZERO时发出同步脉冲。

  4. 高分辨率PWM(HRPWM)的运用:对于需要极高精度占空比控制的应用(如LLC谐振变换器的频率控制),C2000的HRPWM扩展功能可以将占空比或相位分辨率提高到皮秒级。它通过微边沿定位器(MEP)在传统的TBCLK边沿之间进行插值。启用HRPWM需要对HRPCTLHRPCE等寄存器进行���外配置,并注意其与普通ePWM功能的兼容性。

  5. 动态改变PWM频率与死区:在某些应用如变频电机驱动中,PWM频率可能需要随速度变化。改变TBPRD会立即影响频率,但要注意在上下计数模式下,TBPRD改变后,当前周期可能不完整。更安全的方法是在CTR=ZERO时从影子寄存器加载新的TBPRD。同样,死区时间也可能需要根据母线电压或温度动态调整以优化效率,只需在安全时刻(如PWM周期开始)更新DBREDDBFED寄存器即可。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询