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.

LAUNCHXL-F280039C: F280039C 3 phase shoot through

Part Number: LAUNCHXL-F280039C

Hi, 

I am using 3 PWMs phase shifted by 60 degree. Everything is good at all frequency except when I try to jump frequency (special control) from a period of 40 (365KHz) to 400 (37KHz), I have a shoot through on some phases. See picture. 

I am using Phase sift load, with link to EPWM1 for period and CMP in up mode. I normally cannot use up/down or dead band as I also have different mode of operation of PWM (Frequency and constant ON time mode). PWMs are not always complementary.

I am attached the code based on epwm_ex3_synchronization example. In this example, you can change the variable "open_modulo" from 40 to 400 to see the behavior. I also have attached the code.

Let me know if there is a way to avoid these situations. Shoot through is very catastrophic from our device, we need to make sure it will never occur.

Thanks,

Arnaud

EPWM1 is D0,D1

EPWM2 is D2,D3

EPWM3 is D4,D5

epwm_ex3_synchronization.zip

  • Hello Ahugron Hugron,

    I've located what is causing your shoot-through, and I've got what I believe is the simplest way to solve it.

    First, notice that it's only ePWM2 and 3 that have this behavior, not 1. That's because it's caused by synchronization. In the current settings, when ePWM1 reaches ZRO, ePWM2 and 3 are instantly reset to 0+Phase. With a static or slow changing frequency, this behavior isn't a problem- you won't miss anything with it, so long as your CMPx events are not particularly close to the sync event.

    With a changing frequency, though, there's a bit more work you need to do.

    I have suggestions that should solve this-

    1. First - Remove the phase shift, removing the problem. Phase shift behavior can be replicated in two different ways. The first way is a simple DB value, but you mentioned that you cannot use that.
      1. My ideal recommendation is to adjust CMPx values and AQ behavior. This would ensure that synchronization cannot cause this issue, and would rely on having both CMPA & B available.

        However, you mention that ePWMA/B are not always complementary- can you elaborate on that?

    2. Alternatively, using the CLB: (ePWMA & B can be flipped in this if you'd prefer)
      1. Feed ePWMA & B into a CLB tile. Set ePWMB ePWMB = [ePWMB and (not ePWMA)]
      2. As an output, 'override' ePWMB's final output.
      3. This prevents ePWMB from ever being active at the same time as ePWMA, which (during shoot-through events) will instead result in A having a much higher duty for 1 cycle than B.
        1. There are likely more complicated CLB schemes that could be utilized to ensure more appropriate duty values for A & B, but that's beyond the scope of the shoot-through problem.

    3. Finally, the following would definitely work, but with additional side-effects. Do the following for ePWM2 & 3:
      1. set AQTRCSEL[T1SEL] = 0111: ePWMxSYNCI
      2. set AQCTLA2[T1U] = 01: Clear
      3. set AQCTLB2[T1U] = 01: Clear
        1. This causes a sync event to immediately trip both ePWMxA & ePWMxB low via the AQ. This does cause ~1 cycle of everything except ePWM1A & B being disabled, which is generally not something we want to see in most applications, but it prevents shoot through.

    I hope this information and these solutions help!

    Regards,
    Jason Osborn

  • I just realized I never explained why the synchronization could be causing the problem- sorry about that! See this thread for an in-depth explanation.

    Regards,
    Jason Osborn