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.

[参考译文] MSP430FR5972:清除OFIFG标志后设备重置。

Guru**** 2534260 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/580087/msp430fr5972-device-resets-after-clearing-ofifg-flag

部件号:MSP430FR5972

大家好

我有一个定制设计的主板,没有LF晶体和16MHz HF晶体。 按照示例配置HF晶体时,MCU将重置。 当我在1MHz或8MHz使用DCO时,它可以正常工作,没有任何重置,但是OFIFG和LFXTOFFG标志已设置。 初始化时钟的代码如下:

void gLCO_ClocksInit()
{
/*禁用GPIO开机默认高阻抗模式以激活
*以前配置的端口设置。 */
PM5CTL0 &=~LOCKLPM2;

/*选择HFX功能。 */
PJSEL0 ||(BIT6 | BIT7);

/*解锁CS寄存器。 */
CSCTL0_H = CSOKEY >> 8;

/*将DCO设置为1MHz,因此使用时很明显。 */
CSCTL1 = DCOFSEL_0;

/*将ACLK设置为内部低频率生成器以及MCLK和SMCLK
*到晶体。 */
CSCTL2 =拉美经济体系_ LFMODCLK | STELS_ HFXTCLK | SELM_ HFXTCLK;

/* LFx旋转。 */
CSCTL4 |= LFXTOFF;

/*将晶体和频率的最大驱动器功率设置为8-16MHz。 */
CSCTL4 ||(HFXTDRIVE_3| HFFREQ_2);

/*清除LFx故障标志,因为它将在切换到之前设置
* LFMODCLK*/
CSCTL5 &=~LFxTOFFG;

/*将所有分禾器设置为1。 */
CSCTL3 = DIVA__1 | DIVs__1 | DIVM__1;

/*启用HFX晶体。 */
CSCTL4 &=~HFXTOFF;

/*等待晶体稳定下来。 */
做
{
/*清除故障标志。 */
CSCTL5 &=~HFXTOFFG;
SFRIFG1 &=~OFIFG;
}
同时(SFRIFG1和OFIFG);

CSCTL0_H = 0;
} 

从实验中看,在调用“SFRIFG1 & OFIFG”后,它似乎重置。 例如,如果我将while循环代码更改为:

/*等待晶体稳定下来。 */
做
{
/*清除故障标志。 */
CSCTL5 &=~HFXTOFFG;
}
同时(CSCTL5和HFXTOFFG); 

如果以后使用调试器检查寄存器,则HFXTOFFG 和LFxTOFFG标志都将保持清除状态。 问题在于OFIFG错误标志仍然保持设置。 我猜这个问题与SLAU367M (此MSP用户指南)第92页上的说明有关:

故障逻辑
只要故障状况仍然存在,OFIFG将保持设置。 应用程序必须执行
清除OFIFG信号时要特别小心。 如果OFIFG时没有故障状态
信号被清除,时钟逻辑将切换回故障前的原始用户设置
条件。

但是我不明白你应该如何在不造成竞争状况的情况下清除故障和OFIFG。 即OFIFG的状态取决于HFXTOFFG和LFXTOFFG,因此您需要先清除它们,然后再清除OFIFG。 但是,如果 您清除HFXTOFFG和LFxTOFFG后不再出现故障,则时钟逻辑是否会切换回? 那么,如何正确清除所有错误标志?

(附注  切换LED时,__delay_cycles (800万)似乎也会产生大约2秒的延迟。 我希望每运行16MHz的0.5 秒都会切换此设置,所以我猜还有其他配置可能会丢失?)

如有任何帮助,我们将不胜感激。

谢谢

-Wynand

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

    时钟系统好像不能正常工作。 可能存在一些故障。

    能否将MCLK和SMCLK输出到GPIO并确定频率范围?


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

    您好,Wei

    感谢您的回复。 我按照yuou的建议测量输出频率为4.8716MHz。

    经过一些进一步的调查和阅读后,我注意到FRAM设备在运行频率超过8MHz时需要配置显式等待状态。 我在初始化时钟之前添加了以下行:

    FRCTL0 = FRCTLPW | NWITS_1; 

    它现在似乎工作正常,所有时钟都已正确初始化。 当前输出频率为15.8818MHz - 16.103MHz (取决于范围设置,因此此时是测量问题,而不是MSP配置问题)。

    谢谢

    -Wynand