Other Parts Discussed in Thread: LP-MSPM0G3507
部件号: MSPM0G1507
Thread 中讨论的其他器件: LP-MSPM0G3507
客户正在尝试使用以下配置设置器件:
- 在 32MHz 模式下以 MCLK=SYSOSC 开始。
- 将 MCLK 转换为 LFCLK(LFXT 已在~30 秒之前启动)。
- 将 SYSOSC 设置为 4MHz。
- 转到睡眠 1(SYSOSC 在 4MHz 下运行)。
客户和我都使用类似的测序对推进进行了原型设计、但无法获得所需的结果。
DL_SYSCTL_switchMCLKfromSYSOSCtoLFCLK(false);
DL_SYSCTL_setSYSOSCFreq(DL_SYSCTL_SYSOSC_FREQ_4M);
__WFI();
当我运行上述顺序时、结果是以下问题:
- 从 SYSOSC 切换到 LFCLK 需要~700+微秒时间。 这对客户应用来说太长了、我不明白为什么需要这么多时间。 这通过 GPIO 切换仪表进行验证。
- SYSOSC 频率仍为 32MHz(通过将其路由至 CLKOUT 引脚进行验证)。
我已经尝试了各种替代方法、例如在 MCLK 切换之前将 SYSOSC 切换到 4MHz、然后将 DL_SYSCTL_switchMLKfromSYSOSCtoLFCKL () API 替换为 DL_SYSCTL_setPowerPolicyRUN1SLEEP1 ()。 结果始终相同。 如果我们看看~700 微秒的大部分时间用在的位置、看起来它花在了以下循环中:
while ((DL_SYSCTL_getClockStatus() & SYSCTL_CLKSTATUS_CURMCLKSEL_MASK) !=
DL_SYSCTL_CLK_STATUS_MCLK_SOURCE_LFCLK) {
;
}
为什么 32kHz 晶体已经在运行(前 30 秒)需要很长时间? 在这个循环中我们需要等待吗? 如果我们不在循环中等待、会产生什么后果?
此外、如何在将 MCLK 切换到远离它的位置后使 SYSOSC 为 4MHz?
谢谢、
Stuart





