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.

[参考译文] LAUNCHXL-F28379D:ePWM 频率计算

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/986445/launchxl-f28379d-epwm-frequency-calculation

器件型号:LAUNCHXL-F28379D

您好!

这可能看起来非常简单、但当我运行 ePWM_UP_AQ 示例时、我在示波器上测量的频率与我预期的频率不同。

对于递增计数模式、Fpwm = 1/Tpwm、且 Tpwm = (TBPRD + 1) x T_TBCLK。 示例代码的 TBPRD 为2000、我假设 ePWM 时钟为100MHz、Fpwm 应为50kHz、但我测量的是6.25kHz。  我唯一能想到的是100MHz 假设是错误的、在哪里可以检查或修改它?

谢谢你

Jin

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

    您好、Jin、

    以下是测量6.25kHz 频率的原因:

    Tpwm = (TBPRD + 1) x T_TBCLK

    TBPRD 为2000

    TBCLK = EPWMCLK/(HSPCLKDIV * CLKDIV)

    通过查看该示例、我们可以看到 HSPCLKDIV 和 CLKDIV 都设置为除以2。

    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2;  
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2;

    若要查找 EPWMCLK 的值、可参考 PERCLKDIVSEL 寄存器的 EPWMCLKDIV 位。 这是 ePWM 时钟分频选择位。 默认情况下、它被设置为 PLLSYSCLK 的二分频。

    现在、要查找 PLLSYSCLK、

    如果 在 示例中打开 InitSysCtrl()函数的声明,则可以找到 PLLSYSCLK 的设置位置:

      InitSysPll (XTAL_OSC、IMULT_20、FULT_0、PLLCLK_By_2);

    launchpad 上的 XTAL_OSC 为10MHz (可在 launchpad 的 BOM/原理图中找到)

    计算如下: fPLLSYSCLK = fOSCCLK *(SYSPLLMULT.IMULT + SYSPLLMULT.FAULT)/SYSCLKDIVSEL.PLLSYSCLKDIV

    输入传递给 InitSysPll 的值、我们得到 fPLLSYSCLK =(10M)*(20)/2 = 100MHz

    由于 EPWMCLKDIV 设置为除以2、因此 EPWMCLK = 100M /2 = 50MHz

    将 EPWMCLK 插回输出 TBCLK 计算:50M/(4)= 12.5m

    因此、Tpwm =(2001)/(12.5m)= 0.00016

    Fpwm = 1/Tpwm = 1/0.00016 = 6.246kHz

    如果 您希望 ePWM 时钟频率为100MHz、则最简单的方法是将  EPWMCLKDIV 更改为1分频。 这可以通过 在程序中包含以下代码来完成:  

    Fullscreen
    1
    2
    3
    EALLOW;
    ClkCfgRegs.PERCLKDIVSEL.bit.EPWMCLKDIV = 0;
    EDIS;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    对于50kHz 输出(Fpwm)、有许多方法可以实现这一点。 如果您将 ePWM 时钟更改为100MHz、那么您可以相应地调整 TBPRD、将其设置为500应该会提供50kHz 的输出。

    此致、

    Marlyn

x 出现错误。请重试或与管理员联系。