This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28035 PWM syncronization problem

Other Parts Discussed in Thread: CONTROLSUITE

Hi,

I'm working with the F28035 Piccolo Experimenter's Kit and the TMX320F28027 Piccolo controlSTICK. My goal is to control a buck boost converter with 6 transistor. The main problem is that all of the signal edges have to be placed with a accuracy of max. 5ns. So every transistor gets his own PWM module (not with the F28027, this is only for debugging reason).

My problem right now is that I want to sweep in the PWM signal from high side 0% and low side 100% to 50% duty cycle. I have a function - ISR exchange procedure which prepares and sets the needed registers, but the PWM signals are not synchronized.

In the initialisation when I start the micro all of the PWM registers are set and finally when the interrupts are activated I have this code line to start and synchronize the modules to the mein system clock

SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;    // ePWM syncronisation enabled

After this I assumed that the signal counters will start from zero all at the same time. And knowing that all period.registers are set to the same value I should have the same frequency at all modules. But unfortunatly this doesn't work.

So if somebody has encounter the same issue or has a tip for me...

I appriciate any help!

 

Cheers, Moe

  • Moe,

    Firstly, I'm a bit confused on your system, you say that you are controlling 6 fets in a buck-boost configuration.  Are you controlling three buck-boost stages?

    A few comments that may help you:

    • Synchronization requires that the tbclksync be enabled, but also that the PWM modules be configured to synchronize in the way you desire them to. One will be a master and the others could be slaved to it.

      For example, in your PWM configuration you should do something like:
      EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;  // no sync and make this PWM master (0x0)
      EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;  // send sync pulse down-stream (0x1)
      EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;  //  sync enabled (0x1)
      EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  //sync to master (0x0)
      ...
      ...

    You can find an example of a PWM configuration function in BuckSingle_PwmCnf.c in C:\TI_F28xxx_SysSW\~SupportFiles\lib\PowerLib\.  Or in controlSUITE, PWMDRV_1ch_Cnf.c within C:\TI\controlSUITE\libs\app_libs\digital_power\f2803x_vX.X\C\.

     

    Thanks and good luck in your project,
    Brett