• Not Answered

MSP430FR5969 LFXT disable problems

I'm trying to only run the HFXT clock, and completely disable the LFXT clock. I have a 7 MHz crystal on HFXT and nothing on LFXT. The MSP430FR5969 does not seem to support operation for a 7 MHz crystal on LFXT.

The problem is that HFXT is working fine, but the LFXT clock keeps on generating fault interrupts, even though it's supposed to be off.

--


So far I have tried this:

    // XT1, XT2 Setup
  CSCTL0_H = CSKEY >> 8;                    // Unlock CS registers
  CSCTL1 = DCOFSEL_6;                       // Set DCO to 8MHz
  CSCTL2 = SELS__HFXTCLK | SELM__DCOCLK;   // select HF clock
  CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;     // Set all dividers to 1
  CSCTL4 |= HFXTDRIVE_1 | LFXTOFF;                    // set drive strength to 01 for HF, disable LF clock
  CSCTL4 &= ~(HFXTOFF);                     // enable HF clock

do
  {
    CSCTL5 &= ~(LFXTOFFG);       // Clear LFXT fault flag
    CSCTL5 &= ~(HFXTOFFG);       // Clear HFXT fault flag
    SFRIFG1 &= ~OFIFG;           // clear oscillator fault flag
       
 // }while (CSCTL5 & HFXTOFFG);                   // Test oscillator fault flag for HF crystal only. This works

  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag using the 'official way'. This fails on LFXTOFGG

HFXT is running fine, but the using the official way makes the do while loop get stuck. I'd rather fix the official way, because LFXTOFFG affects the SFRIFG1 register.
The LFXT is not running (CSCTL4.LFXTOFF =1), yet an interrupt is generated for a failing LFXT (CSCTL5.LFXTOFFG =1).

The MSP430FR5969 users manual (slau367b.pdf) mentions: (p84):

"LFXT_OscFault: When the fault detection logic is enabled (ENLFXTD = 1), this signal is set
after the LFXT oscillator has stopped operation and is cleared after operation resumes."

However, I could find no other reference to ENLFXTD anywhere.

Does anybody have an idea how to disable the LFXT fault detection logic?

thanks, Michael

1 Reply

  • ENLFXTD apparently is an internal signal of the fault logic. It is obviously confusing to have it mentioned in this note without any other appearance in the users guide.

    You can disable LFXT1 with LFXT1OFF bit:

    "LFXTOFF 1b = LFXT is off if it is not used as a source for ACLK, MCLK, or SMCLK"

    However, the important part is "if it is not used". So in CSCTL2, you must set SELAx to something else (since the default '0' does use LFXT1).

    _____________________________________

    Time to say goodbye - I don't have the time anymore to read and answer forum posts. After falling behind by two months (900 threads), there's no point in continuing. See my bio for details.

    Before posting bug reports or ask for help, do at least quick scan over this article. It applies to any kind of problem reporting. On any forum. And/or look here.
    If you cannot discuss your problem in the public, feel free to start a private conversation: click on my name and then 'start conversation'. But please do so only if you really cannot do it in a public thread, as I usually read all threads. And I prefer to answer where others can profit from it (or contribute to it) too.