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.

[参考译文] MSPM0G3507-Q1:时钟不稳定->>PLL 问题?

Guru**** 2523320 points
Other Parts Discussed in Thread: MSPM0G3507-Q1

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560081/mspm0g3507-q1-unstable-clock----pll-problems

器件型号:MSPM0G3507-Q1


工具/软件:

您好:

我们集成了 MSPM0G3507-Q1 以进行定制设计。 我们添加了一个 24MHz 外部晶体(负载电容 8 pF ->我们在 XTAL 上使用 12 pF 电容)。 我们使用示波器验证了晶体及其在指定容差范围内。

我们得到了一些样本、并使用软件刷写了这些样本。 我们的软件会创建一个具有 5MHz 时钟的简单 PWM 计时器。 如果 PCB 变得更热、时钟变得更加不稳定(PLL 处于活动状态)、计时器时钟会在某个 kHz 左右波动、这不在容差范围内。

最初的时钟树配置

我进行了一些测试、使用了一个简单的示例 gpio_toggle_output 并修改了此示例。 我刚刚修改了时钟树并添加了一个带 5MHz 的 PWM 计时器、没有 GPIO 引脚正在切换。

目的是确定不稳定的根源,我做了 4 次尝试:

初次尝试:

仅在该时钟树配置中使用内部时钟 SOSC

--> 4MHz 时钟输出稳定

第二次尝试:

仅在 PLL 有效的情况下使用内部时钟 SOSC

-->当 4MHz 处于激活状态时、PLL 时钟不稳定--> 这可能是由于 PLL 造成的

第三次尝试:

不带 PLL-> 4MHz 时钟输出稳定的外部 24MHz 晶体

第四次尝试:

具有 PLL 的外部 24MHz 晶体(原始时钟树)-> 5MHz 时钟输出不稳定

范围内的图片(标准偏差> 6kHz 增加至 30kHz)

如果我将 clk2x_Div 从 6 放大到 8 --> CPU_CLK  

60MHz 而不是 80MHz -->计时器的输出时钟 (5MHz) 也是稳定的!

示波器图片(标准偏差< 200Hz)

因此 PLL 配置似乎有问题。  

在 SYSCTL“启用时钟稳定检查“中始终开启。 我们使用 CCS 20.0、但使用哪个版本无关紧要。 我们还有一些样片、这些样片的 80MHz 输出 PLL 配置没有问题。

我们不确定我们的某些 MCU 是否存在温度问题、则焊接问题不可见。 有时我们会更改 IC、然后使用原始配置。 PLL CONFIG、CLOCK CONFIG 或 TIMER CONFIG 是否存在任何已知问题、这些问题可能会导致温度升高而导致不稳定的时钟(任何预分频设置或其他设置)?

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

    请查看数据表 SYSPLL 部分、这里没有与温度相关的规格。

    您能告诉我您测试的 PCB 数量吗?

    我们得到了一些示例并使用我们的软件刷写了这些示例。 我们的软件会创建一个具有 5MHz 时钟的简单 PWM 计时器。 如果 PCB 变得更热、时钟变得更不稳定(PLL 处于活动状态)、计时器时钟会在某个 kHz 左右波动、这不在容差范围内。

    您测试的温度是多少? 只需 50°C 或增加到 80°C 或 120°C?

    似乎有 0.1%的误差。

    ------------------------------------------------

    您能帮助我测试这些情况吗?

    HFXT 24MHz 不能使用 SYSPLL0 为 CPU 生成 80MHz、因此我们可以尝试使用 SYSOSC。

    SYSOSC 32MHz -> PDIV /4 -> QDIV *20 -> VCO 160MHz -> CLK0_DIV /2 -> SYSPLL0 80MHz -> CPU

    SYSOSC 32MHz -> PDIV /4 -> QDIV *20 -> VCO 160MHz -> CLK0_DIV /4 -> SYSPLL0 40MHz -> CPU

    1 和 2 用于检查这是否与 SYSPLL0 和 SYSPLL2X 相关、或者它是否与 80MHz 相关 80MHz。

    想检查您的用例、您是否需要 CPU 80MHz?

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

    我们使用相同的软件测试了大约 20 个 PCB、其中大约 30%的 PCB 生成的计时器时钟不稳定。 我们暂时排除了制造问题。

    我进行了您建议的测试、SYSPLL0 与 SYSPLL2X 没有区别。 如果我将 CPU 时钟减少到 40MHz、偏差会好一点。

    我创建了一个非常简单的软件、只对计时器进行初始化并生成 2.66MHz 时钟。 我使用外部晶体、并测量了其频率、该频率看起来非常稳定。
    行为并不总是相同的。 有时时钟频率非常不稳定、偏差高达 10kHz、有时只有几百赫兹。 在我看来、有时 PLL 的初始化不起作用、这会导致偏差。 是否有任何 SDK 版本或 CCS 版本已更改驱动程序库、并且可能会发生此类行为? 我使用 MSPM SDK 版本 2.5.1 和 CCS 20.0、还将其与 SDK 版本 2.3.7 一起使用。 我有同样的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用 MSPM SDK 版本 2.5.1 和 CCS 20.0、我还将其与 SDK 版本 2.3.7
    配合使用。

    这是最新的 SDK 版本 、版本:2.05.01.00

    在我看来、有时 PLL 的初始化不起作用、这会导致偏差。

    如果您担心 SYSPLL 设置初始化问题、这里有另一个 E2E 主题讨论了这个问题、请将其放在这里作为参考。  MSPM0G3507:SYSPLL 设置示例中的 TRM 错误[SLAU846B 第 2.3.1.3.1] 

    范围图片(标准偏差<200 Hz)

    Re 检查示波器结果、由于标准非常大、您是否有示波器的抖动测试结果?

    在 PWM 的上升沿触发并捕获下降沿或下一个上升沿、启用图像保留功能。

    以查看抖动有多大。

    数据表中包含抖动规格: 7.9.3 系统锁相环 (SYSPLL)

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

    偏差非常高且超出规格:

    这是 80MHz MCLK 的时钟树:

    这些是计时器设置:

    这是非常不稳定的计时器输出:

    有时它仍然更高或更低:  

    如果您捕获几分钟、还有一些时间段、在大约 100 赫兹时、偏差非常低。

    如果我只将 CLK2X_DIV 设置为 6 到 8 MCLK、那么我没有问题、请参阅下图  

    这里没有问题、我们只有大约 360Hz 的偏差。 这张图中的频率较低、因为计时器设置与以前一样、但 MCLK 仍具有 60MHz。

    如果我使用外部振荡器、它仍然是相同的、偏差较小

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果 PCB 变热
    [quote userid=“571933" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560081/mspm0g3507-q1-unstable-clock----pll-problems/6004798 测试温度是多少? 仅 50°C 或增加到 80°C 或 120°C?

    任何温度范围?

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

    70°C 只有 50 至最大值

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

    得到~

    感谢您的反馈。

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

    我查看了上一个讲座。

    需要确认更多信息:

    [引述 userid=“571933" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560081/mspm0g3507-q1-unstable-clock----pll-problems/6004798

    HFXT 24MHz 不能使用 SYSPLL0 为 CPU 生成 80MHz、因此我们可以尝试使用 SYSOSC。

    SYSOSC 32MHz -> PDIV /4 -> QDIV *20 -> VCO 160MHz -> CLK0_DIV /2 -> SYSPLL0 80MHz -> CPU

    SYSOSC 32MHz -> PDIV /4 -> QDIV *20 -> VCO 160MHz -> CLK0_DIV /4 -> SYSPLL0 40MHz -> CPU

    我进行了您建议的测试、我没有看到 SYSPLL0 和 SYSPLL2X 之间的区别。 如果我将 CPU 时钟减少到 40MHz、则偏差会更好一些。

    您是否在反馈中保留 fVCO = 160MHz、结果会保持相同的现象?

    为消除计时器可能引起的干扰、请尝试使用 ClkOut 引脚将时钟直接输出到 M0 的引脚:

    在 syscfg -时钟树视图 — 时钟输出和 FCC 中

    请使用 SYSOSC 作为 SYSPLL 的时钟源并保持 VCO = 160MHz。

    1.选择 ULPCLK(当 CPU = 80MHz 时来自 SYSPLL 的源、ULPCLK 将= 40MHz(CPU/MCLK 的一半)) 并向客服引脚添加一些 EXCLKDIV(如 ULPCLK/10 = 4MHz 输出)。

    2.选择 SYSPLL1 作为输出。

    然后监控该时钟引脚的抖动。

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

    谢谢、我将在星期一上尝试一下、然后给您反馈

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

    好~

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

    因此、如果我使用外部晶体将 VCO 保持在 160 以下、则 CLK 是稳定的。 如果高于 160、则时钟不稳定。 数据表中是否有建议或其他任何地方将 VCO 保持在 160MHz 以下?

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

    在数据表中、您可以看到 400MHz 的限制

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

    感谢您的反馈。

    参考上一个说、如果 VCO 是 160MHz、则 PLL 不稳定。 您可以再次检查该测试点吗?

    在数据表中、您可以看到 400MHz 的限制

    现在、数据表已将 VCO 限制在 80 ~ 400MHz 之间、但仍建议客户使用 8/16/VCO 外部 HFXT 并将 32MHz 设置为 160MHz。

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

    好、但这份客户建议仍然没有写入任何文档? 存在内部振荡器时钟时、160MHz 就能保持稳定。 如果使用 24MHz 的外部晶体、则无法通过分频器设置达到 VCO=160MHz。 如果我们高于 160MHz、它会变得越来越不稳定、低于稳定状态。 因此、我们正在考虑将晶体更改为 16MHz、然后我们可以将 VCO 设置为 160MHz 以达到 80 或 40MHz 的 CANCLK。 这对我们很重要。 那么、您是否建议使用外部晶体来保持低于 160MHz、或者 160MHz 是否也可以?  

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

    因为以前在 40~70°C 温度下从未见过 160MHz 不稳定问题。

    它通常正常工作。

    这对我们很重要。 那么、您是否建议使用外部晶体来保持低于 160MHz、或者 160MHz 是否也可以?  
    1. SYSOSC 32MHz -> PDIV /4 -> QDIV *20 -> VCO 160MHz -> CLK0_DIV /2 -> SYSPLL0 80MHz -> CPU

    在之前的答复中、我询问了 VCO = 160MHz 的结果、 这就是为什么我要与您再次确认 VCO = 160MHz 是否有效的原因。

    您能仔细检查一下这一点吗?

    因此、我们正在考虑将晶体更改为 16MHz、然后我们可以将 VCO 设置为 160MHz、以达到 80 或 40MHz 的 CANCLK。

    16MHz 是 M0 的 HFXT 的更好选择。 对于 CANCLK、CANCLK = 40MHz 没问题。

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

    “在之前的答复中、我询问了 VCO = 160MHz 的结果、 这就是为什么我要与您再次确认 VCO = 160MHz 是否正常工作的原因。

    你能再仔细检查一下这一点吗?“

    是的,我检查了这个,它是有效的!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid=“634638" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560081/mspm0g3507-q1-unstable-clock----pll-problems/6019979

    “在之前的答复中、我询问了 VCO = 160MHz 的结果、 这就是为什么我要与您再次确认 VCO = 160MHz 是否正常工作的原因。

    你能再仔细检查一下这一点吗?“

    是的,我检查了这个,它是有效的!

    [/报价]

    好极了~
    16MHz HFXT 现在是一个不错的选择。

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

    您说:

    “因为以前在 40~70°C 温度下从未见过 160MHz 不稳定的问题。“  

    您是否已在 70°C 上面看到此行为?  您是否计划更新数据表以防止将 PLL 与 VCO>PLL 配合使用 160MHz。 您目前是否正在为该问题制定解决方案?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid=“634638" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560081/mspm0g3507-q1-unstable-clock----pll-problems/6022429

    “因为以前在 40~70°C 温度下从未见过 160MHz 不稳定的问题。“  

    您是否已在 70°C 上面看到此行为?  您是否计划更新数据表以防止将 PLL 与 VCO>PLL 配合使用 160MHz。 您目前是否正在为该问题制定解决方案?

    [/报价]

    不、先见过。

    建议客户使用 VCO=SYSPLL 的原因是、这是数据表 7.9.3 系统锁相环 (160MHz) 中某些规格的测试频率点。