Hello,
we got problem with PWM in microcontroller TMS320F28377S. Microcontroller control IGBT module in inverter, and for two production series there isn't any problems with this product. But in third series, inverters start to make some strange sounds. After some investigation I recognize that microcontroller generate incorect PWM. PWM looks like comparator which is inside PWM registers ignore conditions for one period, and turn off output in next period.
This problem occurs also with constant duty eg 50%, so it isn't some numerical issue. Duty is set only once, after initialization and befor main loop. Only one thing that affects is switch Counter Compare from CMPA to CMPB. Below there is initialization.For SWAP Boost =1 were OK but for SWAP Boost =0.
|
void boostPwmConfig(void)
{ EALLOW; CpuSysRegs.PCLKCR2.bit.EPWM7 = 0x01; EPwm7Regs.TBPRD = TBPRD_16kHz;
EPwm7Regs.CMPA.bit.CMPA = 0; EPwm7Regs.CMPB.bit.CMPB = 0; // Compare B = 500 TBCLK counts EPwm7Regs.TBPHS.all = 0; // Set Phase register to zero EPwm7Regs.TBCTR = 0; // clear TB counter EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetric //EPwm7Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Phase loading disabled
EPwm7Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Phase loading enabled EPwm7Regs.TBCTL.bit.PHSDIR = TB_UP; EPwm7Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm7Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TBCLK = SYSCLKOUT EPwm7Regs.TBCTL.bit.CLKDIV = TB_DIV1; ClkCfgRegs.PERCLKDIVSEL.bit.EPWMCLKDIV = 0;// EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm7Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR = Zero EPwm7Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR = Zero EPwm7Regs.DBCTL.bit.OUT_MODE = DB_DISABLE; EPwm7Regs.TZFRC.bit.OST = 1; #ifdef SWAP_BOOST EPwm7Regs.AQCTLA.bit.CBU = AQ_SET; EPwm7Regs.AQCTLA.bit.CBD = AQ_CLEAR; EPwm7Regs.AQCTLB.bit.CAU = AQ_SET; EPwm7Regs.AQCTLB.bit.CAD = AQ_CLEAR; EPwm7Regs.DBCTL.bit.OUTSWAP=SWAP; #else
EPwm7Regs.AQCTLA.bit.CAU = AQ_SET; EPwm7Regs.AQCTLA.bit.CAD = AQ_CLEAR; EPwm7Regs.AQCTLB.bit.CBU = AQ_SET; EPwm7Regs.AQCTLB.bit.CBD = AQ_CLEAR; EPwm7Regs.DBCTL.bit.OUTSWAP=NO_SWAP; #endif GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO12 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO13 = 1; |
I checked also all power supplies on board, there were OK.
This phenomena happens only in microcontrollers with productions number: $4C-96AZKNW G4 and $4C-96C2GKW G4. After resolder for another microcontroller from diffrent series this problem didn't occur. The problem is only in one PWM for each microcontroller, but different devices have a problem for different PWM output, e.g. PWM7A and PWM7B on one device and PWM6A and PWM6B on another.
What could be causing this behavior? Defect in this series of microcontrolers? Overheat in solder process? Maybe some initialization are wrong?
Maybe also I can check something more?
