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.

[参考译文] TMS320F280025:中间 PWM 转换问题。

Guru**** 2562120 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1083972/tms320f280025-intermediate-pwm-transition-issue

部件号:TMS320F280025
“线程:sysconfigC2000WARE”中讨论的其它部件

我之前打开 了一条线程 ,但当时无法解决问题。 我们已将一些 PWM 配置为20 KHz 频率和中心对齐模式。  设置代码如下所示:

// Set-up TBCLK
    //Device clock is 100 MHz
    EPWM_setTimeBasePeriod(base, 2500);
    EPWM_setPhaseShift(base, 0U);
    EPWM_setTimeBaseCounter(base, 0U);
    EPWM_setTimeBaseCounterMode(base, EPWM_COUNTER_MODE_UP_DOWN);
    EPWM_disablePhaseShiftLoad(base);

    //
    // Set ePWM clock pre-scaler
    //
    EPWM_setClockPrescaler(base, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);

    //
    // Set up shadowing
    //
    EPWM_setCounterCompareShadowLoadMode(base, EPWM_COUNTER_COMPARE_A,
                                         EPWM_COMP_LOAD_ON_CNTR_ZERO);

   
    //
    // Set actions
    //
    EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW,
                                  EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
    EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH,
                                  EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
    EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_A,
                                  EPWM_AQ_OUTPUT_NO_CHANGE,
                                  EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
    EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW,
                                  EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);

 
        EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_B,
                                      EPWM_AQ_OUTPUT_LOW,
                                      EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
        EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_B,
                                      EPWM_AQ_OUTPUT_HIGH,
                                      EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
        EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_B,
                                      EPWM_AQ_OUTPUT_NO_CHANGE,
                                      EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
        EPWM_setActionQualifierAction(base, EPWM_AQ_OUTPUT_B,
                                      EPWM_AQ_OUTPUT_LOW,
                                      EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);

我们已经观察到,只要 PWM 的占空比发生变化,其占空比周期就会有中间过渡。  请参考下图:

初始占空比设置为50%。 然后,当蓝色线条显示某个瞬间时,占空比为28%,我们正在使用以下功能:

ePWM_setCounterCompareValue (基本值,ePWM_counter_compare_A,
占空比计数);

然而,你可以看到,中间时期的工作周期为37%。 我们按照我们的理解进行了设置 ,新的计数器值将从下一个 PWM 周期开始生效。

ePWM_setCounterCompareShadowImage LoadMode (基本,ePWM_counter_compare_a,
ePWM_COMP_load_on_CNTR_zero);

但是,我们怀疑这种情况是因为新的计数器值在该期间中期生效。 我们如何确保工作周期从该期间开始生效,以便直接过渡到我们下一个预定的工作周期。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="488051" url="~ë/support/微处理器/CC2000 -微控制器-组/CC2000 /f/C2000 -微控制器-论坛/1083972/tms320f280025-media-PWM-过渡-问题"]

    ePWM_setCounterCompareShadowImage LoadMode (基本,ePWM_counter_compare_a,
    ePWM_COMP_load_on_CNTR_zero);

    [/引用]

    您可以在 ePWM 设置中执行此操作。 一切都应如您所述。

    您使用哪两种 CMPA 值来履行职责?

    您是否还可以并行运行另一个具有相同时间段的 ePWM,并在 CTR =零和 CTR = PRD 处切换,以便我们可以看到与您的更新相关的 CTR = ZRO 和 PRD 事件?

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

    请在下面找到两个占空比之间切换的代码片段。 此代码段在10 kHz 时执行,因此占空比变化应每1毫秒或每20个周期后发生。 我上一篇文章中的蓝线显示 GPIO 切换点。  明天回到办公室时,我将执行并行 PWM 任务。 如果需要更多信息,请告诉我。  

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

    从你所拥有的东西看,我还没有看到问题。 我想看看 PWM 周期中的情况,因此我将等待您的并行 PWM 实施。

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

    我想补充一点,ePWM 模块的输出 A 和 B 配置为使用死区控制进行互补操作。 我已按照您的建议配置了另一个 PWM,即 ePWM2在 counter=0 (从低到高)和 counter=周期事件(从高到低)时切换。 有一个有趣的观察。 通道 A 没有中间过渡,而通道 B (反转)显示中间过渡。 我认为这是正常和正确的行为。 我们似乎忽视了这两项产出。 我们只是在研究根据我们的补充结构,实际假设有一个中间过渡的反向输出。

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

    添加 ePWM 非常有用。 在您的场景中,所有内容都基于,因此很高兴看到它能够正常工作。 做得好,Asad!

    您是否已签出 ePWM sysconfig?

    这是一个为您生成 ePWM 配置的 GUI。

    https://www.ti.com/lit/spracx3

    它在我们几天前发布的新 C2000Ware 中可用!

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

    我一定会在 sysconfig 中探索改进功能。 感谢您的及时有效支持。