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.

TMS320F28379D: Trip Zone with blanking window

Part Number: TMS320F28379D

Hello,

I´m currently trying to control a half bridge with the C2000 Launchpad. I´m using an external comparator, that triggers on my inductor current. I want to use the edge given by the comparator to switch my half bridge. The upper Switch (S1) should be turned off by the edge of the comparator. This switch is connected with EPWM1A. The comparator is connected to a pin connected to TZ1. Currently I´m directly turning off S1 over the Trip Zone. After a given time I want to turn it on again, which means I have to clear the Trip Zone latch before. This is done automatically on Period, as i use Cycle by Cyle Mode.

But now I want to have a blanking window around the turning on of EPWM1A, as this might produce parasitic pulses on my external comparator, which I want to ignore. I don´t want this parasitic pulses to trigger the Trip Zone and turn off EPWM1A again.

The only solution I found is using DCAEVT2. With this I can also turn off EPWM1A and set a blanking window. My problem is, that when I´m using the Trip Zone directly I have an delay of about 30 ns, but when I use DCAEVT2 I have a delay of 70 ns. But this is too slow for me. Is there a possibility to get a blanking window, without having that much delay? Is there a faster way?

Thank you very much.

Best Regards,

Jens

  • Hi,

    You are doing the configuration the right way. To use Blanking window you need to use DCxEVTy to generate DCEVFILT. Have chosen ASYNC option for DCACTL[EVT2FRCSYNCSEL] ? If not, this would be adding few PWM clock (around 2) synchronization delay. From the diagram Figure 15-51. DCAEVT2 Event Triggering - Default option is Sync. So, you can change to Async for faster trip.

  • Hello,

    Thanks for your answer Subrahmanya.

    I found a mistake on my side. Now with using async event, I´m at about 35 ns delay.

    I´m using T1/T2-Events to switch S2 over the Action-Qualifier. For this I would also like to use DCAEVT2 with blanking window. But as a source I can only choose DCAEVT2 not DCEVFILT. So the blanking window doesn´t work for the T1/T2-Events. Is there a way to make this work with blanking window?

    I also want to reset the TBCTR, with the same Trip from my Comparator. For this I am using DCAEVT1. For switching S1 I´m using DCAEVT2.

    Is it possible to have a blanking window for both of those events? Because in SRCSEL I can only choose one event as signal source.

    Does that mean I can only have a blanking window for one of those Signals, not both?

    There is only one Blanking window for DCAEVT1/2 and DCBEVT1/2, is that right? Does that mean I can only have a blanking window for one signal on EPwm1x?

    Because I only want to reset the TBCTR once until the next comparator trip, this means it should ignore parasitic trips at the switching time of S1/S2. Is there a way to realize this?

    Thank you.

    Best Regards,

    Jens

  • Hi Jens,

    Jens H said:
    I found a mistake on my side. Now with using async event, I´m at about 35 ns delay.


    Good to know ASYNC option worked for you.

    Jens H said:
    I´m using T1/T2-Events to switch S2 over the Action-Qualifier. For this I would also like to use DCAEVT2 with blanking window. But as a source I can only choose DCAEVT2 not DCEVFILT. So the blanking window doesn´t work for the T1/T2-Events. Is there a way to make this work with blanking window?


    DCEVFILT is not available as input to the T1/T2 on 379x. But it has been added in later devices 28004x and so on.

    Jens H said:
    There is only one Blanking window for DCAEVT1/2 and DCBEVT1/2, is that right? Does that mean I can only have a blanking window for one signal on EPwm1x?


    Yes - there is only one blanking window. You could choose different events as input to this blanking operation, but there is only one window. 

    Jens H said:
    Because I only want to reset the TBCTR once until the next comparator trip, this means it should ignore parasitic trips at the switching time of S1/S2. Is there a way to realize this?


    For the Sync, yes you can use the blanked version.
    Please refer to Figure 15-50. DCAEVT1 Event Triggering. DCAEVT1.sync can be generated based on DCEVTFILT.
    Also, you can see Figure 15-5. Time-Base Submodule Signals and Registers, this shows how DCAEVT1.sync and DCBEVT1.sync are used for Synchronization.

  • Hello,

    Thank you for your answer.

    Subrahmanya said:
    Jens H
    Because I only want to reset the TBCTR once until the next comparator trip, this means it should ignore parasitic trips at the switching time of S1/S2. Is there a way to realize this?



    For the Sync, yes you can use the blanked version.
    Please refer to Figure 15-50. DCAEVT1 Event Triggering. DCAEVT1.sync can be generated based on DCEVTFILT.
    Also, you can see Figure 15-5. Time-Base Submodule Signals and Registers, this shows how DCAEVT1.sync and DCBEVT1.sync are used for Synchronization.

    But DCEVTFILT is the exact same signal for DCAVET1 and DCAEVT2 right? This means I have to use the same blanking window on both events? It´s not possible to have two independent blanking windows? One for each of those signals?

    Thank you.

    Best Regards,

    Jens

  • Hi Jens,

    Jens H said:

    But DCEVTFILT is the exact same signal for DCAVET1 and DCAEVT2 right? This means I have to use the same blanking window on both events? It´s not possible to have two independent blanking windows? One for each of those signals?



    Yes - there is only one blanking window. No separate blanking windows for DCAVET1 and DCAEVT2.

  • Hello,

    Thanks for your answer. But it is possible to blank both events DCAEVT1 and DCAEVT2, if they are the exact same signals?

    My Problem is that i would like to CBC trip EPWM1A on the comparator trip, but also reset TBCTR on the same trip.

    CBC only works with DCAEVT2 and SYNC with DCAEVT1. So I´m using both of those events. Now I want to blank both of them with the same blanking window.

        EPwm1Regs.DCACTL.bit.EVT1SRCSEL = 1; //Source is filtered DCAEVT, needed for blanking window

        EPwm1Regs.DCACTL.bit.EVT2SRCSEL = 1;

        EPwm1Regs.DCFCTL.bit.SRCSEL = 1; //DCAEVT2 as filter source
        EPwm1Regs.DCFCTL.bit.PULSESEL = 1; //Filter starts at TBCTR=ZERO
        EPwm1Regs.DCFCTL.bit.BLANKE = 1; //Activates blanking window
        EPwm1Regs.DCFOFFSET = 0;
        EPwm1Regs.DCFWINDOW = 50;

    This is a part of my code, I select filtered DCAEVT for both events. But somehow only the CBC trip is blanked and the sync is not.

    Thank you.

    Best Regards,

    Jens

  • Hi,

    Jens H said:
    Thanks for your answer. But it is possible to blank both events DCAEVT1 and DCAEVT2, if they are the exact same signals?



    As you can see from Figure 15-54. Event Filtering, you have to choose only one event for Blanking using DCFCTL[SRCSEL]. Its not possible to apply blanking to both. Also, if they are same signals, you can as well just use one of them.

    Jens H said:
    My Problem is that i would like to CBC trip EPWM1A on the comparator trip, but also reset TBCTR on the same trip.

    For this, i've suggested the workaround earlier. use DCAEVTx.sync for synchronization of the TBCTR and load a phase of Zero - that's equivalent to resetting the counter.

    Jens H said:
        EPwm1Regs.DCACTL.bit.EVT1SRCSEL = 1; //Source is filtered DCAEVT, needed for blanking window


    Yes - Your configuration seems correct. You are choosing DCEVTFILT for the Sync/Trip path.

    Jens H said:
    select filtered DCAEVT for both events. But somehow only the CBC trip is blanked and the sync is not.


    Yes - your configuration is correct for DCEVTFILT. 

    Why do you think that the Sync path is not blanked? Based on what you are saying so?

  • Hello,

    Thanks for your answer. I´ve found my mistake. The sync is indeed blanked. My problem was, that the blanking window didn´t start at the right time. I thought that the DCOFFSET counter is equal to the TBCTR, but this is not the case, there is an extra counter. With this in mind I was able to fix my problem.

    Thank you very much.

    Best Regards,

    Jens