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.

MSP430FR5994: LPM3 drawing more than calculated current.

Part Number: MSP430FR5994

I did a comparison between our board and the demo board with different pin configurations. Current measurements are with a martel3001

I loaded the my board's fw on the TI demo board, as a sanity check, and it draws .0240ma -vs- .4009ma on the real card for the same software, full initialization of pins / modules for our custom board done.

FW for Custom pin initialization only, the demo board draws 0.0021ma –vs—0x2715ma on the real card. ().

 TI’s reference for the spec (with the custom sleep function to enable voltage shutdowns). the demo board draws 0.0010 –vs  4.237ma on the real card (not valid as all the  pins are set to logic 0 output and it seems that our card is not happy).

I’ve tried to reconfigure the SPI/UART/i2c pins to “park” them but have not seen any measurable difference, disabled modules/clocks/analog etc .. without a reduction.

Is there any advice for further current reduction? Where is the difference coming from?

*none of the pins are connected to anything on the TI Demo board .

I've attached the modified test code.

testmain.c
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//***************************************************************************************
// MSP430 Blink the LED Demo - Software Toggle P1.0
//
// Description; Toggle P1.0 by xor'ing P1.0 inside of a software loop.
// ACLK = n/a, MCLK = SMCLK = default DCO
//
// MSP430x5xx
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.0|-->LED
//
// Texas Instruments, Inc
// July 2013
//***************************************************************************************
// forward declaration
/*Only use this for the BSL proper*/
static void config_port_pins(void);
void msp430_init(int isbsl);
void inittimer(void);
void delayus(unsigned int delayamt);
void delayms(unsigned int delayamt);
#define TEST_LPM_MODE LPM3_bits
#define DO_WAKE 0
#include <msp430.h>
#include <stdint.h>
#include <cs.h>
#if 0
#define TEST_LPM_MODE LPM3_bits
void main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
//PM5CTL0 &= ~LOCKLPM5;
msp430_init(0);
inittimer();
do{
#if DO_WAKE
delayus(100000); /* Sleep! */
#else
__bis_SR_register(TEST_LPM_MODE | GIE); // Go to sleep -- should be here forever
#endif
}while(1);
}
#else
void sleep_handler(void);
/**
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
// enable interface level shifters, "zero bits" 3.4 to enable VCC3V_BAT & 3.7 to release ZYNC reset
//P3OUT |= (PS_MON_SHDN | ZTEMP_SHDN );
// Set HIGH
msp430_init(0); // 1 is test example config -- .0574mA under debug -- ??? without debugger attached
//msp430_init(1); // Cogs runtime -- .1391mA under debug .2780 without debug
//LPM3; /* Sleep! */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • The Launchpads don't provide anything "special" to lower power. I routinely get the same results with a breakout board with nothing but the MCU (and a few passives) on it.

    Is it possible your pin configuration is setting up a bus conflict on your board? If you can show us a schematic, maybe someone will see something.

  • I'm using the launchpad as a reference, figuring with our pinout running on the msp430 that's the "worst" case for the controller only. I'll see what I can do for the schematic, this is a subsystem on the board.

    I was wondering about the i2c and spi lines sinking current from the pullups.

    There's no "bus conflict", just the LPM3 state of the io pins for spi/uart/i2c. I'm assuming that entering LPM3 will idle the modules to the lowest power state with the usage in mind.  

  • The comments say, e.g., that P5.0/1 are connected to an I2C bus. It looks as though one of the first things this program does is:

    >P5OUT = 0;
    >P5DIR = 0xFF;

    which would drive low against the bus pullups, which I would call a bus conflict. (It probably isn't making your slave(s) very happy either.) Setting P5SEL (to give the pins to the I2C) would counteract this, but I don't see this program doing that (the "msp430_init(1)" is commented out).

    More generally: LPM3 has no direct effect on peripherals. It does turn off SMCLK, which may have some small secondary effect, but mostly the peripherals don't know that this has happened.  

  • Hi dtyree,

    Were you able to get the low currents?

  • Yeah, A little whack-a-mole, but got it down close enough to the "theoretical calculated" consumption rate. 

**Attention** This is a public forum