TMS320F28388D: ePWM Active Low Complementary both active during initialization

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

Hello,

I am using this DSP for my project. I am using ePWM to control inverter legs, and DC/DC.

I have set the PWMs with Active Low Complementary with deadband. I have issue that when DSP is initializing and for a short while, both the PWM pins get active.

To make sure I have not done any thing wrong, I tested your original example code from C2000Ware_4_03_00_00. It is still the same. At start up and for a short while, both PWMs are low (active).

This causes shoot through in my inverter, failing all the MOSFETs.

I have used the "epwm_ex8_deadband" of the following example folder:

C:\ti\c2000\C2000Ware_4_03_00_00\driverlib\f2838x\examples\c28x\epwm

I am attaching you the waveforms I captured at start up. I attached two pull ups to the ePWM5 (active low complementary) pins to properly differentiate between high, and high z states.

Then, I set the trigger to dropping edge, single shot.

I appreciate your help,

Thanks,

Aliboth ePWM5 pins low (active) at start-up (initialization)

  • Hi Ali,

    Could you try adding a delay between the end of your initialization before you enable TBCLKSYNC? Does that get rid of the active time on start up?

    Thank you,

    Luke

  • Hi Luke,

    I am using all the TI files, and example code. Could you please let me know how exactly I include the delay, and in what file, and where exactly in the code, you recommend changing?

    Thanks,

    Ali

  • Hi Ali,

    Try adding this line of code before you enable TBCLKSYNC:

    DEVICE_DELAY_US(1);

    This will create a 1 microsecond delay. Let me know if this resolves the issue.

    Thank you,

    Luke

  • Hi Luke,

    If I got it correctly, I tried adding both, DEVICE_DELAY_US(1), and DEVICE_DELAY_US(1000);

    after disabling the clock, then after   Board_init(), and before enabling back the clock.

    To make it clear, I modied the epwm_ex8_deadband.c as follows. DEVICE_DELAY_US(1000) are my additions. It didn't help any way.

    // SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_GTBCLKSYNC);
    SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);
    DEVICE_DELAY_US(1000);
    //
    // Configure ePWMs
    //
    Board_init();
    DEVICE_DELAY_US(1000);
    //
    // Enable sync and clock to PWM
    //
    SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);

  • Hi Ali,

    Understood. Could you also use the One-Time SW force action in the Action Qualifier module in SysConfig to drive the outputs to their desired state during initialization?

    Let me know if this resolves the issue.

    Thank you,

    Luke