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.

TMS320F28P650DK: Setting by CBC trip

Part Number: TMS320F28P650DK
Other Parts Discussed in Thread: PMP23338

Hello,

 

I need to setup a CBC trip based of CMPSS to EPWM. I have come across the following info:

1. We can use DCAEVT2/DCBEVT2 as sources for the CBC as the CMPSS doesnt have direct connection to EPWM.

I used the following driverlib calls to setup CMPSS as source for the XBAR_TRIP2. Since it is bidirectional using both H and L trip thresholds.

        /*CBC trip on XBAR trip 2*/
        XBAR_setEPWMMuxConfig(XBAR_TRIP2, XBAR_EPWM_MUX00_CMPSS1_CTRIPH);
        XBAR_setEPWMMuxConfig(XBAR_TRIP2, XBAR_EPWM_MUX01_CMPSS1_CTRIPL);

        XBAR_enableEPWMMux(XBAR_TRIP2, XBAR_MUX00 | XBAR_MUX01);
 
/*The following sets up EPWM trip action on DCAEVT2 and DCBEVT2*/
    EPWM_setTripZoneAction(base, EPWM_TZ_ACTION_EVENT_DCAEVT2,  EPWM_TZ_ACTION_LOW);
    EPWM_setTripZoneAction(base, EPWM_TZ_ACTION_EVENT_DCBEVT2,  EPWM_TZ_ACTION_LOW);
 
/*CBC is cleared on EPWM TB CTR = ZERO*/
EPWM_selectCycleByCycleTripZoneClearEvent(base, EPWM_TZ_CBC_PULSE_CLR_CNTR_ZERO);
 
/*Select trip source for DCB EVT*/
EPWM_selectDigitalCompareTripInput(base, EPWM_DC_TRIP_TRIPIN2, EPWM_DC_TYPE_DCBH);

Are we missing something?

It would be very useful to know which registers and driverlib functions necessary for having OSHT and CBC trip to be enabled together.

Thanks
 
Jay
  • I used the syscfg tool to generate an example. The intention is to have DCAEVT1 for OSHT trip and DCAEVT2 as CBC trip.


    /*Enable DCAEVT1/2*/
        EPWM_enableTripZoneSignals(myEPWM0_BASE, EPWM_TZ_SIGNAL_DCAEVT1);    
        EPWM_enableTripZoneSignals(myEPWM0_BASE, EPWM_TZ_SIGNAL_DCAEVT2); 

    /*Clear CBC at Period*/
        EPWM_selectCycleByCycleTripZoneClearEvent(myEPWM0_BASE, EPWM_TZ_CBC_PULSE_CLR_CNTR_PERIOD); 

    QUESTION:/*Is this necessary if we dont need this routed out of the CPU?*/
        EPWM_enableTripOutSource(myEPWM0_BASE, EPWM_TZ_TRIPOUT_OST); 

    /*Use Trip IN2 for DCAL source to generate DCAEVT2*/  
        EPWM_selectDigitalCompareTripInput(myEPWM0_BASE, EPWM_DC_TRIP_TRIPIN2, EPWM_DC_TYPE_DCAL);    

    /*Event is Active High*/
        EPWM_setTripZoneDigitalCompareEventCondition(myEPWM0_BASE, EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);    
        EPWM_setTripZoneDigitalCompareEventCondition(myEPWM0_BASE, EPWM_TZ_DC_OUTPUT_A2, EPWM_TZ_EVENT_DCXL_HIGH);    

    QUESTION: /*Is this necessary since CBC is setup above? Possibly yes to hold onto the event in DC module. Would this potentially cause the trip to latch for 2 periods*/
        EPWM_setDigitalCompareCBCLatchMode(myEPWM0_BASE, EPWM_DC_MODULE_A, EPWM_DC_EVENT_2, EPWM_DC_CBC_LATCH_ENABLED);

    /*CMPSS to XBAR*/

    void myEPWMXBAR0_init(){
            
        XBAR_setEPWMMuxConfig(myEPWMXBAR0, XBAR_EPWM_MUX00_CMPSS1_CTRIPH);
        XBAR_setEPWMMuxConfig(myEPWMXBAR0, XBAR_EPWM_MUX01_CMPSS1_CTRIPL);
        XBAR_enableEPWMMux(myEPWMXBAR0, XBAR_MUX00 | XBAR_MUX01);
    }
    void myEPWMXBAR1_init(){
            
        XBAR_setEPWMMuxConfig(myEPWMXBAR1, XBAR_EPWM_MUX02_CMPSS2_CTRIPH);
        XBAR_setEPWMMuxConfig(myEPWMXBAR1, XBAR_EPWM_MUX03_CMPSS2_CTRIPL);
        XBAR_enableEPWMMux(myEPWMXBAR1, XBAR_MUX02 | XBAR_MUX03);
    }

    void myEPWMXBAR0_init();
    #define myEPWMXBAR0 XBAR_TRIP1
    #define myEPWMXBAR0_ENABLED_MUXES (XBAR_MUX00 | XBAR_MUX01)
    void myEPWMXBAR1_init();
    #define myEPWMXBAR1 XBAR_TRIP2
    #define myEPWMXBAR1_ENABLED_MUXES (XBAR_MUX02 | XBAR_MUX03)

  • Hi Jay

    Please refer to pmp23338 design from digital power SDK. This design has both CBC and OST protection setup which are tested. Please let us know if you still have questions.

    Thank you 

    Amir Hussain