cancel
Showing results for 
Search instead for 
Did you mean: 

Ultra low power for STM32L433 using VBAT pin for power in shutdown

freeflyer
Senior III

I am designing a compact, low power device using the STM32L433.

The device is powered by a 1S battery and I use a buck-boost converter (TPS63070) to generate the 3.3V supply.

However, at the moment the buck-boost converter is permantely powered (enable pin permentatly pulled high).

I use both shutdown and standby power modes, which use WKUP2 (pin PC13) and RTC to wake the STM32.  But I have just noticed the VBAT pin which could potentially reduce power consumption drastically.  In both shutdown and standby power modes, I use RTC and LSE.

However, there are two issues I am not sure how to resolve.

1. The WKUP2 pin currently uses the 3.3V from the buck-boost converter (I copied the same circuit used on the Nucleo develpment board).  But if I disable the buck-boost converter then there will be no 3.3V supply to the switch for the WKUP pin, so the STM32 would never wake.  The circuit is shown below..

freeflyer_0-1767392856764.png

 

2. The battery is 1S so could be up to 4.2V, but the VBAT pin can only handle voltatges of 1.55 to 3.6 V.  So how do I power the VBAT pin using the 1S battery ?

At the moment the current draw In shutdown is around 0.5mA (probably due to the buck-boost converter always running), but I believe if I can disable the buck-boost converter and use the VBAT pin then this could potentially reduce to tens of nA which would make a significant power saving, so I am very keen to implement this if I can resolve the above issues.

8 REPLIES 8
TDK
Super User

Use an LDO with a very low quiescent current. There are thousands of these devices. Here is one basically at random:

AP7354

 

It would be better (more efficient) to use a battery that lies within the allowable voltage range, but this will get you to the sub-uA range easily.

If you feel a post has answered your question, please click "Accept as Solution".

Thanks TDK, I need a 1S battery 500mAh+ as it’s a Bluetooth audio device driving a headphone speaker when running. 

Are you suggesting to use a coin cell in addition to the 1S battery?

 

freeflyer
Senior III

This is the issue I have, its a chicen and egg situtation

To enable the 3.3V buck-boost converter, the STM32 needs to set the GPIO pin high.

However, if the STM32 is only powered by the VBAT pin, then the GPIO pins are not powered so the buck-boost converter cannot be enabled.

freeflyer_1-1767433506807.png

 

 

Let's be practical here.

With a 500 mAh battery that self-discharges at 2% each month, that's an average current draw of ~14 uA. If you get the draw from the LDO circuit to be under 1 uA, you're not changing the performance. No need to chase for tens of nA--it won't meaningfully affect performance.

If you feel a post has answered your question, please click "Accept as Solution".
Danish1
Lead III

What are the circumstances where you'll want to wake up your main power-supply?

Is it in response to

  • button-press?
  • at specified times or time-intervals?
  • Some complicated rules that you need a lot of processing-power to decide whether or not to wake?
  • USB-C power present

Where the rules are simple, I have sometimes used a second processor, perhaps an 8-bitter or stm32c0, that I leave permanently powered. That one gets to decide if the main processor ought to be woken up.

Thats useful information about the self discharge and an average current draw of ~14uA (how did you calcuate this current draw out of interest ?)

At the moment though, when in shutdown the current is ~500uA so I expect this can be significantly improved (especially as STM32 shutdown current is 70nA).

I think the majority of this current is due to the 3.3V buck-boost converter (TPS63070), so when I investigated the VBAT pin on the STM32 I realised there could be a way to disable the 3.3V buck-boost converter and reduce the current draw.

I have just implemented the following circuit so I can disable the 3.3V buck-boost converter... 

freeflyer_2-1767467598855.png

 

 

When the button switch is pressed....

  • The 3.3V buck-boost converter is enabled
  • The STM32 is woken
  • The STM32 power hold pin is set high
    • This is to keep the 3.3V buck-boost converter enabled when the push button is released

 

During shutdown/standby....

  • The 3.3V buck-boost converter is disabled
  • The STM32 VBAT pin is powered by the 1.8V LDO regulator

 

I had to use a regulator and diode that I had lying around, so there are probably more low power versions I can use, but I just wanted to check the method works.

 

The current in shutdown has dropped to 33uA (still high but better than 500uA).

 

But after first testing I have found it has had a knock on effect, such as...

  • RTC wake no longer works (it should wake every 30 seconds, measure a sensor reading and then standby)
  • To put the the firmware into a programming mode, the push button switch has to be held for 5 seconds.  But this no longer works for some reason (maybe 1.8V is not being seen as a logic high, but then it wakes the STM32 via the WKUP pin so it must be something else ?)
  • When debugging (with STLINK) the connection is lost as soon as the 3.3V buck-boost converter is disabled.  This could be a simple fix by using a debug firmware version that keeps the 3.3V buck-boost converter enabled
  • Reading from external flash (W25Q) at power up seems to be intermittent so needs investigating

 

 

  • To turn the device on (from shutdown), the push button has to be pressed 4 times
  • Once woken, it takes a sensor reading and then goes into standby
  • Every 30 seconds its woken by RTC, it takes a sensor reading and then goes into standby
  • If the sensor reading meets a criteria, it then goes into operating mode
  • Once in operating mode, when the sensor reading meets another criteria it goes back into standby
  • After 14 hours since being turned on, the device goes into shutdown
  • The user can also put the device into shutdown by pressing the push button 4 times
freeflyer
Senior III

Im now questioning whether I should be using a 3.3V buck-boost converter (TPS63070) ?

The intention was for the device to work at low battery voltages, so if the battery falls below 3.3V the device would still work.

But if the STM32L433 can operate at lower voltages (e.g. 3V) then would I be better off using an effecient LDO ?

Would this help reduce the current draw when in shutdown/standby ?

It appears that the RTC will not work with the configuratoin I implemented (i.e. disabling the 3.3V buck-boost converter etc)