工具/软件:
尊敬的专家:
请参阅随附的图像。 通道 1 对应于 PWM1A、通道 2 对应于 PWM1B、通道 3 对应于 PWM2A、通道 4 对应于 PWM2B。
-
PWM1 和 PWM2 之间的同步问题:
如图 1 所示、通道 1 和通道 3 之间没有同步错误。 然而、在之前的测试期间、观察到了大约 16ns 的同步误差、这是无法消除的。 此行为与当前观察结果不同。
根据文档、预计会出现同步错误。
问题在于此同步错误是否持久且无法消除、或者是否不确定—有时存在、有时不存在、且无法控制。
-
PWM1 和 PWM2 之间的相移问题:
如上面的配置代码所示、已经配置了相移。 但是、通道 1 和通道 3 的第一个 PWM 周期并不反映相移。 配置的相移仅从第二个 PWM 周期开始出现。
有关详细信息、请参阅图 2 和图 3。

此行为是否正常、或者配置是否存在问题?
代码配置(部分):
/*----- ePWM1A/B------ */
//配置计数器模式
EPwm1Regs.TBCTL.BIT.CTRMODE = TB_COUNT_UPdown;
EPwm1Regs.TBCTL.BIT.PHSEN = TB_DISABLE;
EPwm1Regs.TBCTL.BIT.HSPCLKDIV = EPWM_HSCLOCK_DIVIDER_1;
EPwm1Regs.TBCTL.BIT.CLKDIV = EPWM_CLOCK_DIVIDER_1;
// EPwm1Regs.TBCTL.bit.SWFSYNC = 0U;
EPwm1Regs.EPWMSYNCOUTEN.bit.ZEROEN = 1;
// EPwm1Regs.EPWMSYNCOUTEN.bit.SWEN = 0;
EPwm1Regs.TBCTL.BIT.PRDLD = TB_SHADOW; //设置影子加载
//period = 120M /Freq_PWM。 Period100k = 120M/100K=1200、TBPRD = Period/2 +1 = 601;
EPwm1Regs.TBPRD = PWM_PERIOD_100K;//PSFB_peroid_normal-1;
EPwm1Regs.TBPHS.bit.TBPHS = 0U;
EPwm1Regs.TBCTR = 0U;
EPwm1Regs.CMPA.bit.CMPA = PWM_PERIOD_100K>>>1;//(PSFB_peroid_normal-1)>>>1; //将占空比固定为 50%
// EPwm1Regs.CMPB.bit.CMPB = EPwm1Regs.CMPA.bit.CMPA;//EPwm1Regs.CMPA.bit.CMPA - 10
//配置影子寄存器、当 CTR =0 时加载 CMP
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
// EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
//配置动作限定器寄存器
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; //当 TBCTR=0 时输出高电平
EPwm1Regs.AQCTLA.bit.cad = AQ_CLEAR; //当 TBTCR=CMPA 时输出低电平
//配置死区寄存器
EPwm1Regs.DBCTL.BIT.IN_MODE = DBA_ALL;
EPwm1Regs.DBCTL.BIT.POLSEL = DB_ACTV_HIC;
EPwm1Regs.DBCTL.BIT.OUT_MODE = DB_FULL_ENABLE;
EPwm1Regs.DBRED.bit.DBRED = 0U; //上升沿延时时间
EPwm1Regs.DBFED.bit.DBFED = 0U; //falling edge time delay
/*----- ePWM2A/B------ */
//配置计数器模式
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm2Regs.TBCTL.BIT.PHSEN = TB_ENABLE;
EPwm2Regs.TBCTL.BIT.HSPCLKDIV = EPWM_HSCLOCK_DIVIDER_1;
EPwm2Regs.TBCTL.BIT.CLKDIV = EPWM_CLOCK_DIVIDER_1;
EPwm2Regs.TBCTL.bit.PHSDIR = 0;
// EPwm2Regs.TBCTL.bit.SWFSYNC = 0U;
EPwm2Regs.EPWMSYNCOUTEN.bit.ZEROEN = 1;
EPwm2Regs.EPWMSYNCINSEL.bit.SEL = 1;
EPwm2Regs.TBCTL.BIT.PRDLD = TB_SHADOW; //设置影子加载
//period = 120M /Freq_PWM。 Period100k = 120M/100K=1200、TBPRD = Period/2 +1 = 601;
EPwm2Regs.TBPRD = PWM_PERIOD_100K;//PSFB_peroid_normal-1;
EPwm2Regs.TBPHS.bit.TBPHS = 100;
EPwm2Regs.TBCTR = 0;
EPwm2Regs.CMPA.bit.CMPA = 300u;