I'm using a TMS320F2808 to drive a SEMIKRON IGBT module. I use the three legs of the inverter section as three parallel buck converters, operating 120* apart. The three IGBTs are driven directly by ePWM1, 2, and 3.
The buck converter performs acceptably using the standard PWM method.
Our application often runs the buck converter at a very low duty ratio and I want to implement Pulse Frequency Modulation (PFM) to slow the switching rate at low duty cycles to reduce power losses. My investigation so far leads me to believe that the following would be the best way to do it:
- Each time the CMP value is adjusted (and therefore the duty ratio changed), a check is made to see if a change in frequency is necessary. If so then,
- all ePWM modules are brought down with SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0,
- the frequency of all three ePWM modules is changed one by one using EPwmxRegs.TBCTL.bit.CLKDIV = TB_DIVx;
- all ePWM modules are brought back up with SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1.
Does this sound like a reasonable way to proceed? In our application we must guarantee that the IGBTs will not stop switching for more than about 10ms, so bringing them down in code makes me a little nervous. But if I protect that part of the code, I think we should be safe.