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.

[参考译文] TMS320F28379D:PWM 默认系统时钟

Guru**** 2815875 points

Other Parts Discussed in Thread: TMS320F28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/746899/tms320f28379d-pwm-default-system-clock

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

您好!

我正在练习在 TMS320F28379D Launchpad 开发套件中生成 PWM 信号。

我想知道 PWM 模块的默认 PLLsystemClk 和将从 PWM 引脚获取的默认 TBCLK。

我已将该板配置为使用具有20Mhz 外部振荡器的 PLL 在200MHz 下工作。

我有默认值:

ClkCfgRegs.PERCLKDIVSEL[EPWMCLKDIV]= 2;
TBCTL[HSPCLKDIV]=1;
TBCTL[CLKDIV]=2;

如果我的系统时钟为200MHz、那么在预分频分频分频后、我将获得50MHz 作为 TBCLK。
但我的 PWM 频率仅为25MHz。 为什么?

问题:

我想知道我是否缺少配置更多内容? 为什么我得到的是25MHz 而不是50MHz?

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

    请检查上述寄存器位的说明、因为此配置会导致25MHz。 例如
    ClkCfgRegs.PERCLKDIVSEL[EPWMCLKDIV]= 2;//这将 epwmclk = 200MHz 配置为 PLLSYSCLK 的 x0 =/1

    TBCTL[HSPCLKDIV]= 1;//配置/2
    TBCTL[CLKDIV]= 2;//配置/4
    以上配置会导致 TBCLK = 200MHz/(2x4)= 25MHz

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

    感谢您的快速回复。

    我已检查您与我共享的寄存器、以下是寄存器值(默认值)
    ClkCfgRegs.PERCLKDIVSEL[EPWMCLKDIV]= 1;//配置/2
    TBCTL[HSPCLKDIV]= 0;//配置/1
    TBCTL[CLKDIV]=1;//配置/2
    将 PLLSystemClock 配置为200MHz。 根据上述寄存器设置、我应该将 TBCLK 设置为50MHz、但它给我25MHz。

    Tpwm =(TBPRD + 1)* Ttbclk;//TBPRD = 0
    我的 PWM 是递增计数器模式、我已将 TBPRD 寄存器设为零。 因此、Tpwm = Ttbclk。

    问题:
    为什么我要获得25MHz、而不是50MHz? 是否仍然缺少任何配置?

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

    不应将 TBPRD 值设置为零。 请参阅 C2000Ware 中的 ePWM 示例、了解有关 PWM 配置的更多详细信息。

    谢谢
    Vasudha
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Vasudha。
    我知道 TBPRD 寄存器是为了获得 PWM 的精确时钟频率。

    Tpwm =(TBPRD + 1)* Ttbclk;//TBPRD = 0

    上面的公式用于 PWM 频率计算。 我想把 TBCLK 直接映射到 PWM 时钟、所以将其设为零。

    只要确认我将以下寄存器配置为200MHz 系统时钟、将会得到的 TBCLK 确切值是多少?
    ClkCfgRegs.PERCLKDIVSEL[EPWMCLKDIV]= 1;//配置/2
    TBCTL[HSPCLKDIV]= 0;//配置/1
    TBCTL[CLKDIV]=1;//配置/2

    我在 PWM 引脚中获得25MHz 时钟。


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

    [引述]只需确认我将使用200MHz 系统时钟配置以下寄存器时得到的 TBCLK 确切值是多少?
    ClkCfgRegs.PERCLKDIVSEL[EPWMCLKDIV]= 1;//配置/2
    TBCTL[HSPCLKDIV]= 0;//配置/1
    TBCTL[CLKDIV]= 1;//配置/2[/引用]

    上述配置将 TBCLK 设置为50MHz。 但我想您已经将时基计数器配置为向上/向下计数模式、并且由于 TBPRD 值为0、因此输出频率为25MHz。

    要获得50MHz 频率、您可以将 TBCLK 配置为100MHz、将 TBPRD 值配置为1。

    谢谢

    Vasudha

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

    Vasudha、您好!

    只需澄清一点。 因此、我不希望您分散我的查询的注意力。

    系统时钟= 200MHz //来自 PLL
    时基计数器模式= UP_MODE
    ClkCfgRegs.PERCLKDIVSEL[EPWMCLKDIV]= 1;//配置/2
     TBCTL[HSPCLKDIV]= 0;//配置/1
     TBCTL[CLKDIV]=1;//配置/2
    TBPRD=1;

    在上述配置下、预期的 PWM 频率是多少?

    此致、
    Manohar

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

    TBCLK 频率将为50MHz、PWM 频率将为25MHz。

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

    您的对。

    如果 TBCLK = 50MHz = 20ns 至一个时钟周期
    PWM 线路每20ns 切换一次。 这意味着它需要40ns 到一个时钟周期。

    这就是我将 PWM 频率设置为25MHz 而不是50MHz 的原因。

    这是我从情景中了解到的内容、您能确认一下吗?


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