AnsweredAssumed Answered

LPC54608 powerconsumption in deepsleep

Question asked by Carsten Groen on May 11, 2017
Latest reply on Jun 8, 2017 by Dezheng Tang

Dear NXP,

we are currently trying to verify the power consumption of the LPC54608 (QFP 208 in a prototype board) and are seeing something not quite in line with the datasheets.

 

Mounted on the board:

  • LPC54608
  • 3 pcs 10K pullup resistors on P0.4, P0.5 and P0.6 (ISP0 to ISP2)
  • 3 LED with 1 K series resistors to VCC (output kept at high level, no power consumption from LEDs)
  • 10 pcs decoupling caps (a mix of 10 nF and 100 nF)
  • VBAT is connected to VCC thru a 1 ohm resistor
  • VREFP/VDDA is connected to VCC thru a 1 ohm resistor
  • P3.15 is connected to GND

Board also has NAND Flash and SDRAM on bottom side, none of these are mounted

 

Debug connector is removed during tests, only supply (1.8V or 3.3V are connected).

The program executes a dummy loop for 1 second and then does sleep or deepsleep for 1 second. The deep powerdown just executes the powerdown and nothing more (no irq enabled etc). We use the utick for generating the 1 second ticks in sleep and deepsleep.

 

We see the following numbers:

(ROM API is version 19.01)

Running at 12 MHz FRO 

 

At 3.24V supply

  • Sleep: 3.0 mA (Datasheet: 1.7 mA typ), active 4.0 mA (Datasheet: 4.1 mA typ)
  • Deepsleep: 1.67 mA (Datasheet: 22 uA typ), active (simple loop) 12 MHz:4.1 mA (Datasheet: 4 mA typ)
  • Deep powerdown: 260 nA (Datasheet: 326 nA typ)

 

At 1.85V supply

  • Sleep: 2.0 mA (Datasheet: 1.7 mA typ@3.3V), active 3.1 mA (Datasheet: 4 mA typ@3.3V)
  • Deepsleep: 550 uA (Datasheet: 22 uA typ@3.3V), active (simple loop) 12 MHz:3.1 mA (Datasheet: 4 mA typ@3.3V)
  • Deep powerdown: 220 nA (Datasheet: 326 nA typ@3.3V)

 

The numbers for deep powerdown fits fine with the datasheet, no problem there. The sleep consumption at 1.85V is also ok according to the datasheet.

Then things go a little out of control....

At 3.2V, the sleep value is 3.0 mA and datasheet says 1.7 mA. At 1.8V it drops to 2.0 mA (closer to the 1.7 mA)

Deepsleep is more off, at 1.8V it is 1.67 mA, datasheets claims 22 uA. At 1.8V it drops to 550 uA.

 

I have verified that there is no current flowing over the 3 pullup resistors and also the series resitors for the 3 LEDs.

 

I'm not sure that any of the peripherals that might be running out from a reset can consume this much power.

Do you (NXP) have an application that demonstrates the numbers from the datasheet ? I know there are samples etc that shows some of the power modes, but they are not complete (does not handle GPIO settings etc etc). There must be a complete sample that can show the exact numbers from the datasheet ??

 

The "rom power" lib and associated header is a "mess". There is absolutely no documentation about all the different "set voltages etc". Where do we find information about all these details ???

 

We need to verify these numbers before we are able to go ahead with two new designs with (hopefully) the LPC54608 device.

 

We are using LPCOpen, the code is below:

 

    SystemCoreClockUpdate(); //Update clock

    Chip_GPIO_Init(LPC_GPIO);
      /* Enable IOCON clock */
     Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_IOCON);
   
   

    romver = Chip_POWER_GetROMVersion(); // Romver is 19.01

     /* Enable the power to the Watchdog Oscillator,
        UTick timer ticks are driven by watchdog oscillator */

     Chip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_WDT_OSC);

     /* Initialize UTICK driver */
     Chip_UTICK_Init(LPC_UTICK);

     /* Clear UTICK interrupt status */
     Chip_UTICK_ClearInterrupt(LPC_UTICK);

     /* Set the UTick for a delay of 1000mS and in repeat mode */
     Chip_UTICK_SetDelayMs(LPC_UTICK, 1000, true);

     /* Enable Wake up from deep sleep mode due to UTick */
     Chip_SYSCON_EnableWakeup(SYSCON_STARTER_UTICK);

     /* Enable UTICK interrupt */
     NVIC_EnableIRQ(UTICK_IRQn);
   
    Chip_SYSCON_EnableWakeup(SYSCON_STARTER_UTICK);
   
    // At 3.24V supply
        // Sleep: 3.0 mA (Datasheet: 1.7 mA typ), active 4.0 mA (Datasheet: 4.1 mA typ)
        // Deepsleep: 1.67 mA (Datasheet: 22 uA typ), active (simple loop) 12 MHz:4.1 mA (Datasheet: 4 mA typ)
        // Deep powerdown: 260 nA (Datasheet: 326 nA typ)
   
    // At 1.85V supply
        // Sleep: 2.0 mA (Datasheet: 1.7 mA typ@3.3V), active 3.1 mA (Datasheet: 4 mA typ@3.3V)
        // Deepsleep: 550 uA (Datasheet: 22 uA typ@3.3V), active (simple loop) 12 MHz:3.1 mA (Datasheet: 4 mA typ@3.3V)
        // Deep powerdown: 220 nA (Datasheet: 326 nA typ@3.3V)

    while (1) {
        for (i=0; i<1000000; i++);
        //Chip_POWER_EnterPowerMode(POWER_SLEEP, 0, 0);
        //Chip_POWER_EnterPowerMode(POWER_DEEP_SLEEP, 0, 0);
        Chip_POWER_EnterPowerMode(POWER_DEEP_POWER_DOWN, 0, 0);
    }   

 

 

System init:

/* Clock and PLL initialization based on the internal oscillator */
void Chip_SetupIrcClocking(uint32_t iFreq)
{
     PLL_CONFIG_T pllConfig;
     PLL_SETUP_T pllSetup;
     PLL_ERROR_T pllError;

     /* Power up the FRO and set this as the base clock */
     Chip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_FRO);

     /* Till the PLL is Up use 12MHz FRO as the base clock */
     Chip_Clock_SetMainClockSource(SYSCON_MAINCLKSRC_FRO12MHZ);


     /* Setup FLASH access */
     setupFlashClocks(iFreq);
    
     /* Set system clock divider to 1 */
     Chip_Clock_SetSysClockDiv(1);
}





/* Set up and initialize hardware prior to call to main */
void Chip_SystemInit(void)
{
    
     /* Enable All SRAMs */
     Chip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_SRAM0 | SYSCON_PDRUNCFG_PD_SRAM1 | SYSCON_PDRUNCFG_PD_USB_RAM);
     Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_SRAM1);
     Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_SRAM2);
    
     /* Initial internal clocking @180MHz */
     Chip_SetupIrcClocking(12000000);
     //Chip_SetupIrcClocking(96000000);

     /* Setup system clocking and muxing */
     Board_SetupMuxing();

}

 

 

Board muxing is empty.

Attachments

Outcomes