lpcware

LPC1224 Power Consumption in Deep Sleep

Discussion created by lpcware Employee on Jun 15, 2016
Latest reply on Jun 15, 2016 by lpcware
Content originally posted in LPCWare by IanJames on Tue Oct 15 04:53:44 MST 2013
Hi,

I am trying to reduce the power consumption of an LPC1224F/121 processor when in Deep Sleep Mode.

In order to simplify matters I my board is populated with only the microprocessor and it is supplied with a 3V battery.

If I put the processor appears to consume about 5mA when awake but in sleep this goes down to 1.87mA - this is way above the value shown in  http://www.nxp.com/documents/data_sheet/LPC122X.pdf    - Figure 11 page 37

I have been attempting to get the current down on this board for several weeks now, the processor was chosen specifically for the ability to run in sleep mode at less than 100uA.

Is this a processor fault?, we have several customers awaiting product and  need to know if the processor is capable of the stated low consumption.

My code follows and I have attached the schematic as well.

Please bear in mind that the board is only populated with the Processor, R18, C3,C4 and C5 - NOTHING ELSE!!

If anyone could shed some light on thsi problem I will be extremely grateful

Many  thanks,

Ian James


/*
* Aim: to put the processor into Deep Sleep Mode resulting in as little current as possible
*
* The board is populated with an LPC1224F/301 and NOTHING ELSE!!
*
*/
int main(void)
{
/* Turn on some clocks to start with GPIO0,GPIO1 and  SYS */
LPC_SYSCON->SYSAHBCLKCTRL = 0xC000001; // 1100 0000 0000 0000 0000 0000 0001

/* Set ALL Port pins to Output Low */
LPC_GPIO0->OUT = 0x00000000;
LPC_GPIO0->DIR = 0xFFFFCFFF;

LPC_GPIO1->OUT = 0x00000000;
LPC_GPIO1->DIR = 0x0000007F;

/* not strictly needed as we are not going to wakeup at the moment */
LPC_SYSCON->PDAWAKECFG = LPC_SYSCON->PDRUNCFG;

/* Power Down BOD and WDTOSC */
LPC_SYSCON->PDSLEEPCFG = 0xFFFF;

/* Deep Sleep */
SCB->SCR &= ~(1<<1); // Sleep/ Deep sleep

/* Alternative: SCB->SCR |= (1<<1);  // Deep Power Down */

/* Power Down : FLASH,BOD,ADC,SYSOSC,WDTOSC,SYSPLL,COMP */
LPC_SYSCON->PDRUNCFG |= 0x000080FC; // 1000 0000 111 1100

/* Clear any flags that may be set */
LPC_PMU->PCON |= (1 << 11); //PMU_PCON_DPDFLAG;
LPC_PMU->PCON |= (1 <<  8); //PMU_PCON_SLEEPFLAG;

/* Select the IRC */
LPC_SYSCON->MAINCLKSEL = 0x00;
LPC_SYSCON->MAINCLKUEN = 0x00;
LPC_SYSCON->MAINCLKUEN = 0x01;

/* turn off ALL clocks - shouldn't need to do this */
LPC_SYSCON->SYSAHBCLKCTRL = 0x0000000;
__WFI();

while(1)
{
}
return 0 ;
}

Outcomes