Hey guys,
I have been struggling the last couple of days trying to evaluate the new msp432 and if it will meet our power requirements for our application.
Basically, I am trying to simply monitor the LPM3 current on the MSP-EXP432P401R launchpad and match it to the msp432's data sheet at expected current consumption in LPM3.
My measurement setup involves programming the board, disconnecting the USB cable, removing all jumpers between the mcu and the on-board emulator, switching the JTAG switch to external debug, and then connecting the positive terminal of a 3.3V battery to the 3V3 pin on J6, while connecting the GND pin on the J6 connector to a 100 ohm resister which in turn is connected to the negative terminal of the battery. I then use an oscilloscope probe across the resistor to measure the current.
In doing this, I find that once the system enters LPM3, I am measuring roughly 11uA of current, while the msp432 data sheet indicates that we should be around 850 nA (give or take).
Summary of the code is to disable the watchdog, setup the gpio, enable the external 32khz crystal and use it to source BCLK and ACLK. Then enter LPM3 (so neither RTC nor WTD is enabled). Possibly I am configuring something wrong?
int main(void)
{
/* Stop Watchdog */
MAP_WDT_A_holdTimer();
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P2, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P3, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P4, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P5, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P6, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P7, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P8, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P9, PIN_ALL8);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P10, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0 | GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P3, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P4, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P5, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P6, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P7, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P8, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P9, PIN_ALL8);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P10, PIN_ALL8);
MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1 | GPIO_PIN4);
PJSEL0 = BIT0 | BIT1 | BIT2 | BIT3;
PJDIR = BIT4 | BIT5;
CSKEY = 0x695A; // Unlock CS module for register access
CSCTL2 = LFXT_EN; // LFXT on
// Loop until XT1, XT2 & DCO fault flag is cleared
do
{
// Clear XT2,XT1,DCO fault flags
CSCLRIFG |= CLR_DCORIFG | CLR_HFXTIFG | CLR_LFXTIFG;
SYSCTL_NMI_CTLSTAT &= ~ SYSCTL_NMI_CTLSTAT_CS_SRC;
} while (SYSCTL_NMI_CTLSTAT & SYSCTL_NMI_CTLSTAT_CS_FLG);// Test oscillator fault flag
CSCTL1 = SELS_3 | SELM_3;// Select ACLK as LFXTCLK
CSKEY = 0;
while(1)
{
MAP_PCM_gotoLPM3();
}
}
I appreciate any help anybody can offer!
Thanks,
-Chris