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:SysConfig 将跳闸区代码添加至数字比较

Guru**** 2477065 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1472089/tms320f28p650dk-sysconfig-adding-trip-zone-code-to-digital-compare

器件型号:TMS320F28P650DK
主题中讨论的其他器件: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);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尝试更深入地理解。  那么、也许这是必要的。  

    在栅极 B 对事件做出愉快反应时、是否有任何其他因素会导致我的栅极 A 保持低电平?  这是我的核心问题。

    我甚至尝试了设置 AQCTL 来忽略 T1和 T2、栅极 A 仍然保持低电平。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现、如果我要使用 T1和 T2的数字比较事件(以便它使用死区)、而不是跳闸区事件、则需要转到 SysConfig 并从高阻抗响应更改为禁用操作。