Tool/software:
Hi experts,
Please refer to the attached images. Channel 1 corresponds to PWM1A, Channel 2 to PWM1B, Channel 3 to PWM2A, and Channel 4 to PWM2B.
-
Synchronization Issue Between PWM1 and PWM2:
As shown in Image 1, there is no synchronization error between Channel 1 and Channel 3. However, during previous tests, a synchronization error of approximately 16ns was observed, which could not be eliminated. This behavior differs from the current observation.
According to documentation, synchronization errors are expected.
The question is whether this synchronization error is persistent and cannot be eliminated, or if it is uncertain—sometimes present, sometimes absent, and uncontrollable.
-
Phase Shift Issue Between PWM1 and PWM2:
As shown in the configuration code above, phase shift has been configured. However, the first PWM cycle of Channel 1 and Channel 3 does not reflect the phase shift. The configured phase shift only appears starting from the second PWM cycle.
Please refer to Images 2 and 3 for details.

Is this behavior normal, or is there an issue with the configuration?
Code Configuration (Partial):
/*-------ePWM1A/B-----------------*/
//configure counter mode
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; // set SHADOW load
//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; // Fix duty at 50%
// EPwm1Regs.CMPB.bit.CMPB = EPwm1Regs.CMPA.bit.CMPA;//EPwm1Regs.CMPA.bit.CMPA - 10
//configure the shadow register, load CMP when CTR == 0
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;
//configure action qualifier register
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; //output high level when TBCTR=0
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; //output low level when TBTCR=CMPA
//configure dead band register
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; //rising edge time delay
EPwm1Regs.DBFED.bit.DBFED = 0u; //falling edge time delay
/*-------ePWM2A/B-----------------*/
//configure counter mode
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; // set SHADOW load
//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;