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.

MSP430FR5962: Unexpectedly High Idle Current

Part Number: MSP430FR5962

I'm currently working with MSP430FR5962 and having trouble getting current draw below 29µA at idle.

I idle in LPM3, with only the watchdog active.

I'm expecting it to draw in the single µA’s in that mode, but something’s preventing it.

 

Is there any advice available about how to wring out the extra current?

White papers, maybe errata about unexpected current draw?

Thanks!

Brian Angiel

  • Hello Brian,
    the reasons for a too high current can be of course related to different things, SW and/or HW.
    What kind of HW are you using?

    In terms of the SW it is easier. If you use one of our tested code examples, you can be sure at least on that side. This would be e.g. one LPM3 code example on register level form our CCS Resource Explorer

    "msp430fr599x_lpm3_02.c"

    #include <msp430.h>

    int main(void)
    {
    // VLOCLK, ~1s interrupts
    WDTCTL = WDTPW | WDTTMSEL | WDTSSEL_2 | WDTIS_5;
    SFRIE1 |= WDTIE; // Enable WDT interrupt

    // Configure GPIO
    P1OUT = 0;
    P1DIR = 0xFF;

    P2OUT = 0;
    P2DIR = 0xFF;

    P3OUT = 0;
    P3DIR = 0xFF;

    P4OUT = 0;
    P4DIR = 0xFF;

    P5OUT = 0;
    P5DIR = 0xFF;

    P6OUT = 0;
    P6DIR = 0xFF;

    P7OUT = 0;
    P7DIR = 0xFF;

    P8DIR = 0xFF;
    P8OUT = 0;

    PJOUT = 0;
    PJDIR = 0xFFFF;

    // Disable the GPIO power-on default high-impedance mode to activate
    // previously configured port settings
    PM5CTL0 &= ~LOCKLPM5;

    // Clock System Setup
    CSCTL0_H = CSKEY_H; // Unlock CS registers
    CSCTL1 = DCOFSEL_0; // Set DCO to 1 MHz
    CSCTL2 = SELM__DCOCLK | SELS__DCOCLK | SELA__VLOCLK;
    CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; // Set all dividers to 1
    CSCTL4 = LFXTOFF | HFXTOFF;
    CSCTL0_H = 0; // Lock CS registers

    P1DIR |= BIT0; // Turn on LED

    __bis_SR_register(LPM3_bits | GIE);
    __no_operation(); // For debugger
    }

    // Watchdog Timer interrupt service routine
    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector=WDT_VECTOR
    __interrupt void WDT_ISR(void)
    #elif defined(__GNUC__)
    void __attribute__ ((interrupt(WDT_VECTOR))) WDT_ISR (void)
    #else
    #error Compiler not supported!
    #endif
    {
    P1OUT ^= BIT0; // Toggle P1.0 (LED)
    }

    The toggle LED should be removed for current measurements.

    Best regards
    Peter
  • Hello Brian,
    could you please let us know about the status of your problem? Were you able to solve it? If you need further support on this please let us know. In case not, please close the thread. Many thanks in advance.

    Best regards
    Peter
  • Hi Peter,

    Apologies for the delay/lack of response. Turns out the HF crystal pins had been left floating.

    With those defined as outputs and set low, we’re around 900nA when sleeping.

    Thanks,

    Brian Angiel

  • Hello Brian,
    no problem. Many thanks for the update. Could you please click on "resolve" to close this thread? Please do this also in future, once your problem has been solved. Many thanks in advance.

    Best regards
    Peter

**Attention** This is a public forum