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.

[参考译文] MSP430FR5964:如何启用 XT1振荡器故障检测和激活 LFMODOSC

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1071868/msp430fr5964-how-to-enable-xt1-oscillator-fault-detection-and-activation-of-lfmodosc

部件号:MSP430FR5964

在阅读了《MSP430FR59xx 系列用户指南》中的几次主题之后,我仍然不明白为什么需要让 LFMODOSC 站在 LFXT 振荡器发生故障的位置。 我正面临这种情况(LFXT 故障),在 这种情况下,当我收到看门狗重置时,显然什么也不会发生(而 LFXT 每秒唤醒我的系统以确认看门狗)。

文件非常不清楚,提到:

当启用故障检测逻辑(ENLFXTD =1)时,此信号在 LFXT 振荡器停止运行后设置,并在操作恢复后清除。

(笑声)

文件中没有提到 ENLFTD,这一点在几年前在这个论坛上已经提出过,显然不值得回答。

我是否应该启用 LFXT 振荡器故障中断并显式激活 LFMODCLK 作为 ACLK 源?

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

    Retokid 您好,

    很抱歉这里的混淆。无法禁用振荡器故障检测电路。 我不知道为什么提到 ENLFXTD 参数,因为它不是寄存器可以配置的参数,而是内部信号。 其目的是按照第3.2.8节中的注释设置适当的振荡器故障标志。

    如果您遇到故障,振荡器将自动切换到 LFMODCLK。 使用 LFMODCLK,您的运行速度可能比标准32kHz 晶体快或慢一些,因此您的定时可能会关闭。 我建议缩短您的唤醒时间间隔和/或延长 WDT 以进行补偿,具体取决于 您的应用允许。  

    当然,您可以启用振荡器故障中断,以便您可以按自己需要的方式处理系统。 可能,您可以在这里延长计时时间,或向您的主机发送帮助/困难信号(如果适用),同时注意到您的晶体已发生故障。  

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

    你好,贾斯,谢谢你的回答,这当然是我所怀疑的。 但是,LFMODCLK 似乎只能用于看门狗(这也是看门狗导致重置的原因)和 RTC。 如果我需要从 LFMODCLK 获取 ACLK,但发生故障时,我需要处理振荡器故障 ISR 中的故障,我是否正确?

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

    Retokid,

    这取决于您的整个时钟结构。 如果 ACLK 是通过 LTFAL 获得的,则如果发生 LTFAL 故障,它将自动获得至 LFMODCLK。  

    现在的问题是,对于这个 MSP430系列,RTC 模块只能由 LTX(不连接到系统时钟)驱动,因此 RTC 的故障安全时钟不会处于活动状态。 这与 RTC 模块连接到 ACLK 的其他系列不同,否则我会在前面注意到这一点。  

    因此,您的系统中最可能发生的事情是您遇到了故障,然后您的 RTC 不再计数,您通过 WDT 超时,因为它会自动切换到 LFMODCLK。 因此,我肯定会利用 OSC Fault ISR 来调整您的系统唤醒或处理方式,因为您的 RTC 在这种情况下不再工作。  

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

    你好,贾斯,非常感谢你的解释,这确实很详细地描述了发生的事情。