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.

[参考译文] MSP430FR5969:配置外部16MHz 时钟- OFIFG 位不会变为低电平

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1440134/msp430fr5969-configuring-external-16mhz-clock---ofifg-bit-does-not-go-low

器件型号:MSP430FR5969

工具与软件:

大家好!

我们正在尝试在使用16MHz 陶瓷振荡器(ABM8AAIG-16.00MHZ-V2R-T3)的定制电路板中使用 MSP430FR5969。 我们正在尝试将 HFXT 振荡器配置为时钟源、

我们已经参考了提供的示例代码并遵循了相同的代码、但代码最后停留在循环中

问题: OFIFG 位从未复位。 该位是一个振荡器故障标志、必须先清除该标志、然后再次进行检查、但在每次清除后会设置该标志。

测试:  我们在完成时钟切换后检查 SMCLK 时钟、以验证是否发生了切换。 因此、我们已将引脚 P3.4设置为 SMCLK。

如果删除 loop condition and test、程序将运行。 为了进行检查、我们实施了 PWM 并将其运行了8000个计数的50%占空比。 如果我们计算一个 CRO 上可用的实际频率、我们得到大约5MHz。

我们正在执行的代码/配置:

void main()

   WDTCTL = WDTPW | WDTHOLD;  //停止看门狗计时器
   PM5CTL0 &=~μ H LOCKLPM5;//禁用高阻抗

   P3DIR |= BIT4;                       //输出 SMCLK
  P3SEL1 |= BIT4;                       //SMCLK 功能选择

    PJSEL0 |= BIT6 | BIT7;     //对于 HFXT


    FRCTL0 = FRCTLPW | NACCESS_1; //如果 clk 大于8MHz、则 FRAM 处于等待状态


    CSCTL0_H = CSKEY >> 8;                   //解锁 CS 寄存器
    CSCTL1 = DCOFSEL_6;                      //将 DCO 设置为8MHz
    CSCTL2 = SELA__LFXTCLK | SELS_HFXTCLK | SELM__HFXTCLK;
    CSCTL3 = 0;    //将所有分频器设置为1

    CSCTL4 = HFXTDRIVE_3 | HFFREQ_3; //提供最大驱动和频率范围16-24

MHz

   应执行的操作
   {
      CSCTL5 &=~(HFXTOFFG);      //清除 XT1和 XT2故障标志

      SFRIFG1 &=~OFIFG;
    —while (SFRIFG1&OFIFG);                 //测试振荡器故障标志

   CSCTL0_H = 0;                              //锁定 CS

          while (1)
          {
              ;
          }

   }

任何建议都是非常感谢的

谢谢你