Optimizing Power Consumption on ARM Cortex-M with Mbed OS: Seeking Advanced Tips and Techniques

Hi everyone,

I am working on a project using an ARM Cortex–M microcontroller and I am trying to optimize the power consumption. I have already implemented some basic low–power modes (like sleep and deepsleep),… but I am still not getting the battery life I need.

I am curious if there are any advanced techniques or strategies that you’ve found effective in further reducing power consumption. Specifically, I am looking at optimizing clock speeds and minimizing peripheral usage when not needed.

Additionally, I have read a bit about dynamic voltage scaling and would love to hear if anyone has experience with it on Mbed OS. How does it impact the overall system performance and stability: ??

Any pitfalls to watch out for: ?? I have already gone through this https://os.mbed.com/docs/mbed-os/v6.16/apis/power-optimization.htmlcissp it helped me alot but now I am looking for some more tips.

Any advice or examples of what has worked for you would be really appreciated. I am open to suggestions on any relevant tools or libraries as well.

Thanks in advance… :pray:

Some general answer is not possible, it depends heavily on the hardware capabilities and if the MCU supports deepsleep.
Also some devices may disable deepsleep and debug mode disables deepsleep also.
Switching clock speed is afaik not supported in Mbed, but of course possible by adding own clock switching routines. Then you have to check if interfaces like uart or spi run at correct speed, because usually the device clock is calculated on initialization.