SPRACZ1 October 2021 F29H850TU , F29H859TU-Q1 , TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28044 , TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
Based on the above configuration, EPWM1B or EPWM2B is able to achieve expected protection logic now. The detailed configurations can refer to the library function configEPWMDelayTrip(uint32_t base1, EPWM_DigitalCompareTripInput aux_trip_source).
As shown in Figure 4, since the force to low action triggered by CBC trip will not be changed by the actions for T1 and T2 events, both EPWM1B and EPWM2B can be configured to clear low at the auxiliary trip source signal (EPWM7A) high, and set high at the auxiliary trip source signal low, no matter during positive or negative cycles. Similar to the previous section, it is required to configure the T1 and T2 events for EPWM1B and EPWM2B with the auxiliary trip source signal through the action-qualifier submodule. The below code snippet shows the action settings for EPWMxB.
// DCBL = TRIPIN7 = INPUT X-BAR 3 = EPWM7A in this example
EPWM_selectDigitalCompareTripInput(base1, aux_trip_source, EPWM_DC_TYPE_DCBL);
//
// DCBL = High, Trigger DCBEVT1 when auxiliary PWM goes high
//
EPWM_setTripZoneDigitalCompareEventCondition(base1, EPWM_TZ_DC_OUTPUT_B1,
EPWM_TZ_EVENT_DCXL_HIGH);
//
// DCBL = low, Trigger DCBEVT2 when auxiliary PWM goes low
//
EPWM_setTripZoneDigitalCompareEventCondition(base1, EPWM_TZ_DC_OUTPUT_B2,
EPWM_TZ_EVENT_DCXL_LOW);
// DCBEVT1/2 event as AQ T1/2
// T1 = DCBEVT1
// T2 = DCBEVT2
//
EPWM_setActionQualifierT1TriggerSource(base1,
EPWM_AQ_TRIGGER_EVENT_TRIG_DCB_1);
EPWM_setActionQualifierT2TriggerSource(base1,
EPWM_AQ_TRIGGER_EVENT_TRIG_DCB_2);
//
// set T1/T2 action setting for EPWMxB
//
EPWM_setActionQualifierAction(base1, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_LOW,
EPWM_AQ_OUTPUT_ON_T1_COUNT_UP);
EPWM_setActionQualifierAction(base1, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_LOW,
EPWM_AQ_OUTPUT_ON_T1_COUNT_DOWN);
EPWM_setActionQualifierAction(base1, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_HIGH,
EPWM_AQ_OUTPUT_ON_T2_COUNT_UP);
EPWM_setActionQualifierAction(base1,EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_HIGH,
EPWM_AQ_OUTPUT_ON_T2_COUNT_DOWN);