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.

[参考译文] TMS320F280039C:InitSysPll () 代码中的问题

Guru**** 2815985 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1605291/tms320f280039c-issue-in-initsyspll-code

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

我尝试在 F28003x 上使用 XTAL 选项。
我看到在 Launchpad 上、XTAL 的频率为 20MHz(必须检查 BOM、因为用户指南/数据表中没有提到它)、运行正常。

假设我使用另一个 10MHz 晶体振荡器。
如果我设置四个参数:imult、refdiv、odiv 和 divsel(如下所示的 InitSysPll () 函数)与我用于内部振荡器的参数 (48、0、1、1) 相同、它们实际上是它们的默认值、我看到 InitSysPll () 将配置内部振荡器本身而不是 XTAL。
这样做的原因是、用于选择 XTAL 的开关情形位于 if-子 句中、该子句会检查以下四个参数是否发生了变化:imult、refdiv、odiv 和 divsel、如果它们没有从默认值更改为其他值、则会完全跳过 if 子句中的代码。
image.png

我看到这里提出了一个非常类似的问题: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1583342/tms320f28p650sk-pll-initialization-issue?tisearch=e2e-sitesearch&keymatch=IMULT#

但是、在上述问题中、INTCLK 不在所需范围内、因此 InitSysPll 的此问题在该范围内无效。  
在这里、如果 10MHz 的 XTAL 和 (48、0、1、1) 用于 F28003x、则 INTCLK 在有效范围内。 我已经检查了、对于 10MHz OSCCLK、INTCLK 在 refdiv = 1 的情况下为 5MHz、这在 INTCLK 的范围内:
image.png

因此,我的问题是:如果用户有一个 10MHz 晶体与 F28003x 芯片一起使用,如果四个参数被配置为默认值 (48、0、1、1 ),我认为这来自将时钟配置为默认值的引导加载程序, InitSysPll () 在尝试使用 XTAL 时不会引起问题,因为 if-子 句将为 false ,因此不会选择 XTAL ?  

我需要了解对于 XTAL 和四个参数的这种特定配置、InitSysPll () 是否有故障、如果有、将来是否会在包含 InitSysPll () 的 C2000ware 标头中进行更正、
或者、
无论我是否需要将四个参数之一修改为其默认值以外的值、以确保 IF-子 句通过、同时确保 10MHz 晶体所需的 SYSCLK/LSPCLK 保持不变。  


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

    您好:

    1.现在编写代码的方式是跳过 PLL 时钟配置(开关时钟源)、它将通过继承的 PLL 初始化和基于 Boot-ROM 编程代码的寄存器进行启动。

    2.如果客户使用与内部振荡器相同的 IMULT、ODIV 和 REFDIV、则会导致代码无法将振荡器源更新到 XTAL。 您需要确保系数和内部时钟频率与提供的表相匹配。 6.12.那么,它就可以正常工作了。