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.

[参考译文] TMS320F28375S:TMS320F28375S:SYSCLK 频率检查在某些配置中失败

Guru**** 2478765 points
Other Parts Discussed in Thread: TMS320F28377S, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/910408/tms320f28375s-tms320f28375s-sysclk-frequency-check-fails-in-some-configurations

器件型号:TMS320F28375S
主题中讨论的其他器件:TMS320F28377SC2000WARE

我们正在处理一个奇怪的问题、在 C2000ware 中使用 F2837xS_SYSCTRL.c 中的 InitSysPll 函 数的细微修改版本时会发现这个问题。  我已经查看了 C2000ware 的最新版本(v3.02.00.00)、以确认我们与最新版本保持一致。  下面引用的所有行号都将与该代码对应。  此测试是在使用10MHz 外部时钟源的 TMS320F28377S LaunchPadXL 上进行的。

我们发现、函数的某些输入组合会导致第1004行的 sysclkInvalidFreq 为 true。  总是当第999行上的 mult/div 值小于2.0时。  这无法通过查看表5-12内部时钟频率中提供的数据表(SPRS881H)中的有效频率范围来解释。

我们可以通过以下设置获取 sysclkInvalidFreq 来评估 false:

时钟源 结果 fmult 迪索尔
XTAL_OSC 12. 0 2.
XTAL_OSC 14. 0 2.
XTAL_OSC 16. 0 3.
XTAL_OSC 18 0 3.
XTAL_OSC 20. 0 4.

但是、当我们针对每种情况将 divsel 增加1时、mult/div 的值会降至2以下、sysclkInvalidFreq 会计算为 true。  

我们希望在此提供任何帮助、以便我们能够了解这种行为的原因。  谢谢!

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

    约旦、您好!

    您提到您使用的是略微修改的 InitSysPll 版本。 您修改了什么? 使用 C2000Ware 中的"原样"功能时、您是否会看到同样的问题?

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

    您好、Frank、

    我尝试使用函数 InitSysPll -我可以从 C2000Ware v3.02.00.00中获得最佳效果、我发现问题仍然存在。  我所做的修改:

    1) 1)在  函数中将 clock_source 硬编码为 XTAL_OSC

    2) 2)删除内部看门狗备份、禁用和恢复

    3)已删除对 ServiceDog ()的调用;

    4) 4)删除了计时器1和计时器2的备份和恢复

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

    约旦

    让我仔细看一下、明天我会再来看看。

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

    约旦、您好!

    这可能是针对 PLL 锁定问题实施的权变措施的工件、勘误表中对此进行了记录。 我将仔细检查这是否是预期的、或者它是否是错误。

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

    您好、Frank、

    在发布此帖子之前、我确实收集了一些其他信息、这可能会有所帮助、您可能会执行与我所做的相同的调试操作、以了解导致问题的原因。

    我在调试时做的一件事是将计时器2周期从0x800加倍到0x1000、以获得更高的粒度、并且我在过程中做了一些小调整、以便您的数据可能无法与我的数据完全一致。  然后、我在设置 fmult=0以及变化的 imult 和 divsel 之后测量了经过的定时器1时间(周期-计数器)。  根据 imult、divsel、经过的时间和计时器2周期、我计算在确定 sysclkInvalidFreq 时相互减去的两个数字。   

    我想您可以从数据中看到、当预期比率开始降至2以下时、测得的比率变得不一致。  除了经过的定时器1时间表中的值、当 DIVSEL 作为2传入并在测试期间递增时、这些值开始与 SYSCLKDIVSEL 设置为/8不一致。  我希望当您在各列中移动时、一行中经过的时间会减半、但情况并非如此。

    谢谢、

    -约旦

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

    约旦、您好!

    通过设置更高的 div 值、您违反了计时器要求、其中 SYSCLK/OSCCLK 比率必须至少为2。 此外、 在 InitSysPll 函数内、当使用计时器验证频率时、DIPSEL 会递增1、之后它会将频率设置为 DIPSEL 的用户编程值。 这意味着、如果您打算使用 divsel 2 (即/4)函数将1添加到其中、并使其变为3 (即/8)、则这样做是为了在系统启用时钟时限制电流的突然涌入、并逐渐增加 SYSCLK 频率。

    您看到误差的原因是 SYSCLK/OSCCLK 的频率比(10MHz)小于2。  

    我是否可以知道这里的预期 SYSCLK 频率是多少? 您能否通过确保您不违反下面的计时器要求来管理它?

    SYSCLK =(XTAL_OSC * imult)/(div*2)>2*XTAL_OSC。 在配置分频器的情况下、请确保 SYSCLK 频率大于40MHz。

    此致、

    Nirav

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

    嗨、Nirav、

    谢谢你们的解释、我看了这个寄存器、觉得它可能会影响我看到的内容、但我在确认测试中寄存器设置为0后、并没有费心去阅读该注释。  您是否在任何地方记录过该方程式?  数据表、TRM、勘误表、C200WareTM

    出现此问题的原因是我们已经编写了有关代码的要求、并且一个独立的软件测试团队正在验证代码的行为。  我们能够使用数据表来限制一些测试点(即 SYSCLK 必须介于2和200MHz 之间)、但我们无法用可用的文档来解释这个问题。

    谢谢、

    -约旦

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

    约旦、您好!

    我们目前没有此备注、但我们将在下一个版本中添加此备注。 从系统方面来说、它们对运行低至2MHz 的 SYSCLK 没有限制、但为了验证 PLL 频率、我们必须使用 Timer2、因此可以了解这个限制。 通常、PLL 被使能以较高的频率运行 SYSCLK、这通常大于 OSCCLK 的2倍。

    此致、

    Nirav