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.

MSP430FR2433: Is SMCLK available after LPM3?

Part Number: MSP430FR2433

I use I2C using eUSCI_B using SMCLK.  But if I enter LPM3 (to blink an LED) which uses the RTC using VLO to wake up.  Afterwards I2C seems to stop working.  And CS_getSMCLK() returns 0, which seems to say that the SMCLK is no longer available.  I know that SMCLK is stopped in LPM3, but do I have to do something to restart it afterwards?

I configure the eUSCI_B to use SMCLK on every I2C transaction.  Using DriverLib, which in most examples and in my code calls CS_getSMCLK() to set the bit rate.  If CS_getSMCLK() returns 0, it is not configuring eUSCI correctly.  I wonder whether SMCLK would be started when the eUSCI requested it, and it is just the call to CS_getSMCLK()   (which occurs before SMCLK is active) that is flawed?

I don't configure the clocks after POR, just use the default configuration after reset clock.  I don't think it is pertinent, but I am also using LPM4.5, and the I2C is to an external RTC chip to wake the processor from LPM4.5

  • Hi Lloyd,

    When do you send data using I2C - in other words do you send data only when you blink the LED? or at different times?

  • Nevermind, my error. Before entering LPM3 I called

    CS_initClockSignal(
    CS_FLLREF,
    CS_VLOCLK_SELECT ,
    CS_CLOCK_DIVIDER_1);

    But if I omit that call, things work.  I don't know why I thought it necessary, I now think the VLO takes care of itself and doesn't need initialization, at least for the MSP430FR2433.
    But these actual parameters make no sense, the hardware does not allow the VLO oscillator as a source to the FLL/DCO.
    I think these parameters end up writing a reserved value to the SELREF field.
    I don't understand why this seems to stop the SMCLK.

    It would be nice if CS_initClockSignal() checked the validity of its parameters and asserted or returned an error.

    To answer your question, I was using I2C after exiting LPM3 (including the errant call above.)

**Attention** This is a public forum