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.

[参考译文] TM4C129XNCZAD:SysCtlClockFreqSet 始终切换到 SYSCTL_OSC_INT (PIOSC)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/584102/tm4c129xnczad-sysctlclockfreqset-always-switches-to-sysctl_osc_int-piosc

器件型号:TM4C129XNCZAD

我尝试使用外部25MHz 晶体将系统时钟设置为大约8MHz (结果应为8.33MHz)。 我使用的 TivaWare 2.1.4.178具有以下代码:

G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_OSC_main | SYSCTL_USE_OSC | SYSCTL_XTAL_25MHz)、SYSFREQ_STANDBY);

但是、结果为5、365MHz、这是 PIOSC/3 (16MHz/3)的结果、但函数返回8.33MHz。

我看到、检查库的代码、所有内容都已正确设置、但在函数的最后一行中有:

   //
   //最后将 OSCSRC 改回 PIOSC
   //
   HWREG (SYSCTL_RSCLKCFG)&=~(SYSCTL_RSCLKCFG_OSCSRC_M);

如果我查看旧版本的 driverlib (2.1.2.111)、此代码将丢失、函数工作正常。 是否引入了错误、或者最后一行后面是否有一些奇怪的意图?

此致

Klaus

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Klaus、您好!
    感谢您指出这一点。 这对我来说也是不对的。 我正在对此进行研究。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Klaus、您好!

    在 TivaWare 2.1.3.156之后的 SYSCTL#22和 SYSCTL#23勘误表中进行了更改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amit、您好!

    我知道这是为修复 SYSCTL_22和23而完成的。 不过、我认为某些情况下的修复是错误的:无论何时您想要使用主振荡器、此语句都会导致切换回 PIOSC。 如果没有 PLL、就不可能使用主振荡器。 更糟糕的是:返回值是错误的频率。

    顺便说一下、在我看来、同一函数中还有另一个错误(对我来说不重要、因为我使用的是25MHz 振荡器):

    //
    //增加10MHz 及以上 MOSC 的驱动强度。
    //
    if (i32XtalIdx >=(SysCtlXtalCfgToIndex (SYSCTL_XTAL_10MHz)-
            (SysCtlXtalCfgToIndex (SYSCTL_XTAL_5MHZ)))

    我认为5MHz 索引的减法是错误的。 减法导致值为7、这意味着驱动强度在频率>= 4.9152MHz 而非10MHz 时切换。

    此致

    Klaus

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

    SYSCTL_23明确指出、将 MOSC 用于振荡器源不是有效的组合(请参阅变通办法中的第一行)。

    至于代码段、我同意这是不正确的。 它应该是一个简单的比较。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、谢谢。 我刚才看到了 SYSCTL_23的内容、因为有了新的文档。 我的旧版以 SYSCTL_21结尾。 我必须 检查 PLL 的功率耗散、因为我希望在待机模式下使用 MOSC 降低频率。 但其他振荡器的精度不够好。

    谢谢、致以诚挚的问候

    Klaus