主题中讨论的其他器件:SysConfig
工具与软件:
当 SysConfig 仅针对数字比较和事件进行配置时、board.c 中生成的代码添加了用于配置跳闸区域的行。
由于我的输出不正确、我认为这是一个错误。
SysConfig:
epwm9.epwmTimeBase_hsClockDiv ="EPWM_HSCLOCK_DIVIDER_1";
epwm9.epwmTimeBase_phaseEnable = true;
epwm9.$name ="pwmG9";
epwm9.epwmDeadband_enableRED = true;
epwm9.epwmDeadband_enableFED = true;
epwm9.epwmDigitalCompare_ePWM_TZ_DC_OUTPUT_A1 ="ePWM_TZ_EVENT_DCXH_HIGH";
epwm9.epwmActionQualifier_t2Source ="EPWM_AQ_TRIGG_TRIGG_DCA_2";
epwm9.epwmDigitalCompare_ePWM_TZ_DC_OUTPUT_A2 ="ePWM_TZ_EVENT_DCXH_LOW";
epwm9.epwmDigitalCompare_ePWM_DC_MODULE_A_ePWM_DC_EVENT_1_latchMode ="ePWM_DC_CBC_LATCH_ENABLED";
epwm9.epwmDigitalCompare_ePWM_DC_MODULE_A_ePWM_DC_EVENT_2_latchMode ="ePWM_DC_CBC_LATCH_ENABLED";
epwm9.epwmTimebase_counterMode ="EPWM_COUNTER_MODE_UP_DOWN";
epwm9.epwmTimebase_period = 1000;
epwm9.epwmTimeBase_counterModeAfterSync ="EPWM_COUNT_MODE_UP_AFTER_SYNC";
epwm9.epwmTimeBase_phaseShift = 2;
epwm9.epwmDigitalCompare_ePWM_DC_MODULE_A_ePWM_DC_EVENT_1_latchClearEvent ="ePWM_DC_CBC_LATCH_CLR_ON_CNTR_PERIOD";
epwm9.ePWM.$ASSIGN ="EPWM11";
epwm9.EPWM.EPWM_APIN.$ASSIGN ="GPIO20";
epwm9.ePWM.ePWM_BPin.$assign ="GPIO21";
board.c
ePWM_setClockPrescaler (pwmG9_BASE、ePWM_clock_divider_1、ePWM_HSCLOCK_divider_1);
EPWM_setTimeBasePeriod (pwmG9_BASE、1000);
EPWM_setTimeBaseCounter (pwmG9_BASE、0);
EPWM_setTimeBaseCounterMode (pwmG9_BASE、EPWM_COUNTER_MODE_UP_DOWN);
ePWM_setCountModeAfterSync (pwmG9_BASE、ePWM_COUNT_MODE_UP_AFTER_SYNC);
ePWM_enablePhaseShiftLoad (pwmG9_BASE);
EPWM_setPhaseShift (pwmG9_BASE、2);
EPWM_setCounterCompareValue (pwmG9_BASE、EPWM_COUNTER_COMPARE_A、0);
EPWM_setCounterCompareShadowLoadMode (pwmG9_BASE、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue (pwmG9_BASE、EPWM_COUNTER_COMPARE_B、0);
EPWM_setCounterCompareShadowLoadMode (pwmG9_BASE、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setActionQualifierT2TriggerSource (pwmG9_BASE、EPWM_AQ_TRIGG_EVENT_TRIG_DCA_2);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (pwmG9_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
ePWM_setDeadBandDelayMode (pwmG9_BASE、ePWM_DB_RED、TRUE);
EPWM_setRisingEdgeDelayCountShadowLoadMode (pwmG9_BASE、EPWM_RED_LOAD_ON_CNTR_ZERO);
ePWM_disableRisingEdgeDelayCountShadowLoadMode (pwmG9_BASE);
ePWM_setDeadBandDelayMode (pwmG9_BASE、ePWM_DB_FED、true);
EPWM_setFallingEdgeDelayCountShadowLoadMode (pwmG9_BASE、EPWM_FED_LOAD_ON_CNTR_ZERO);
ePWM_disableFallingEdgeDelayCountShadowLoadMode (pwmG9_BASE);
EPWM_setTripZoneDigitalCompanyEventCondition (pwmG9_BASE、EPWM_TZ_DC_OUTPUT_A1、EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_setTripZoneDigitalCompanyEventCondition (pwmG9_BASE、EPWM_TZ_DC_OUTPUT_A2、EPWM_TZ_EVENT_DCXH_LOW);
ePWM_setDigitalCompareCBCRatchMode (pwmG9_BASE、ePWM_DC_MODULE_A、ePWM_DC_EVENT_1、ePWM_DC_CBC_LATCH_ENABLED);
ePWM_selectDigitalCompareCBCMLatchClearEvent (pwmG9_BASE、ePWM_DC_MODULE_A、ePWM_DC_EVENT_1、ePWM_DC_CBC_LATCH_CLR_ON_CNTR_PERIOD);
ePWM_setDigitalCompareCBCRatchMode (pwmG9_BASE、ePWM_DC_MODULE_A、ePWM_DC_EVENT_2、ePWM_DC_CBC_LATCH_ENABLED);