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.

LP-MSP430FR2476: Higher power consumption than that mentioned in datasheet

Part Number: LP-MSP430FR2476
Other Parts Discussed in Thread: MSP430FR2476

I have tested the launchpad with different example codes provided by TI using IAR workbench software. It is functioning well and good. but the power consumption is way higher than it is supposed to be. Here is a particular case I tested and couldn't figure out why the current drawn is so high.

According to the datasheet of the uC (MSP430FR2476) it consumes about 41nA in LPM4.5 without SVS at 25'C, 3V. So I ran the code for the same from the examples provided by TI but the current consumed is about 40uA. here are the things that can probably be ruled out as reasons.

1) I have disconnected all the on board LEDs, Temp sensor and also, half the board containing debugger, regulators etc are disconnected (by removing the jumpers provided)

2) Current is measured by the sourcemeter with sensitivity below nA.

3) Only one non zero resistor is on the board to pull up the reset/ pin ( 47 KOhms) which is connected to a manual switch.

4) It is a new board without any wear n tear.

5) When Vdd > 1.2V the current drawn is still in uA range. Below 1V it drops to nA range.

Thinking it may be an offset leakage on the board, I ran a code which was supposed to consume about 50uA  but it was about 400uA. So I took it as the uC to be the reason for the high power consumption and not any passive components or layout issues. But that doesn't make sense bcz it is about 3 orders higher than it is supposed to be in LPM4.5.

For my application, a low power uC is necessary, so I want to know how much reliable are the numbers mentioned in the datasheet and how much headroom should I expect from the launchpad (at least in terms of power consumption).

Please feel free to ask any follow up question if necessary.

Thanks a lot!

 

 

  • I've observed 2uA in LPM3 on an FR2476 Launchpad, so 40uA in LPM4.5 sounds pretty high.

    Which Example are you using?

  • Hi Mohammed,

    If you are using the TI code example there is a bug.

    For low power optimization, all unused GPIOs have to be set to output low or high. In the code example only P1 and P2 are configured. You have to add P3 P4 P5 and P6.

    Ling

  • The example code provided by TI for LPM 4.5 with SVS turned off in the uC website. 

    /* --COPYRIGHT--,BSD-3-Clause-With-EX
     * Copyright (c) 2017, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     *******************************************************************************
     * 
     *                       MSP430 CODE EXAMPLE DISCLAIMER
     *
     * MSP430 code examples are self-contained low-level programs that typically
     * demonstrate a single peripheral function or device feature in a highly
     * concise manner. For this the code may rely on the device's power-on default
     * register values and settings such as the clock configuration and care must
     * be taken when combining code from several examples to avoid potential side
     * effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
     * for an API functional library-approach to peripheral configuration.
     *
     * --/COPYRIGHT--*/
    //******************************************************************************
    //  MSP430FR267x Demo - LPM4.5, Device enters LPM4.5 waiting for a port
    //                       interrupt on P1.3 with SVS disabled
    //
    //   Description: Download and run the program. Program automatically enters
    //                LPM4.5 and measure the current. Use button SW2 (or P1.3) on the
    //                Target board to wake the device up from LPM4.5. This enables
    //                the LFXT oscillator and blink the LED (on P1.0).
    //
    //   ACLK = XT1 = 32kHz, MCLK = SMCLK = default DCODIV = ~1MHz.
    //
    //                MSP430FR2676
    //         -----------------
    //     /|\|                 |
    //      | |                 |
    //      | |        XIN(P2.1)|--
    //      --|RST              |  32768Hz
    //        |       XOUT(P2.0)|--
    //        |                 |
    //        |             P1.0|-->LED
    //        |                 |
    //        |             P1.3|<---Button
    //
    //   Longyu Fang
    //   Texas Instruments Inc.
    //   August 2018
    //   Built with IAR Embedded Workbench v7.12.1 & Code Composer Studio v8.1.0
    //******************************************************************************
    #include <msp430.h>
    
    void initGpio(void);
    
    int main(void)
    {
        WDTCTL = WDTPW | WDTHOLD;               // Stop WDT
    
        // Configure GPIO
        initGpio();
    
        // Determine whether we are coming out of an LPMx.5 or a regular RESET.
        if (SYSRSTIV == SYSRSTIV_LPM5WU)        // MSP430 just woke up from LPMx.5
        {
    
            // Initialize XT1 32kHz crystal
            P2SEL0 |= BIT0 | BIT1;                  // P2.0~P2.1: crystal pins
            do
            {
                CSCTL7 &= ~(XT1OFFG | DCOFFG);  // Clear XT1 and DCO fault flag
                SFRIFG1 &= ~OFIFG;
            } while (SFRIFG1 & OFIFG);          // Test oscillator fault flag
        }
        else
        {
            // Device powered up from a cold start.
            // It configures the device and puts the device into LPM4.5
    
            P1DIR &= ~BIT3;                     // Configure P1.3 as input direction pin
            P1OUT |= BIT3;                      // Configure P1.3 as pulled-up
            P1REN |= BIT3;                      // P1.3 pull-up register enable
            P1IES |= BIT3;                      // P1.3 Hi/Low edge
            P1IFG = 0;                          // Clear all P1 interrupt flags
            P1IE |= BIT3;                       // P1.3 interrupt enabled
    
            // Explicitly clear RTC control registers to disable it
            // just incase if the RTC was previously enabled
            RTCCTL = 0;
    
            PMMCTL0_H = PMMPW_H;                // Open PMM Registers for write
            PMMCTL0_L &= ~(SVSHE);              // Disable high-side SVS
            PMMCTL0_L |= PMMREGOFF;             // and set PMMREGOFF
            PMMCTL0_H = 0;                      // Lock PMM Registers
    
            // Enter LPM4 Note that this operation does not return. The LPM4.5
            // will exit through a RESET event, resulting in a re-start
            // of the code.
            __bis_SR_register(LPM4_bits | GIE);
        }
    
        // Now blink the LED in an endless loop.
        while (1)
        {
            P1OUT ^= BIT0;                      // P1.0 = toggle
            __delay_cycles(1000000);
        }
    }
    
    void initGpio()
    {
        P1DIR = 0xFF; P2DIR = 0xFF;
        P1REN = 0xFF; P2REN = 0xFF;
        P1OUT = 0x00; P2OUT = 0x00;
    
        // Disable the GPIO power-on default high-impedance mode
        // to activate previously configured port settings
        PM5CTL0 &= ~LOCKLPM5;
    }
    

  • Oh, I see, I shall try that out. thanks!

  • Hi Ling,

    I tried your suggestion but didn't get any difference in results (code attached). If all outputs are pulled down (with or without internal resistor) it still consumes uA of current. When pulled up, however, it is surprisingly in the order of mAs,  (all this when it should have stayed around 50  nA according to datasheet).

    Also, I checked the Vin vs Iin ( Vdd vs Io) characteristics from 0 to 4 V, and it is somewhere between quadratic and exponential but definitely not linear. The only alternative I find is to de-solder the chip from the LP and test it separately.

    Please let me know if you have any further suggestions. Thanks!

    /* --COPYRIGHT--,BSD-3-Clause-With-EX
     * Copyright (c) 2017, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     *******************************************************************************
     * 
     *                       MSP430 CODE EXAMPLE DISCLAIMER
     *
     * MSP430 code examples are self-contained low-level programs that typically
     * demonstrate a single peripheral function or device feature in a highly
     * concise manner. For this the code may rely on the device's power-on default
     * register values and settings such as the clock configuration and care must
     * be taken when combining code from several examples to avoid potential side
     * effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
     * for an API functional library-approach to peripheral configuration.
     *
     * --/COPYRIGHT--*/
    //******************************************************************************
    //  MSP430FR267x Demo - LPM4.5, Device enters LPM4.5 waiting for a port
    //                       interrupt on P1.3 with SVS disabled
    //
    //   Description: Download and run the program. Program automatically enters
    //                LPM4.5 and measure the current. Use button SW2 (or P1.3) on the
    //                Target board to wake the device up from LPM4.5. This enables
    //                the LFXT oscillator and blink the LED (on P1.0).
    //
    //   ACLK = XT1 = 32kHz, MCLK = SMCLK = default DCODIV = ~1MHz.
    //
    //                MSP430FR2676
    //         -----------------
    //     /|\|                 |
    //      | |                 |
    //      | |        XIN(P2.1)|--
    //      --|RST              |  32768Hz
    //        |       XOUT(P2.0)|--
    //        |                 |
    //        |             P1.0|-->LED
    //        |                 |
    //        |             P1.3|<---Button
    //
    //   Longyu Fang
    //   Texas Instruments Inc.
    //   August 2018
    //   Built with IAR Embedded Workbench v7.12.1 & Code Composer Studio v8.1.0
    //******************************************************************************
    #include <msp430.h>
    
    void initGpio(void);
    
    int main(void)
    {
        WDTCTL = WDTPW | WDTHOLD;               // Stop WDT
    
        // Configure GPIO
        initGpio();
    
        // Determine whether we are coming out of an LPMx.5 or a regular RESET.
        if (SYSRSTIV == SYSRSTIV_LPM5WU)        // MSP430 just woke up from LPMx.5
        {
    
            // Initialize XT1 32kHz crystal
            P2SEL0 |= BIT0 | BIT1;                  // P2.0~P2.1: crystal pins
            do
            {
                CSCTL7 &= ~(XT1OFFG | DCOFFG);  // Clear XT1 and DCO fault flag
                SFRIFG1 &= ~OFIFG;
            } while (SFRIFG1 & OFIFG);          // Test oscillator fault flag
        }
        else
        {
            // Device powered up from a cold start.
            // It configures the device and puts the device into LPM4.5
    
            P1DIR &= ~BIT3;                     // Configure P1.3 as input direction pin
            P1OUT |= BIT3;                      // Configure P1.3 as pulled-up
            P1REN |= BIT3;                      // P1.3 pull-up register enable
            P1IES |= BIT3;                      // P1.3 Hi/Low edge
            P1IFG = 0;                          // Clear all P1 interrupt flags
            P1IE |= BIT3;                       // P1.3 interrupt enabled
    
            // Explicitly clear RTC control registers to disable it
            // just incase if the RTC was previously enabled
            RTCCTL = 0;
    
            PMMCTL0_H = PMMPW_H;                // Open PMM Registers for write
            PMMCTL0_L &= ~(SVSHE);              // Disable high-side SVS
            PMMCTL0_L |= PMMREGOFF;             // and set PMMREGOFF
            PMMCTL0_H = 0;                      // Lock PMM Registers
    
            // Enter LPM4 Note that this operation does not return. The LPM4.5
            // will exit through a RESET event, resulting in a re-start
            // of the code.
            __bis_SR_register(LPM4_bits | GIE);
        }
    
        // Now blink the LED in an endless loop.
        while (1)
        {
            P1OUT ^= BIT0;                      // P1.0 = toggle
            __delay_cycles(1000000);
        }
    }
    
    void initGpio()
    {
        P1DIR = 0xFF; 
        P2DIR = 0xFF;
        P3DIR = 0xFF;
        P4DIR = 0xFF;
        P5DIR = 0xFF;
        P6DIR = 0xFF;
        
        //P1REN = 0xFF;
        //P2REN = 0xFF;
        //P3REN = 0xFF;
        //P4REN = 0xFF;
        //P5REN = 0xFF;
        //P6REN = 0xFF;
        
        P1OUT = 0x00;
        P2OUT = 0x00;
        P3OUT = 0x00;
        P4OUT = 0x00;
        P5OUT = 0x00;
        P6OUT = 0x00;
    
        // Disable the GPIO power-on default high-impedance mode
        // to activate previously configured port settings
        PM5CTL0 &= ~LOCKLPM5;
    }
    

  • I put your code on my Launchpad, and I see about 89nA (average). I haven't enabled the 32kHz crystal bridges, so I used REFOCLK (1uA active) so it would blink the LED after the wakeup. 

    This is what my LPM01A showed during sleep:

    Here's the wakeup, just to show it isn't all squiggles:

    I'm not sure what you and I are doing differently.

  • Hi Mohammed,

    Try this: remove all the jumpers on the launchpad and power the board through J6.

    Ling

  • Oh, I removed all the jumpers except the SBW and TX/RX. I though since the debgger side of the board is turned off, it won't effect that these are connected. But now i removed after your suggestion. Et Voila! Its 40nA now. I should have checked that atleast once before doing everything else and troubling you guys. 

    Thanks! 

    PS: But I am not sure why that would consume uAs of current :/ 

  • The RXD pin is driven (high) by the Backchannel UART whether you use it or not. I remove the SBW jumpers "just because".

**Attention** This is a public forum