cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WB55 - Achieve lowest possible power mode

Jorge Alves
Associate III

Hi,

I've been searching for information on how to achieve a shutdown on both the MCU cores. The goal is to periodically wake the system with an RTC, read sensor data and emit a report. I have found some information on the need to set the correct flags to enable different power modes calling 

 

LL_C2_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN);
 LL_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN);
 
But when i call HAL_PWREx_EnterSHITDOWNMode() the system still consumes about 2mA which is way over the spec.
 
Is there any required "manual shutdowns" to achieve the lowest power level?
 
I am using several peripherics apart from RF: I2c1, adc
7 REPLIES 7
Lubos KOUDELKA
ST Employee

Hi Jorge,

which board do you use?
On STM32WB55 nucleo board you can try to run following example:
https://github.com/STMicroelectronics/STM32CubeWB/tree/master/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC

With this example you should reach expected power consumption and then follow steps done in this project also in your project/target board. Additionally please check also following example to disable RF (and set CPU2 to enter standby) prior set MCU into standby
https://github.com/stm32-hotspot/STM32WB-BLE-standby

For I2C and ADC peripheral you don't need to do make any additional setting as those peripherals are not available standby, it will be turned off automatically. You should just manage all GPIO pins - where possible set GPIO to analog and disable its clock source.

Best regards,
Lubos

Hi Lubos,

I'm using the Nucleo Board WB55RG and developing my own board with an STM32WB55CGU6TR microcontroller.

Thank you for your reply, I already did the standby mode. However, I tried to do the shutdown mode but I have some difficulties. In the shutdown mode, I can't use the Internal interrupt (LSI) and I need to use the external interrupt (LSE), correct? I do this and it is working, but it is consuming more than in Standby Mode.  Do you know why, is it normal? I test it in Nucleo Board WB55RG.

Best Regards,

Jorge

 

 


@Jorge Alves wrote:

 Internal interrupt (LSI) and I need to use the external interrupt (LSE)


Those are oscillators (clock sources) - not interrupts.

Yes, Andrew. But the oscillators can generate internal or external interrupts to wake up the microcontroller from standby mode or shutdown mode, correct?

If I understand well, I can't wake up from shutdown mode with an internal interrupt.

Unless there's something special on the WB, the oscillators can't start themselves autonomously - so they wouldn't be able to wake the system.

Ok, thank you. So, what is the best way to wake up from shutdown mode if I don't have a button or other system to generate an external interrupt? I'm trying to use the RTC associated with LSE, but it consumes more than standby mode using the RTC associated with LSI.

I'm sorry for late reply. Yes, you're right, LSI is not possible to use in Shutdown mode. Without buttons/external interrupts is RTC with LSE source only wakeup source you have.
In general (you can see in datasheet) LSI has higher power consumption than LSE, so there need to be some issue in your setup, when you report, that Standby + LSI consumes less than Shutdown + LSE.