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.

[参考译文] TM4C123GH6PM:使用 PIOSC 时的 PWM 抖动

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/574706/tm4c123gh6pm-pwm-jitter-by-using-the-piosc

器件型号:TM4C123GH6PM

  您好!

对于当前项目、我们将 TM4C123GH6PM UC 与 FPGA 一起使用。 我们的计划是从 uC 驱动 FPGA 的时钟、使其同步运行。 为此、我已将 引脚 PB5连接到 FPGA 时钟输入、将其设置为用作 PWM 输出 M0PWM3。 为了为 TM4C123GH6PM 计时、我们使用 PIOSC 并将其配置为以80MHz 运行。 PWM 模块使用 SYSCTL (80MHz)并 输出80MHz (50/50)的 PWM 信号。

现在的问题是、当我在示波器上研究 PWM 信号时、触发点看起来一切正常。 但是、当我查看+2us 时、我已经看到大约7ns 的抖动。 这种现象会随着时间的推移而增加。 现在、我已经将 Lauchpad (EK-TM4C123GK)连接到示波器并运行相同的代码。 它具有相同的问题。 到目前为止还可以。 当我使用外部16MHz 晶体作为时钟源时、一切都是稳定的。

我希望任何人都能在这个主题上帮助我。

我粘贴了以下范围调查中的相关源代码和两张照片:

//将系统时钟设置为以80MHz 运行

ROM_SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_INT);

ROM_SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);

//

//配置 GPIO 引脚复用以选择这些引脚的 PWM03功能。

//

ROM_GPIOPinConfigure (GPIO_PB5_M0PWM3);

//

//为此引脚配置 PWM 功能。

//

ROM_GPIOPinTypePWM (FPGA_GPIO_PORT_BASE、FPGA_CLK_EN_PIN);

//

//将 PWM0配置为在不同步的情况下递减计数。

//

PWMGenConfigure (PWM0_BASE、PWM_GEN_1、PWM_GEN_MODE_DOWN);

//

//将 PWM 周期设置为16MHz。 以计算适当的参数

//使用以下公式:n =(1 / f)* SYSCLK。 其中 N 是

//函数参数、f 是所需的频率、SYSCLK 是

//系统时钟频率。

//在本例中、您得到:(1/16MHz)* 80MHz = 5个周期。

//

ROM_PWMGenPeriodSet (PWM0_BASE、PWM_GEN_1、5);

//

//将 PWM0设置为50%的占空比。 您将占空比设置为函数

/的周期。 由于周期是在上面设置的、因此您可以使用

// PWMGenPeriodGet ()函数。

//

ROM_PWMPulseWidthSet (PWM0_BASE、PWM_OUT_3、

ROM_PWMGenPeriodGet (PWM0_BASE、PWM_GEN_1)/ 2);

//

//启用 PWM0位3 (PB5)输出信号。

//

ROM_PWMOutputState (PWM0_BASE、PWM_OUT_3_BIT、TRUE);

//

//启用 PWM 发生器模块。

//

ROM_PWMGenEnable (PWM0_BASE、PWM_GEN_1);

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

    [引用 user="MathiasBuder"]

    当我使用外部16MHz 晶体作为时钟源时、一切都很稳定...   我希望任何人都能在这个主题上帮助我。  [/报价]

    您的调查是否未揭示外部晶体/电路相对于"内部振荡器"的优势?

    内部振荡器-来自该供应商和其他供应商-为了节省成本/尺寸、通常会包括在内。   性能至关重要的应用-外部晶体电路(静态)占据了最高地位...

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

    正如 CB1-mobile 所指出的、PIOSC 内部振荡器不如外部晶振那么稳定。 内部振荡器频率受电压和温度的影响。 您将看到频率 随内部结温的升高而变化。 您在2us 下测得的7ns 的"抖动"为0.35%。

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

    除了供应商"Bob"提到的:电压和温度对 MCU 频率的影响之外、合理的做法是包括器件"老化"以及"单元间"变化。

    外部晶体电路的使用是"黄金标准"、其中要求"最大"的频率精度和可重复性/精度。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    非常感谢您向我指出这一点。 然后、我将在下一个 PCB 版本中使用外部冷冻钨。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢您-这是针对您的"精密频率"应用的明智决定。

    请注意持续的趋势、"MCU 作为"厨房洗涤槽"(即一切)、可能会成功、"快速/短厨房订单"、但肯定不适合美食价格。

    虽然可以降低尺寸/成本-设计人员必须仔细考虑此类"节省"带来的后果(已知和未知)。  而且-很高兴地说-您的好奇心导致了系统调查-然后在此进行清晰的报告-重申(长标准)外部 xtal 电路的价值主张-证明是最有洞察力的...

    内部振荡器(该供应商和其他供应商)确实具有其地位-提供优势-但每个案例都是"特殊"的、每个案例都需要仔细考虑...