LPC1224 Power Consumption in Deep Sleep

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LPC1224 Power Consumption in Deep Sleep

849 Views
lpcware
NXP Employee
NXP Employee
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 ;
}

Labels (1)
0 Kudos
3 Replies

692 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by MarcVonWindscooting on Fri Oct 18 11:38:43 MST 2013
Hi Ian,

thanks for your reports. I'm planning on developing an ultra-low power PCB and your findings will help me,although I'll choose the LPC800 family.
I already built a Geiger counter (without uC) running at <200uA@5V and from that project I know that such low power consumption requires
completely new approaches and awareness of problems.

I built an (Linux) ISP programmer for the LPC's and there I have to struggle with scarce documentation or even false documentation and I get angry at some times. But hey, the people at NXP are humans, too. If your application is off the mainstream, you don't get the attention you'd wish to get. But that's what forums like this are all about - one user sharing experience with the other. To step in, when NXP has not the resources to care about your problem too much at the moment.
Of course, from your point of view it's unsatisfactory to get no replies at all. But I'm sure your input will even improve documentation of the microcontrollers even if no one replied explicitely.
We rarely report, how easy it was to create a successful circuit. We complain in this forum most of the time.
0 Kudos

692 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by IanJames on Fri Oct 18 06:28:22 MST 2013
It would appear that  GPIO19..24 consume current when asleep  - if internal or external pullups are used. It is irrelevant howe they are configured [Input with pull ups or tristate, Output High or Low)

Further more GPIO0_25..26 consume current, when asleep, if they have internal or external  pull up resistors attached.

This is making our battery project pretty much unusable in its current state - no pun intended.

The board is will need to be redesigned so that GPIO19..24 are not used - we can remove the resistors on GPIO25..26 as they are not important.

Time and development costs have been considerable and certainly make us think twice about using these processors in the future.

It would be nice if someone at NXP could investigate this and let us know if there are any known issues with this series of processors, searching round on forums it would appear we are not the first to notice these problems.

0 Kudos

692 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by IanJames on Tue Oct 15 08:57:42 MST 2013
Well it seems I have found the answer  :) 

The LPC1224/121 does not have a GPIO2 or does it?

It looks like GPIO2 needs to be configured  - even though it is not brought out to physical pins. The documentation indicates that GPIO2_0..15 default to Inputs with Pullups enabled - each adding about 52uA so that explains ~832uA.

Another 104uA is consumed by LPC_IOCON->SWDIO_PIO0_25 and  LPC_IOCON->SWCLK_PIO0_26 if they are not configured as GPIO without pullups

I am still investigating the other 900uA that I have managed to 'lose' - I will post my findings later.

0 Kudos