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.

[参考译文] TMS320F28374S:PWM 相移同步后、关于加法和减法计数方向设置

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1253852/tms320f28374s-about-addition-and-subtraction-counting-direction-settings-after-pwm-phase-shift-synchronization

器件型号:TMS320F28374S

大家好、

客户有问题需要您的帮助:

我想问一下在 ePWM 模块之间实现相移同步后计数增加和减少的问题。

关于这个问题、芯片手册很清楚:对于 PWM 的增加和减少计数模式、同步计数器增加还是减少计数是由 TBCTL->PHSDIR 来决定的、0表示减计数、反之亦然。

现在的问题是、我想使用 EPWM7的计数器过零生成同步信号、以触发 EPWM8的相移操作、因此将 EPWM8配置为如下形式:

EPWM_setTimeBasePeriod (EPWM8_BASE、500);
EPWM_setTimeBaseCounter (EPWM8_BASE、0);
EPWM_setTimeBaseCounterMode (EPWM8_BASE、EPWM_COUNTER_MODE_UP_DOWN);

EPWM_enablePhaseShiftLoad (EPWM8_BASE);
EPWM_setPhaseShift (EPWM8_BASE、300);
EPWM_setCountModeAfterSync (EPWM8_BASE、EPWM_COUNT_MODE_UP_AFTER_SYNC);
ePWM_setSyncOutPulseMode (EPWM8_BASE、EPWM_SYNC_OUT_PULSE_ON_EPWMxSYNCIN);

上述配置应相对简单明了。 但是、在测试时、读取 EPWM8周期寄存器和计数寄存器的数据、如下所示:

如您所见、周期寄存器数据为500、

但计数寄存器中的数据达到870、这超过了周期寄存器中的数据、为什么呢? 在这种情况下、EPWM8的输出始终为低电平,

但是、如果删除增加或减少计数的设置、或修改为减少计数  ePWM_setCountModeAfterSync (EPWM8_BASE、EPWM_COUNT_MODE_DOWN_AFTER_SYNC)、则计数器数据将再次正常、PWM 输出也是正常的

我想问一下造成这种情况的原因是什么?

谢谢。此致、

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

    尊敬的 Ben:

    您是否在运行时运行期间完全更新 TBCTR? 您是否在运行时使用公式更新 TBPHS?  

    根据我们的一个理论、当同步事件发生时、您的 PWM 可能会将 TBPHS 设置为大于您的 TBPRD 的值。

    此致!

    马瑞安

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

    您好、Ryan、

    谢谢回复!

    设置 TBPHS 的值后、将不会再次修改该值。 TBPHS 将重新加载 TBCTR 的值。 在其他情况下、不会动态修改 TBCTR 的值。

    我会仔细检查是否会受到其他模块的干扰。 EPWM8的配置不会使  TBPHS 被设置为大于 TBPRD 的值、但其他模块可能会在这方面产生问题、需要对其进行检查。

    我想问、如果 TBPHS 设置为大于 TBPRD 的值、是否会有任何异常?

    此外、在向上/向下计数模式下、周期寄存器设置为500。 如果我想把 TBPHS 设置为500、同步后的计数方向是设置为向上计数还是向下计数会受到影响吗?

    此外、如果我将 TBPHS 设置为超过周期寄存器的数据、并且同步后的计数方向为递增、将会发生什么情况?

    比较寄存器超过周期寄存器的情况在芯片手册中给出、但是计数寄存器超过周期寄存器的情况没有给出。

    此致、

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

    尊敬的 Ben:

    是如果 TBPHS 设置为大于 TBPRD 的值、则 TBCTR 将永远不会达到 TBPRD。 同步事件将使 TBCTR 设置为您选择的任何值。 那么 TBCTR 将开始递增。

    此外,在上下计数模式中,周期寄存器设置为500。 如果我要将 TBPHS 设置为500,是否会影响同步后的计数方向是设置为向上计数还是向下计数[/报价]

    这在 TBCTL[PHSDIR]中处理、它将指示  同步后 TBCTR 计数的方向。 实际上、这不会影响 SYNC 后的计数方向是设置为向上计数还是向下计数。

    此外,如果我将 TBPHS 设置为超过周期寄存器的数据,并且同步后的计数方向为递增,将会发生什么情况?

    TBCTR 将递增、直到发生同步事件、以将其设置回 TBPHS 值。

    此致!

    马瑞安

    [/quote]