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.

[参考译文] TMS320F28377D:有关 ePWM 频率的问题

Guru**** 2943430 points

Other Parts Discussed in Thread: LAUNCHXL-F28379D, TMDSCNCD28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1082118/tms320f28377d-questions-about-epwm-frequency

部件号:TMS320F28377D
线程中讨论的其他部件:LAUNSCHXL-F28379DTMDSCNCD28379D

你(们)好。 我正在使用28377D 的 ePWM 函数。 但 PWM 频率远低于我的预期。 系统时钟设置如下所示

InitSysPll(XTAL_OSC, IMULT_20, FMULT_0, PLLCLK_BY_2);

因此,CPU 频率应为20MHz*20/2=200MHz。 然后,我将 ePWM 的周期配置为400 (向上和向下模式)(完整代码如下所示),因此我希望 ePWM 频率应为200MHz/400/2=250kHz。 但是,测量结果仅为 Aboud 100kHz。

void InitEPwm1Example()
{
    EPwm1Regs.TBPRD = 400;       // Set timer period 801 TBCLKs
    EPwm1Regs.TBPHS.bit.TBPHS = 0x0000;        // Phase is 0
    EPwm1Regs.TBCTR = 0x0000;                  // Clear counter

    EPwm1Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;    // Set compare A value
    EPwm1Regs.CMPB.bit.CMPB = EPWM1_MAX_CMPB;    // Set Compare B value

    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up and down
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // Disable phase loading
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // Clock ratio to SYSCLKOUT
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;            // Set PWM1A on event A, up
                                                  // count
    EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;          // Clear PWM1A on event A,
                                                  // down count

    EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;            // Set PWM1B on event B, up
                                                  // count
    EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;          // Clear PWM1B on event B,
}

可以帮我解决这个问题吗? 我将不胜感激。

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

    你好,Yu,

    您使用的是启动板(LAUNCHXL-F28379D),controlCARD (TMDSCNCD28379D)还是您自己的自定义板? LaunchPad 具有20MHz 间歇,controlCARD 具有10MHz 间歇。

    此致,

    Marlyn