MartijnJonkers
MartijnJonkers

Reputation: 43

STM32L1x Stop mode + RTC too much current

I am able to put my stm32L1xDiscovery board in STOP mode with RTC running. according to the datasheet this should draw about 1.3 µA. But my application draws 3.3 µA.

I noticed I did not put the FLASH in a low power mode during sleep. But when I did this, nothing changed.

This is what I use to go into STOP mode:

SCB->SCR |= ((uint32_t)SCB_SCR_SLEEPDEEP);

RCC->APB1ENR |= RCC_APB1Periph_PWR;
PWR->CR |= ((uint32_t)(PWR_CR_LPSDSR|PWR_CR_ULP)); // ULP seems to have no effect on power consumption
RCC->APB1ENR &= ~RCC_APB1Periph_PWR;

FLASH->ACR |= SLEEP_PD; // seems to have no effect at all on power consumption

__WFI();

Any idea what I am missing here?

Upvotes: 1

Views: 2517

Answers (2)

Where did you measure the power consumption? You should do it betwen JP1 pins 1 & 2 (Pin 2 is connected directly to Vdd). That should show the power drawn by the MCU, and of course anything that is powered by the output pins.

The trick is to properly disconnect and shut down all pins (except the wakeup source) as well as all clocks that are not needed.

  • Set FLASH->ACR |= SLEEP_PD
  • Enable all GPIO clocks
  • Put all unneded pins to analog mode
  • Disable ALL clocks except RCC_APB1ENR_PWREN and wakeup GPIOs in RCC->xxxLPENR
  • Then start the thing without the debugger, ST-Link (CN3) jumpers removed.

... and there might be other issues. It's hard to get it right.

Upvotes: 1

imbearr
imbearr

Reputation: 1009

If you use discovery board your measurement may be not clear because a lot of other components consumpt some energy. It's may be protection diode, driver of 3.3V line or second MCU with ST-LINK/V2 embedded debug tool.

Upvotes: 1

Related Questions