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.

[参考译文] TMS320F28388D:PWM 频率问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1382869/tms320f28388d-pwm-frequency-issue

器件型号:TMS320F28388D

工具与软件:

您好!

我想使用死区和补充来生成50kHz PWM、以进行逆变器控制。

但我得到12.5kHz 的以下配置。 您能帮忙吗?

EPWM_TIME_BASE_PERIOD => 250

  EPWM_setClockPrescaler (EPWM1_BASE、EPWM_CLOCK_DIVIDER_4、EPWM_HSCLOCK_DIVIDER_4);

  EPWM_setTimeBasePeriod (EPWM1_BASE、EPWM_TIME_BASE_PERIOD);

  EPWM_setTimeBaseCounter (EPWM1_BASE、0);

  EPWM_setTimeBaseCounterMode (EPWM1_BASE、EPWM_COUNTER_MODE_UP_DOWN);

  EPWM_disablePhaseShiftLoad (EPWM1_BASE);

  EPWM_setPhaseShift (EPWM1_BASE、0);

  EPWM_setCounterCompareValue (EPWM1_BASE、EPWM_COUNTER_COMPARE_A、EPWM_COMPA_VAL);

  EPWM_setCounterCompareShadowLoadMode (EPWM1_BASE、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);

  //EPWM_setCounterCompareValue (EPWM1_BASE、EPWM_COUNTER_COMPARE_B、EPWM_COMPA_VAL);

  EPWM_setCounterCompareShadowLoadMode (EPWM1_BASE、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);

  EPWM_setActionQualifierAction (EPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);

  EPWM_setDeadBandDelayPolarity (EPWM1_BASE、EPWM_DB_FED、EPWM_DB_POLARY_ACTIVE_LOW);

  EPWM_setDeadBandDelayMode (EPWM1_BASE、EPWM_DB_RED、TRUE);

  EPWM_setRisingEdgeDelayCount (EPWM1_BASE、EPWM_RISING_EDGE_DEADband);

  EPWM_setDeadBandDelayMode (EPWM1_BASE、EPWM_DB_FED、TRUE);

  EPWM_setFallingEdgeDelayCount (EPWM1_BASE、EPWM_FALLING_EDGE_DEADBAND);

  /// EPWM2 Ayarlari.

  EPWM_setClockPrescaler (EPWM2_BASE、EPWM_CLOCK_DIVIDER_4、EPWM_HSCLOCK_DIVIDER_4);

  EPWM_setTimeBasePeriod (EPWM2_BASE、EPWM_TIME_BASE_PERIOD);

  EPWM_setTimeBaseCounter (EPWM2_BASE、0);

  EPWM_setTimeBaseCounterMode (EPWM2_BASE、EPWM_COUNTER_MODE_UP_DOWN);

  EPWM_disablePhaseShiftLoad (EPWM2_BASE);

  EPWM_setPhaseShift (EPWM2_BASE、0);

  EPWM_setCounterCompareValue (EPWM2_BASE、EPWM_COUNTER_COMPARE_A、EPWM_COMPA_VAL);

  EPWM_setCounterCompareShadowLoadMode (EPWM2_BASE、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);

  //EPWM_setCounterCompareValue (EPWM2_BASE、EPWM_COUNTER_COMPARE_B、EPWM_COMPA_VAL);

  EPWM_setCounterCompareShadowLoadMode (EPWM2_BASE、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);

  EPWM_setActionQualifierAction (EPWM2_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);

  EPWM_setDeadBandDelayPolarity (EPWM2_BASE、EPWM_DB_FED、EPWM_DB_POLARY_ACTIVE_LOW);

  ePWM_setDeadBandDelayMode (EPWM2_BASE、EPWM_DB_RED、TRUE);

  ePWM_setRisingEdgeDelayCount (EPWM2_BASE、EPWM_RISING_EDGE_DEADband);

  EPWM_setDeadBandDelayMode (EPWM2_BASE、EPWM_DB_FED、TRUE);

  EPWM_setFallingEdgeDelayCount (EPWM2_BASE、EPWM_FALLING_EDGE_DEADBAND);

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

    嗨、Blackmatter、

    听起来 ePWM 时钟比应有的频率低4倍。 尝试将时钟分频器更改为 x4以获得所需的频率。

    谢谢!

    Luke