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:ePWM 的更新周期

Guru**** 2563960 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1029377/tms320f280025-update-period-of-epwm

器件型号:TMS320F280025
主题中讨论的其他器件:C2000WARE

你(们)好

我已将 ePWM 的固定频率配置为100KHz。 我想知道在95KHz 到105KHz 之间更改、配置完成后继续。 是否需要更新影子寄存器? 但我无法找到如何使用 c2000war。执行该操作

请提供建议  

HK Woo

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

    您好、HK Woo、

    PWM 输出的频率取决于 TBPRD 值(时基计数器的周期)、时基计数模式和 TBCLK。 TBCLK 通过 EPWMCLK 和 HSPCLKDIV/CLKDIV 位进行配置[TBCLK = EPWMCLK/(HSPCLKDIV * CLKDIV)]。

    在 C2000Ware 示例程序中、可使用以下函数配置 HSPCLKDIV 和 CLKDIV:

    EPWM_setClockPrescaler(EPWM1_BASE,EPWM_CLOCK_DIVIDER_2,EPWM_HSCLOCK_DIVIDER_2);

     计数模式和 TBPRD 可通过以下功能配置:

    EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP);
    EPWM_setTimeBasePeriod(EPWM1_BASE, EPWM1_TIMER_TBPRD);

    对于所有这些配置选项、TBPRD 是唯一 具有影子寄存器(TBCTL 寄存器中的 PRDLD)的位。  

    影子到活动写入很有用、因为它们可以防止由于寄存器被软件异步修改而导致的损坏或虚假操作。

    要为 TBPRD 启用影子模式并选择影子到活动加载事件的类型、您可以使用以下函数:

    EPWM_setPeriodLoadMode(EPWM1_BASE, EPWM_PERIOD_SHADOW_LOAD);
    EPWM_selectPeriodLoadEvent(EPWM1_BASE,EPWM_SHADOW_LOAD_MODE_COUNTER_ZERO);

    注意:上面提供的所有函数都具有样本输入参数、您可能需要更改这些输入参数以满足您的应用需求。

    此致、

    Marlyn

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

    感谢您的信息。 我会根据您的信息进行一些实验。 我发现、如果我使用 EPWM_setTimeBasePeriod (EPWM1_base、x)来更改周期、则 PWM 随机错过了200-300us、其中 x 是周期的变量。 删除 EPWM_setTimeBasePeriod()后不会出现此问题。

    我的项目运行@ 100M、ePWM @ 100KHz。

    BR

    HK Woo

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

    Hung、

    您在计划中的哪个部分更新了周期值? 此外、您设置了什么周期加载事件?

    此致、

    Marlyn