1. 项目概述与核心价值
在数字电源和电机驱动的世界里,PWM(脉冲宽度调制)信号就像是整个系统的“心跳”和“指挥棒”。我们通过调节这个开关信号的占空比,就能精准地控制输出电压、电流,进而驱动电机旋转。但当你面对一个需要多个PWM模块协同工作的复杂系统时——比如一个多相交错并联的DC/DC转换器,或者一个驱动三相电机的逆变器——问题就来了:如何确保这多个“心跳”步调一致,而不是各自为政、互相打架?这就是同步与相位控制要解决的核心问题。
想象一下,一个四相降压转换器,如果四个开关管同时导通和关断,那么输入电流的纹波会非常大,对输入电容和整个系统的电磁干扰(EMI)都是严峻考验。但如果我们能让这四个开关管依次错开90度相位角轮流工作,电流纹波就能被显著平滑,这就是相位控制的魔力。而实现这一切的基础,就是eHRPWM(增强型高分辨率脉宽调制器)模块提供的强大同步与相位配置能力。它不仅仅是一个产生PWM信号的模块,更是一个精密的时序协调器,允许工程师像指挥交响乐团一样,编排多个功率级的开关动作。
这篇文章,我将结合自己多年在电机控制和数字电源项目中的实战经验,深入拆解eHRPWM的同步与相位控制机制。我会从最基础的主从模式配置讲起,逐步深入到交错并联、三相逆变器、零电压开关全桥等具体电源拓扑的应用实例。无论你是正在评估TI C2000系列MCU用于新项目,还是已经在调试中遇到了同步时序的难题,相信这些从芯片手册图表和寄存器配置背后提炼出的设计思路与避坑指南,都能给你带来直接的帮助。我们不止看“怎么做”,更要弄懂“为什么这么做”,以及在实际工程中“可能会遇到什么坑”。
2. eHRPWM同步机制深度解析
要玩转多模块协同,首先得吃透eHRPWM的同步“工具箱”。它提供了高度灵活的SyncIn(同步输入)和SyncOut(同步输出)配置选项,这是构建任何主从时序架构的基石。
2.1 同步输入(SyncIn)的三种“态度”
当一个eHRPWM模块接收到一个外部的同步脉冲(来自另一个模块的SyncOut或外部引脚)时,它可以有三种截然不同的反应,这由TBCTL寄存器中的PHSEN位和SYNCOSEL位的组合来决定:
装载相位,重新对齐(Slave模式):这是最常用的从模式。当
PHSEN=1时,模块使能了相位装载功能。一旦SyncIn脉冲到来,模块会立即将其时间基准计数器TBCNT的值,用相位寄存器TBPHS中的值进行重载。这个动作相当于给从模块的“内部时钟”进行了一次强制对时,使其与主模块在指定的相位差上保持严格同步。在交错并联或三相系统中,正是通过给不同从模块设置不同的TBPHS值,来实现120度或90度等相位偏移的。忽略信号,我行我素(独立模式):当
PHSEN=0时,模块会完全忽略输入的SyncIn脉冲。它的TBCNT继续按照自己的节奏运行。这种模式用于那些不需要与其他模块同步的独立电源通道,或者在整个系统中作为频率基准的主模块。主模块的时钟是自由的,它产生同步脉冲去驱动别人,但自己不受别人影响。信号直通,中继放大(Sync Flow-Through):这是一种非常实用的“级联”模式。当
SYNCOSEL配置为TB_SYNC_IN时,模块将自己的SyncOut信号直接连接到SyncIn输入上。这意味着,它接收到上一个模块的同步脉冲后,几乎无延迟地将其传递给下一个模块。同时,它自身也可以配置为PHSEN=1,在传递脉冲的同时,用TBPHS重载自己的计数器。这种模式使得同步链可以无限延伸,而不会增加主模块的负载,非常适合控制多个需要同步的模块(如六路三相逆变器)。
2.2 同步输出(SyncOut)的四种“触发时刻”
主模块或需要输出同步信号的模块,需要决定在什么时刻产生一个同步脉冲。SYNCOSEL寄存器位控制着这个触发源:
CTR = PRD:在计数器TBCNT等于周期值TBPRD时触发。在递增计数模式下,这发生在周期结束点;在递增-递减计数模式下,这发生在计数器达到峰值(PRD)准备下降的时刻。这是最常用的触发方式,确保所有从模块都在每个PWM周期的同一基准点(通常是起点或中点)开始对齐。CTR = CMPB:在计数器等于比较器B的值CMPB时触发。这提供了极大的灵活性,允许你在一个PWM周期内的任意时刻发出同步信号。在某些高级拓扑中,比如需要特定时刻采样或触发的场景,这个功能非常有用。SyncIn直通:如上所述,用于构建同步链。- 禁用(X):不产生任何同步输出。用于纯粹的从模块或独立运行的模块。
2.3 核心配置组合:典型主从模式
理解了这些选项,我们再来看最经典的配置组合,它清晰地展示了同步数据流。
主模块配置思路:
SYNCOSEL设置为CTR=0或CTR=PRD。这意味着它将在自己每个PWM周期的起点(或终点)产生一个同步脉冲。PHSEN设置为DISABLE。因为它作为基准,不需要被其他信号重载相位。SyncOut信号连接到下一个模块的SyncIn。
从模块配置思路:
SYNCOSEL设置为SYNC_IN(流传输模式)或保持禁用。如果它后面还有模块,就用流传输;如果是链的末端,可以禁用。PHSEN设置为ENABLE。这是关键!它告诉模块:“请在下一次收到同步脉冲时,用TBPHS寄存器的值重置你的计数器。”TBPHS寄存器被写入一个特定的值,这个值决定了它相对于主模块的相位偏移量。
实操心得:同步链的“启动顺序”陷阱在实际调试中,一个常见的坑是同步链的初始化顺序。你必须确保所有从模块的配置(特别是
PHSEN=1)在主模块开始运行之前就已完成。如果主模块已经开始产生PWM和同步脉冲,而从模块的相位重载功能还未使能,那么从模块将错过最初的同步对齐机会,导致相位关系混乱。安全的做法是:初始化所有模块的寄存器 -> 使能所有模块的时钟或触发计数器运行 -> 最后再通过软件强制同步(SWFSYNC)或启动主模块计数器,来确保所有模块从确定的初始状态开始工作。
3. 同步控制在不同电源拓扑中的实战应用
理论说得再多,不如看几个实实在在的电路。下面我们就把eHRPWM的同步机制,放到几个经典的电源拓扑里,看看寄存器配置是如何转化为电路板上的开关动作的。
3.1 案例一:多路独立频率的降压(Buck)转换器
场景:系统需要为不同负载提供不同的电压轨,例如一个数字核芯电压(1.0V @ 2MHz)、一个内存电压(1.2V @ 1.5MHz)和一个模拟电压(3.3V @ 500kHz)。每个Buck电路工作频率独立,以优化各自的效率和元器件尺寸。
配置方案: 这种情况下,同步不是必须的,甚至要避免相互干扰。因此,每个eHRPWM模块都配置为独立主模式。
SYNCOSEL = TB_SYNC_DISABLE:禁用同步输出,不干扰其他模块。PHSEN = TB_DISABLE:禁用相位装载,忽略任何可能的同步输入。- 每个模块独立设置自己的
TBPRD来设定频率,独立设置CMPA来调节占空比(输出电压)。
寄存器配置关键点: 虽然不同频,但为了软件配置的一致���,通常仍采用相同的计数模式(如TB_UP)。关键在于TBPRD值的计算。例如,系统时钟SYSCLKOUT=200MHz,欲得FPWM=1MHz,则TBCLK周期应为1us。若HSPCLKDIV和CLKDIV分频后TBCLK=100MHz,则计数周期为100个时钟。在递增计数模式下,TBPRD应设置为(期望周期 / TBCLK周期) - 1 = 99。三个模块分别计算自己的TBPRD值即可。
注意事项:开关频率与分辨率权衡在独立频率设置时,PWM的分辨率(即占空比调节的最小步进)由
TBPRD的值决定。TBPRD越大,频率越低,但分辨率越高(因为CMPA可以调节的步数更多)。你需要根据输出电压精度要求和开关损耗(频率越高损耗越大)来折衷。例如,对于一个12位ADC采样的电压环,PWM分辨率至少不应低于ADC的分辨率,否则会成为控制精度的瓶颈。
3.2 案例二:同频多相降压转换器与交错并联
场景:为了给大电流CPU供电,需要多相Buck并联以分担电流。同时,为了大幅降低输入电流纹波和减小输入电容,需要采用交错并联技术,让各相开关管依次导通,相位均分360度。
配置方案: 采用一主多从的同步链,并结合相位寄存器实现精确移相。
- 主模块 (EPWM1):
SYNCOSEL = TB_CTR_ZERO(在计数器为零时发出同步),PHSEN = DISABLE,TBPHS = 0。 - 从模块1 (EPWM2):
SYNCOSEL = TB_SYNC_IN(流传输),PHSEN = ENABLE,TBPHS = TBPRD/3(对于三相,移相120度)。 - 从模块2 (EPWM3):
SYNCOSEL = TB_SYNC_IN,PHSEN = ENABLE,TBPHS = 2*TBPRD/3(移相240度)。
关键计算与波形: 假设三相交错,TBPRD设置为600(对应一个完整的PWM周期)。那么:
- EPWM2的
TBPHS = 600 / 3 * 1 = 200 - EPWM3的
TBPHS = 600 / 3 * 2 = 400这样,每当主模块计数器归零发出同步脉冲时,EPWM2的计数器被载入200,EPWM3被载入400。由于计数器是递增的,载入200的模块需要再计数400次才到周期点,因此它的波形起点看起来就比主模块晚了200个计数单位,换算成相位就是120度。最终,三个PWM的上升沿在时间轴上均匀分布。
通用公式: 对于N相交错并联,第M个从模块(M从1开始,主模块为0)的相位寄存器应设置为:TBPHS(M) = (TBPRD / N) * (M - 1)这样就能实现完美的360/N度相位差。
3.3 案例三:三相逆变器与电机控制
场景:驱动一个永磁同步电机(PMSM)或交流感应电机(ACI),需要生成三组互补的、带死区的PWM信号(共6路),控制逆变器三个桥臂的上、下管。
配置方案: 一个三相逆变器需要三个eHRPWM模块(每个模块产生一对互补输出EPWMxA和EPWMxB)。这三个模块必须严格同频同相,以确保生成的三相电压平衡。
- 主模块 (EPWM1,控制A相桥臂):
SYNCOSEL = TB_CTR_ZERO,PHSEN = DISABLE。 - 从模块1 (EPWM2,控制B相桥臂):
SYNCOSEL = TB_SYNC_IN,PHSEN = ENABLE,TBPHS = 0。注意,这里TBPHS也是0,因为B相与A相需要同相位(电压相位差是120度,但这是通过空间矢量调制SVPWM算法改变CMPA和CMPB的值来实现的,而不是通过硬件计数器相位偏移)。 - 从模块2 (EPWM3,控制C相桥臂):配置同EPWM2。
高级特性应用:死区插入电机驱动中,防止同一桥臂上下管直通至关重要。eHRPWM的死区生成模块(DB)在这里大显身手。你需要配置DBCTL寄存器来使能死区,并设置DBRED(上升沿延迟)和DBFED(下降沿延迟)的值。这个值是基于TBCLK的计数,需要根据功率管的开关速度和驱动芯片的传播延迟来仔细计算。例如,如果开关管关闭比开启慢,就需要更大的DBRED来确保上管完全关断后,下管才开启。
同步的意义:在此场景下,同步确保了EPWM1/2/3的计数器完全同步运行。这样,当你运行SVPWM算法,在每个PWM周期更新所有CMPA、CMPB寄存器时,三个桥臂的开关动作变化点才能发生在完全相同的时刻,从而合成出圆滑的旋转磁场。任何微小的同步误差都会导致三相不平衡,引起电机转矩脉动和噪音。
3.4 案例四:相移全桥与零电压开关(ZVS)控制
场景:在高功率、高频率的DC/DC变换器(如通信电源)中,为了减少开关损耗,采用相移全桥拓扑实现零电压开关。此时,控制的关键不再是调节占空比(通常固定为接近50%),而是调节全桥两个桥臂之间的相位差。
配置方案: 需要两个eHRPWM模块分别控制全桥的左、右两个桥臂(每个模块产生一对互补信号)。
- 主模块 (EPWM1,控制左桥臂):
SYNCOSEL = TB_CTR_ZERO,PHSEN = DISABLE,CMPA固定设为TBPRD/2以获得50%占空比。 - 从模块 (EPWM2,控制右桥臂):
SYNCOSEL = TB_SYNC_IN,PHSEN = ENABLE。关键点在于:TBPHS的值不再是固定的,而是一个需要实时调节的变量。
工作原理: 主模块产生固定的50%方波。从模块在每个周期开始时,接收到主模块的同步脉冲,将自己的计数器载入TBPHS值。如果TBPHS=0,则两桥臂同相;如果TBPHS为一个正数,则从模块的波形相对于主模块波形有一个相位滞后。通过实时改变TBPHS的值(TBPHS = TBPRD * (相位差/360)),就能动态调节两个桥臂方波之间的相位差。这个相位差直接决定了变压器原边电压的有效脉宽和功率传输大小,同时利用谐振电感、电容实现了开关管的零电压开通。
动态相位调节的代码片段:
// 假设TBPRD = 1200, 希望设置90度相位差 // 相位差 = 90度, 对应TBCNT值 = 1200 * (90/360) = 300 // 注意:在递增计数模式下,载入TBPHS=300意味着从模块的计数器从300开始计数,其波形上升沿将比主模块晚300个TBCLK,表现为滞后90度。 EPwm2Regs.TBPHS.all = 300; // 设置相位差 // 在实际控制环路中,相位差可能是由电压环PI调节器输出的 phase_shift = PI_Regulator(&voltage_loop); // 计算所需相位差 EPwm2Regs.TBPHS.all = (Uint16)((float)EPwm1Regs.TBPRD * phase_shift / 360.0);4. 寄存器配置详解与避坑指南
看了这么多应用案例,我们回过头来,深入到几个关键寄存器的配置细节中,这些细节往往决定了项目的成败。
4.1 时间基准控制寄存器(TBCTL)精讲
TBCTL是eHRPWM的“大脑”,配置错误会导致频率不对、不同步、甚至计数器不工作。
CTRMODE(计数器模式):TB_UP(递增模式):最简单,用于不对称PWM。计数器从0到TBPRD,然后归零。同步点通常设在CTR=0。TB_DOWN(递减模式):较少单独使用。TB_UPDOWN(递增-递减模式):最常用于电机控制和需要对称PWM的场合。计数器从0到TBPRD再回到0,一个周期内有两个比较匹配点(上溢和下溢),可以生成中心对称的PWM,谐波特性更好。此时,CTR=PRD和CTR=0都可以作为同步点,但通常选择CTR=0作为周期起点。
PHSDIR(相位装载后计数方向):这个位仅在递增-递减模式下且PHSEN=1时有效。它决定了从模块在同步脉冲到来、载入TBPHS值后,计数器是向上计数还是向下计数。在交错并联DC/DC中,为了确保相位关系的直观性,通常让所有模块都设置为同一个方向(如TB_UP)。但在某些复杂调制中,可能需要利用这个特性。PRDLD(周期寄存器装载模式):TB_SHADOW(影子模式):强烈推荐。对TBPRD寄存器的写入是写到影子寄存器,只在CTR=0(或CTR=PRD,取决于配置)时,影子寄存器的值才被加载到活动寄存器。这避免了在计数器运行中途改变周期值导致PWM周期出现“毛刺”或断裂。立即加载模式:仅在特殊调试或需要快速频率跳变的场景下使用,风险高。
4.2 影子寄存器机制与双缓冲技巧
eHRPWM的CMPA、CMPB、TBPRD等关键寄存器都支持影子寄存器。这是实现平滑、无毛刺控制的核心。
工作原理:你的控制算法(比如PID中断服务程序)在任意时刻更新CMPA的影子寄存器值。但硬件只在特定的“装载点”(由LOADAMODE等位配置,通常是CTR=0或CTR=PRD)才会将影子寄存器的值拷贝到活动的比较器中。这意味着,在一个PWM周期内,无论你的算法何时更新值,实际的PWM占空比只会在周期边界处改变一次,保证了波形的完整性。
配置示例:
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // CMPA使用影子模式 EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // 在CTR=0时装载 EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; // CMPB使用影子模式 EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // 在CTR=0时装载 EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // TBPRD使用影子模式,在CTR=0时装载避坑指南:影子寄存器与同步的时序冲突这里有一个极其隐蔽的坑。假设一个从模块配置为在
SyncIn时从TBPHS加载TBCNT,同时CMPA在CTR=0时从影子寄存器加载。如果SyncIn事件发生的时刻,刚好在CTR=0这个装载点之后一点点,那么新载入的TBCNT(比如200)可能已经错过了本周期CTR=0的装载点。因此,本周期CMPA使用的还是上一个周期的旧值,直到下一个CTR=0才会更新。这会导致一个PWM周期的控制延迟。解决方案是:确保同步事件的发生时刻与影子寄存器的装载点协调一致,或者使用CTR=PRD作为装载点(在递增-递减模式中更安全)。
4.3 动作限定器(AQ)与死区(DB)配置
动作限定器(AQ):它决定了当
TBCNT与CMPA、CMPB、0或TBPRD匹配时,输出引脚EPWMxA/B应该执行什么动作(置高SET、清零CLEAR、翻转TOGGLE)。例如,在递增计数模式下,一个典型的PWM生成配置是:EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 当TBCNT等于CMPA时,EPWM1A置高 EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; // 当TBCNT等于TBPRD时,EPWM1A清零这样就生成了一个从周期开始(0)到
CMPA匹配点为高电平的PWM波。死区生成器(DB):它接收AQ模块产生的原始动作信号(EPWMxA和EPWMxB),并对其上升沿和下降沿分别插入可编程的延迟,生成最终的带死区的互补信号
EPWMxA_DB和EPWMxB_DB(通常连接到驱动芯片)。配置DBCTL选择工作模式(如完全互补、高有效互补等),并设置DBRED和DBFED的值。计算死区时间:死区时间 =DBRED(或DBFED) 值 ×TBCLK周期。例如,TBCLK=100MHz (10ns),需要500ns死区,则DBRED应设置为50。
5. 高级技巧与调试实战
5.1 利用同步事件触发ADC采样
在数字电源和电机控制中,ADC采样的时刻至关重要,通常需要在PWM周期的特定点(如中点)采样电流,以消除开关噪声的影响。eHRPWM的事件触发模块(ET)可以与同步机制联动。
配置方法:
- 将主模块的
SYNCOSEL设置为CTR=CMPB。 - 将
CMPB的值设置为TBPRD/2(对于递增-递减模式的中点)。 - 配置主模块的ET模块,当
CTR=CMPB事件发生时,产生一个SOCA(ADC启动转换)脉冲。 - 这个同步脉冲
SyncOut也会发送给从模块。从模块配置PHSEN=ENABLE,在收到同步脉冲时重载计数器,同时也可能触发自己的ADC(如果配置了事件传递)。
这样,所有并联相位的ADC采样都能在各自PWM波形的完全相同的位置(电气角度)进行,保证了电流采样的同步性和控制环路的稳定性。
5.2 调试技巧:用示波器抓取同步信号
同步问题看不见摸不着,最好的调试工具就是示波器。
- 复用GPIO:将关键的
SyncOut信号通过GPIO多路复用器输出到芯片引脚。在TI的配置工具或代码中,找到对应ePWM模块的SYNCO信号输出引脚配置。 - 触发设置:以主模块的PWM输出(如
EPWM1A)作为示波器的主触发源。 - 观察时序:
- 测量主
SyncOut脉冲与主PWM周期起点(如EPWM1A上升沿)的延迟,理论上应该非常小(几个时钟周期)。 - 测量从模块的PWM输出(如
EPWM2A)上升沿与主SyncOut脉冲之间的延迟。这个延迟包含了同步信号传播、从模块计数器重载的硬件时间。如果TBPHS设置正确,你应该能看到EPWM2A的上升沿相对于EPWM1A有一个精确的偏移。 - 检查所有
SyncIn/SyncOut链路上的脉冲是否干净,有无毛刺。毛刺可能导致错误的计数器重载。
- 测量主
5.3 常见问题排查速查表
| 现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 从模块无输出或频率不对 | 1. 主模块SYNCOUT未使能。2. 从模块 SYNCOSEL未配置为SYNC_IN。3. 从模块 PHSEN未使能。4. 同步物理连接(内部信号)错误。 | 1. 检查主模块TBCTL[SYNCOSEL]。2. 检查从模块 TBCTL[SYNCOSEL]和PHSEN。3. 确认芯片数据手册中同步信号的内部映射。 |
| 相位偏移不正确 | 1.TBPHS寄存器计算或写入值错误。2. 主从模块计数模式不同(如一个UP,一个UPDOWN)。 3. PHSDIR方向设置错误。 | 1. 使用公式TBPHS = (TBPRD / N) * (M-1)复核。2. 统一所有模块的 TBCTL[CTRMODE]。3. 在UPDOWN模式下,检查 PHSDIR设置是否符合预期。 |
| PWM波形出现偶发跳动或断裂 | 1. 在错误的时间点(非装载点)写入了活动寄存器。 2. 影子寄存器未使能,且在中途更新了 CMPA或TBPRD。3. 同步事件与影子寄存器装载点冲突。 | 1.始终启用影子寄存器(SHDWAMODE,PRDLD)。2. 确保在中断服务程序中只更新影子寄存器。 3. 尝试调整影子寄存器装载点为 CTR=PRD。 |
| 死区时间不生效或异常 | 1. 死区模块未使能(DBCTL[MODE])。2. DBRED/DBFED寄存器值为0。3. 输出极性配置 POLSEL错误。4. 最终输出未选择经过死区处理的信号。 | 1. 检查DBCTL配置。2. 计算并填入正确的死区时钟数。 3. 根据驱动芯片输入逻辑(高有效/低有效)配置 POLSEL。4. 检查GPIO多路复用器是否选择了 EPWMxA_DB和EPWMxB_DB作为输出。 |
| 高负载下同步偶尔丢失 | 1. 同步脉冲在高速开关下受到噪声干扰(虽为内部信号,但电源噪声可能影响)。 2. 软件在运行中错误修改了同步配置寄存器。 | 1. 加强PCB的电源去耦和地平面设计。 2. 在初始化完成后,将关键配置寄存器设置为只读或锁定(如果芯片支持)。避免任务或中断意外改写。 |
6. 从理论到板级实现的完整设计流程
最后,我将一个完整的多相交错Buck项目的eHRPWM配置流程梳理一遍,这几乎是通用的:
- 系统定义:确定相数N,开关频率Fsw,系统时钟SYSCLKOUT。
- 计算时基:根据Fsw和SYSCLKOUT,确定
HSPCLKDIV和CLKDIV分频,得到TBCLK。计算TBPRD = (1 / Fsw) / TBCLK_period - 1(对于UP模式)。 - 规划同步链:指定EPWM1为主模块,EPWM2至EPWMx为从模块。规划
SyncOut到SyncIn的内部连接(通常芯片有固定映射,如EPWM1 SYNCO -> EPWM2 SYNCI -> EPWM3 SYNCI ...)。 - 计算相位值:根据
TBPHS(M) = (TBPRD / N) * (M-1)计算各从模块相位寄存器值。 - 初始化��模块:
- 配置
TBCTL:时钟分频、计数模式(UP)、SYNCOSEL=CTR_ZERO、PHSEN=DISABLE、PRDLD=SHADOW。 - 配置
TBPHS=0,TBPRD。 - 配置
CMPCTL:影子模式,装载点CTR=ZERO。 - 配置
AQCTL:定义PWM动作(如CAU SET, PRD CLEAR)。 - (可选)配置
DBCTL和死区时间。
- 配置
- 初始化从模块:
- 配置
TBCTL:时钟分频、计数模式(与主模块一致)、SYNCOSEL=SYNC_IN、PHSEN=ENABLE、PRDLD=SHADOW。 - 配置
TBPHS为计算值,TBPRD与主模块相同。 - 配置
CMPCTL和AQCTL(同主模块或根据需求调整)。
- 配置
- 启动顺序:
- 完成所有模块的寄存器静态配置。
- 使能所有ePWM模块的时钟。
- 最后,通过写主模块的
TBCTL[SWFSYNC]位产生一个软件强制同步脉冲,或者直接启动主模块的计数器(TBCTL[CTRMODE]从FREEZE改为UP/UPDOWN)。确保所有从模块在第一个有效周期开始前就捕获到同步信号并载入相位。
- 动态控制:在中断服务程序中,根据电压/电流环的计算结果,更新各模块
CMPA的影子寄存器值,以调节占空比。
通过这样一套流程,eHRPWM的强大同步与相位控制功能就从数据手册上的图表,变成了你电路板上稳定、高效、时序精确的开关信号,驱动着各种各样的电力电子设备可靠运行。记住,理解每个寄存器位背后的物理意义,结合示波器进行实证调试,是掌握这项技术的不二法门。