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.

[参考译文] TMS320F28377D:PLL 初始化问题:变通办法应用/修改、TMS320F28379D (Launch XL 板)和 TMS320F28377D (定制板)之间的行为差异

Guru**** 2577385 points
Other Parts Discussed in Thread: TMS320F28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/920318/tms320f28377d-pll-intialization-issues-workaround-application-modification-behavior-difference-between-tms320f28379d-launch-xl-board-and-tms320f28377d-custom-board

器件型号:TMS320F28377D
主题中讨论的其他器件:TMS320F28379DC2000WARE

您好!

我们在使用 TMS28377D 目标的定制板上遇到 PLL 初始化问题。

已使用 TMS320F28379D 在 Launchpad XL 上开发了软件、未发现任何问题。

使用 TMS28377D 切换到定制板时、我们会发现 PLL 初始化存在问题。


我们看到 sprz412j.pdf 中存在一个变通办法(PLL:可能不会在第一次锁定尝试时锁定),建议在 C200ware 中获取 InitSysPll()函数。

我们首先尝试未成功的版本、并将我们的 C200ware 更新到最后状态。 我们再次尝试了,但仍然不起作用。


基于 InitSysPll(),我们修改了代码以增加一些等待时间(请参阅附加的文件 DRVDSP_INIT_SYS_PLL.c)。

加载 EOC 后、每次执行都有效、但在调试模式下使用 XDS200探针、在执行 CPU 软件复位时以及在没有断点的情况下执行完成后、软件会崩溃。

当再次执行此操作时、但当在 DRVDSP_INIT_SYS_PLL 上使用断点启动执行并继续使用几个步骤的单步执行、然后继续 正常执行时、它会正常运行。

对于我们无法理解的此 PLL、存在一些棘手的问题。

我们不明白为什么爬虫程序 CPU 之间的行为不同、因为它们是99%的诱惑。

我们还可以在具有 TMS320F28379D 的 LaunchXL 上执行 TMS28377D 配置。

您能告诉我们现在要检查什么、因为这种行为不够安全。

我们希望在每次软件启动、断电/通电或 CPU 软件复位以进行调试后都能正常执行。

谢谢你。

e2e.ti.com/.../DRVDSP_5F00_INIT_5F00_SYS_5F00_PLL.c

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

    您好!

    定制电路板上的 XTAL 频率是多少? 如果是20MHz、则40的 IMULT 配置将使 PLLOUTPUT 频率达到800MHz、这超出了规格范围。

    /*写入乘法器、自动打开 PLL */
    /*积分乘法器:IMULT = 40、分数乘法器:FULT = 0 */
    GV_sClkCfgRegs.SYSPLLMULT.ALL = 40UL;

    此致、

    Nirav

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

    您好!

    与 Launch XL 板上的 XTAL 频率一样、XTAL 频率为10MHz。

    在附加的文件中、您可以看到我们的配置:

    /*写入乘法器、自动打开 PLL */

    /*积分乘法器:IMULT = 40、分数乘法器:FULT = 0 */
    GV_sClkCfgRegs.SYSPLLMULT.ALL = 40UL;

    /*将分频器设置为产生较慢的输出频率以限制电流增加*/
    /*它也是用户值(divsel)*/
    GV_sClkCfgRegs.SYSCLKDIVSEL.bit.PLLSYSCLKDIV = 1

    因此、它给出了: 10MHz * 40 / 2 = 200MHz  

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

    您好!

    自我上次对所附文件的答复以来,您有什么想法吗?

    自我发布第一篇帖子以来、我们已将勘误文件更新为最新版本(sprz412l.pdf)。

    PLL 与我们关注的3个错误相关联。

    查找附加的配置文件。

    e2e.ti.com/.../6014.DRVDSP_5F00_INIT_5F00_SYS_5F00_PLL.c

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

    这还没有解决我们在调试模式下的软件复位问题、我们仍然不需要再次执行 PLL 初始化。

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

    尊敬的 Pat:

    如果您只需在项目中调用 C2000Ware 中的 InitSysPLL 函数、那会更好。 只需简单介绍一下代码差异、我就可以看到以下公式看起来不正确:

    您的代码:

      sysclkToInClkError =((float32)(20UL * ctr2 - ctr1))*(1.0/400.0);

    C2000Ware:

      sysclkToInClkError =(mult/div)-((float) ctr1/(float) TMR2INPCLKCTR);

    此外、TMR2INPCLKCTR 值也不匹配。

    此致、

    Nirav

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

    您好!

    好的、我们将尝试提供的解决方法、并判断问题是否已解决。

    我们仍然不明白为什么28379D 上的行为正常、而28377D 上的行为奇怪、但我们将从这开始。