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.

[参考译文] TMS320F28P650SK:PLL 初始化问题

Guru**** 2847400 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1583342/tms320f28p650sk-pll-initialization-issue

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

尊敬的 Champs:

我向我的客户询问这个问题、现在他们在开发时遇到了以下问题。 我们使用位域示例代码。  

为什么在 main() 运行之前 SYSPLLMULT 寄存器有值? 我在 TRM 中看到、它们的复位值为 0。 这些值何时写入寄存器? 下面是我的 Launchpad 显示内容。 在客户电路板上读取的寄存器值为 IMULT=40、REFDIV=1、ODIV=2、这与使用 INTOSC 时的配置相同。  

image.png

2.因为 SYSPLLMULT 寄存器在 PLL 由以下代码初始化之前具有一个值

image.png

、并且客户使用外部 10MHz XTAL、如果客户使用与内部振荡器相同的 IMULT、ODIV 和 REFDIV、则会导致代码无法将振荡器源更新到 XTAL。  

这是因为在 InitSysPll () 中有如下判断:

image.png

如果需要在 if() 内检查的所有值与客户当前设置的值相同、则 if() 内的内容将被跳过、而 els() 将被直接执行。 但切换 clock_source 代码位于 if() 内部。 这会导致 CLOCK_SOURCE 开关失败。  

image.png

3.为避免上述问题、客户尝试更改了 IMULT=60、REFDIV=1、ODIV=3。 客户的 XTAL 为 10MHz。 客户的配置似乎符合要求、但客户发现、如果他使用此配置、其代码输出将无法控制。

image.png

但是、如果他改回 IMULT=40、REFDIV=1、ODIV=2、然后手动添加 SysXtalOscSel () 以将时钟源切换到 XTAL、则问题将消失。  

客户想知道为什么 IMULT=60、REFDIV=1、ODIV=3 会有问题。

 

您能帮助检查一下吗? 谢谢!

此致、

Julia

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

    您好:

    我将及时查看和答复。

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

    尊敬的 Stevan:

    是否有任何更新? 谢谢!

    此致、

    Julia

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

    尊敬的 Julia:

    您是否检查过并尝试运行一些 PLL C2000Ware 示例代码? 此外、请参阅数据表和 TRM 中乘法器和时钟频率的规格表。 如果倍频器超出范围、输出将不再稳定。

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

    尊敬的 Stevan:

    现在我已经使用了位域示例代码、并且已经具有 PLL 配置、会出现此问题。 是否有任何其他 PLL 示例?

    3. 为避免上述问题、客户尝试更改了 IMULT=60、REFDIV=1、ODIV=3。 客户的 XTAL 为 10MHz。 客户的配置似乎符合要求、但客户发现、如果他使用此配置、则其代码输出将无法控制。

     当  IMULT=60、REFDIV=1、ODIV=3 且 10MHz 时、我认为这 符合数据表规格、我之前还添加了手册所需的图像。 但是、客户当前的测试结果表明、此配置偶尔会失败。

    谢谢!

    此致、

    Julia

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

    尊敬的 Stevan:

    是否有任何更新? 谢谢!

    此致、

    Julia

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

    尊敬的 Julia:

    是否使用 controlCARD 或 LaunchPad 进行测试?

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

    尊敬的 Stevan:

    我使用  LaunchPad、您可以观看下面的视频。 您可以看到、当我连接到 CPU1 时 、SYSPLLMULT 具有一个值、并且点击 CPU 复位不会清除此值。 在 I load .out 文件后、您可以看到该值正在更新。 简而言之、该 SYSPLLMULT 寄存器的初始值不是 0。 如果使用代码进行测试、应该能够重现此问题。

    视频位于以下链接中:

    tidrive.ext.ti.com/.../fc2e4f8c-4b66-4130-98d6-388dc0523c29

    C^G6v7Aw

    客户仍然希望检查这个问题。 其 XTAL 为 10MHz。

    [引述 userid=“486218" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1583342/tms320f28p650sk-pll-initialization-issue

    客户想知道为什么 IMULT=60、REFDIV=1、ODIV=3 会有问题。

     

    [/报价]

    谢谢!

    此致、

    Julia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 您对函数行号的假设 f28p65x_sysctrl.c 中的 465 正确。 现在编写代码的方式、它将跳过 PLL 时钟配置(开关时钟源)、并将 根据继承的 PLL 初始化和寄存器(基于 Boot-ROM 编程的代码)进行启动。
    2. 我再次查看了您的系数、根据您附加的 TRM 中的“内部时钟频率“表、这些系数不起作用。

    请让他们参考 TRM 的图 3-10

    根据此图、REFDIV = 1、得出 INTCLK = 10MHz / (1+1)= 5MHz、这低于所需的范围。 INTCLK 的最小值应至少为 10MHz。 查看该图后、应该清楚地告诉他们、我假设他们不知道应该为 REFDIV 和 ODIV 加 1。