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.

[参考译文] TMS320F280039-Q1:为什么在断电和上电后系统时钟

Guru**** 2393725 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1520035/tms320f280039-q1-why-the-system-clock-after-the-power-off-and-power-on

器件型号:TMS320F280039-Q1

工具/软件:

尊敬的专家:

我向我的客户询问这个问题。 它们使用 LaunchPad 和演示版 SysCtl_ex2_XCLKOUT_CONFIG、并将输出时钟更改为 GPIO16中的 SysCtl_CLOCKOUT_SYSCLK。

他们删除 Device_init ();加载程序并运行代码,因为他们删除了  Device_init (),所以系统时钟默认为10MHz。

但是大家好、这次发现输出时钟为15MHz (这意味着系统时钟为120MHz、因为它们在代码中设置了 SYSCTL_XFB_DIV_8;然后它们会保持功率、但点击 CCS 中的 CPU 复位、然后 EMU 引导进入闪存并运行、输出时钟仍然是15MHz。

然后关闭电源、接通电源、并连接 CPU 而不重新加载程序、然后重新启动、他们会发现 输出时钟为1.25MHz (这意味着系统时钟为10MHz);

他们混淆了他们不重新加载程序、但是为什么下电上电后系统时钟从15MHz 更改为1.25MHz?

BRS

Shuqing

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

    您好:

    当器件上电时、它从默认时钟配置(在本例中为10MHz)启动。 该 Device_init() 函数负责配置器件时钟、包括系统时钟。

    当客户删除 Device_init() 呼叫并运行代码时、系统时钟将保持其默认值10MHz。 但是、当他们 SYSCTL_XCLKOUT_DIV_8  SYSCTL_CLOCKOUT_SYSCLK 在 GPIO16中配置并将输出时钟设置为时、他们实际上会对系统时钟进行8分频以生成输出时钟。 由于系统时钟仍处于10MHz、因此输出时钟将为1.25MHz (10MHz / 8)。

    但是、当它们点击 CCS 中的 CPU 复位且 EMU 启动至闪存并运行 SysCtl_setXCLKOUT 时、将重新执行代码、并再次调用该函数、从而将输出时钟配置到15MHz (120MHz / 8)。 这就是 CPU 复位后输出时钟保持在15MHz 的原因。

    现在,这里有一个有趣的部分:当您的客户关闭并打开设备电源而不重新加载程序时,设备的时钟配置将丢失,它将恢复到默认状态。 这意味着系统时钟返回到10MHz、输出时钟(仍配置为 SYSCTL_CLOCKOUT_SYSCLK)再次变为1.25MHz (10MHz / 8)。

    出现这种行为的原因是 TMS320F28x 器件使用硬件和软件的组合来配置其时钟。 时钟配置存储在器件的寄存器中、这些寄存器是易失的、在器件断电时会丢失其值。 当器件再次上电时、寄存器将复位为其默认值、并且时钟配置丢失。