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.

[参考译文] TMS320F28377S:PLL 锁定/重锁

Guru**** 2468480 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1270828/tms320f28377s-pll-locking-relocking

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

我们有一个单元使用内部 OSC2作为 PLL 的时钟源、该单元上电时似乎无法锁定。

我认为它停留在的代码位于  while 循环的 InitSysPll 函数中、以检查 PLL 是否已锁定

while (ClkCfgRegs.SYSPLLSTS.bit.locks!= 1)

我使用 C2000Ware 4.01版本。

但是、当使用 OSC1配置单元作为 PLL 时钟源时、不会发生此问题。

并且我没有看到看门狗复位、因此我认为代码卡在 PLL 锁定处、而不是等待在 PLL 锁定后检查时钟差异。

使用 JTAG 进行调试器复位时不会发生此问题。 它看起来在使用 JTAG 进行复位后正常工作。 仅在打开设备电源时才会出现此问题。

我有2个问题。

1.有没有任何变通办法可以使用 OSC2使 PLL 锁定? 我认为这应该是可能的、因为我看到 debugreset 可以使用 OSC2来使 PLL 锁定。 (我已经尝试了 WD 复位、但在复位后 PLL 未使用 OSC2锁定)

2.使用 OSC1代替 OSC2是否可以,因为 OSC1没有问题?

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

    www.ti.com/lit/SPRZ412第17页所示、PLL:可能不会在第一次锁定尝试时锁定、这是一个已知问题。 C2000ware 中已实现了权变措施。 很遗憾、我无法验证 v4.01中是否实施了权变措施、因为在更换笔记本电脑时、我无法访问我的旧版 C2000ware。 请注意、此问题与 PLL 有关、与输入时钟源无关。 查看 C:\ti\c2000\C2000Ware_5_00_00_00\driverlib\f2837xd\driverlib 目录中 sysctl.c 的代码片段:

    Unknown 说:
    1. 是否有我可以遵循的任何权变措施来使用 OSC2锁定 PLL? 我认为这应该是可能的、因为我看到 debugreset 可以使用 OSC2使 PLL 锁定。

    C2000ware 中的 Driverlib 函数已实现了权变措施。

    Unknown 说:
    2. 可以使用 OSC1而不是 OSC2、因为 OSC1没有问题吗?

    是的、没问题。 然而、正如我之前说过的、这个问题与 PLL 有关、而不是与特定时钟源相关。

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

    根据我的理解、如果 PLL 未锁定、它将在 while 循环中一直等待。 您能否解释一下当 PLL 未在第一次尝试时锁定时的处理方法?

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

    对于 OSC1是否也可能出现问题、我不清楚、因为问题发生在 PLL 侧、而不是 OSC1或 OSC2侧。

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

    你好,Hareesh。

    目前不清楚建议的"for"循环是如何工作的。 因为很显然、MCU 在内部"while"中 I=0时挂起。 如果 PLL 未被锁定、MCU 被连接到这里。

    另一方面、如果您设法脱离 "while"循环(PLL 已锁定)、重复此过程5次的目的是什么?

    提前感谢

    玛丽亚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据我的理解,如果 PLL 没有锁定,它将在 while 循环中永远等待。 您能解释一下 PLL 在第一次尝试时没有锁定时的解决方法是如何进行的吗?

    如果发生这种情况、WD 将复位器件、并且 PLL 锁定过程将再次开始。  

    我不清楚是否 OSC1也可能发生问题,因为问题是在 PLL 端,而不是在 OSC1或 OSC2端。

    如果问题确实与 PLL 有关、我同意 OSC1也可能发生。 我在第一次答复中提到了这一点。 如果您确实看不到 OSC1的问题、则可能是 OSC2而不是 PLL 导致了问题。  

    不清楚建议的"for"循环是如何工作的。 因为很显然、MCU 在内部"while"中 I=0时挂起。 如果 PLL 未锁定、则 MCU 会在此处连接。

    如果发生这种情况、WD 计数器会复位器件并将器件拉出该状态。

    另一方面,如果您设法从 "while"循环(PLL 锁定)中退出,重复该过程5次的目的是什么?

    有效的问题。 PLL 锁定强制执行5次。 一旦锁定,它不会伤害到重新锁定。 根据经验数据,值5被认为是有效的。

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

    如果发生这种情况、WD 将复位器件、并且 PLL 锁定过程将再次开始。  

    [/报价]

    我下载了版本5、但在进入循环之前没有看到看门狗已启用(与版本4.01相同)、因此要解决这个问题、我们必须在配置 PLL 之前启用 WD、对吗?

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

    默认情况下、启用 WD。 即、在复位时、该功能启用。 如果有任何函数禁用它(作为器件初始化的一部分)、则必须在 PLL 配置之前重新启用它。

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

    谢谢 Hareesh、默认情况下 C2000Ware 示例代码上不会启用 WD、但我很清楚、在 PLL 配置之前必须启用 WD。