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.

[参考译文] TMS320F28034:时基周期影子和时基计数器同步之间的合作

Guru**** 2547270 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/859631/tms320f28034-cooperation-between-time-base-period-shadow-and-time-base-counter-synchronization

器件型号:TMS320F28034

尊敬的团队:

启用 epwm1和 epwm2同步。 启用 TB 的影子寄存器。

当 TBCTL[PRDLD]= 0时、TBPRD 影子寄存器被启用。 对
TBPRD 存储器地址的读取和写入将转至影子寄存器。 当
时基计数器等于零
(TBCTR = 0x0000)时、影子寄存器的内容被传输到活动寄存器(TBPRD (有效)←TBPRD (影子))。 默认情况下、TBPRD 影子寄存器处于启用状态。

EPwm1Regs.TBCTL.bit.FREE_SOFT=TB_FREEZE;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_updown;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;

EPwm1Regs.TBCTL.bit.PRD = EPwtb_TBIT.TBIT.PHSEN;EPwCTL.TBIT_TBIT.TBIT.TBIT_TBINCOSEL = TBIT.TBIT.TBIT_DIOZERO;EPwCTSY



EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_updown;
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;EPwm2Regs.TBCTL.bit.EPw2Rtb.TBRS.Tb.Tb.Tb.SYNCOSEL

=
TBPHS 影子;EPwm2Tb.TB.Tb.Tb.Tb.Tb.Tb.Tb.Tb.Tb.Tb.
EPwm2Regs.TBCTR = 0; 

在程序运行期间、我需要动态修改 epwm1和 epmw2的频率(TBPRD)、这两个频率是相同的。

在此配置中、epwm2的 TBCTR 是否可能无法计数为0、因为 epwm2的 TBCTR 加载了 TBPHS?

此致

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

    我将让我们的 F28034x 专家作出回应!

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

    F. F、

    当一个同步发生时、TBPHS 被载入 TBCTR。 在某些条件下、这肯定会导致 TBCTR 永远不会达到零。

    如果您使用定期与不同频率的 PWM 同步、则较慢的 PWM 必须始终是主 PWM、以避免同步问题。

    由于 PWM 频率相同、因此在第一个周期内不应出现此问题。 在施加一次相位偏移后、第二个 PWM 将在每个周期中正确地超前或滞后另一个 PWM。 当同步脉冲出现时、它将在每个周期将相同的值加载到 TBCTR 中。

    如果您改变两个 PWM 之间的相位关系、那么这种关系也变得更加复杂。

    简而言之、您应该能够避免您描述的问题。

    此致、
    Cody