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.

[参考译文] MSP-EXP430G2:为什么 MSP430G2552在没有外部振荡器的情况下工作、甚至针对外部32.678KHz 晶体振荡器进行了配置/编程?

Guru**** 2524460 points
Other Parts Discussed in Thread: MSP430G2452

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/717907/msp-exp430g2-why-msp430g2552-works-without-external-oscillator-even-configured-programmed-for-external-32-678khz-crystal-oscillator

器件型号:MSP-EXP430G2
主题中讨论的其他器件:MSP430G2452

我已经将 MSP430G2552 (以及 MSP430G2452)编程为在一个外部振荡器上运行、如下所示:

void main (void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭 WDT

BCSCTL3 |= XCAP_3; // xtal 具有12.5pF 电容
TACCR0 = 16383; // f_xtal / 2 - 1给出2Hz
TACTL = tassel_1 + MC_1 + TACLR;// ACLK +向上计数模式+清除计时器
//我的代码在此处
} 

我正在使用 MSP-EXP430G2 Launchpad 板。 我希望 MCU 将从板上可用的晶体振荡器运行。 但是、当我使用独立的 MCU (在 Launchpad 之外)时、它仍在运行。 因此、我得出结论、它可能仍在使用内部时钟(DCO)。  

我还通过以下代码进行编程、但结果是相同的、即 MCU 使用内部时钟而不是外部时钟。

void main (void)
{
WDTCTL = WDTPW + WDTHOLD; //停止 WDT

BCSCTL1 |= DIV_3; // ACLK/8
BCSCTL3 |= XCAP_3; //12.5pF 电容- 32768Hz 晶振的设置

CCR0 = 511; // 512 -> 1秒,30720 -> 1分钟
TACTL = tassel_1 + ID_3 + MC_1; // ACLK、/8、upmode
//我的代码在此处
}

请注意、这两个代码片段都来自一些博客等

现在、我的问题是、如果这些代码段确实在外部时钟上配置 MCU、为什么 MCU 在没有晶体振荡器的 情况下运行(当我在没有振荡器的电路中使用它们时)?

如何配置/编程 MCU 以便仅使用外部振荡器而不是 DCO 等运行?

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

    根据用户指南中的第5.2.7节"基本时钟模块+失效防护操作"、"如果检测到 MCLK 时钟源的晶体振荡器发生故障、MCLK 将自动切换到 DCO 作为其时钟源"。 如果您的代码被配置为使用外部晶振、但没有、则将会设置一个故障、从而自动切换。

    此致、

    James

    MSP 客户应用