The ARM Cortex-M0 is an ultra low power 32-bit RISC CPU core designed for microcontroller applications. It is the smallest and most energy-efficient Cortex-M processor from ARM. The M0 core is optimized to provide an efficient solution for applications requiring minimal power consumption, with high performance and small code size.
The power consumption of the M0 core can vary significantly depending on the specific implementation, operating frequency, supply voltage, peripherals enabled, and workload. However, ARM provides typical power consumption estimates that can be used as a general guideline.
Typical Power Consumption
According to the ARM Cortex-M0 processor datasheet, the typical power consumption of the M0 core at 1 MHz and 0.9V supply is just 9 μA/MHz. This extremely low power consumption makes the M0 well suited for battery-powered and energy harvesting applications.
At higher frequencies and voltages, the power draw increases. At 48 MHz and 1.2V, the typical core power consumption is 48 mA. So as a rough estimate, the M0 core consumes approximately 1 mA per MHz when running at 1.2V.
However, the total power draw depends on the specific implementation and which peripherals are enabled. A typical Cortex-M0 MCU with 16KB SRAM, 256KB flash, core @ 48MHz, peripherals enabled might consume around 100 mA at 1.8V while active, and less than 1 μA in sleep mode.
Reducing Power Consumption
There are several techniques that can be used to reduce power consumption of an M0-based system:
- Operate at lower clock frequencies when possible
- Use lower supply voltages when speed is not critical
- Disable unused peripherals and clocks
- Minimize switching on I/O pins
- Use sleep/low power modes when idle
- Reduce unnecessary wakeups from sleep modes
- Design software for minimal processing requirements
- Use DMA transfers instead of CPU loading
- Implement clock gating in custom designs
- Choose low-power external components
Careful consideration of both hardware and software design can enable an M0 system to operate for years on a small battery or energy harvester.
Comparison to Other Cortex-M CPUs
Compared to other Cortex-M series processors, the M0 has the lowest power consumption by design. For example:
- ARM Cortex-M0+: Slightly higher power than M0 but adds some features
- ARM Cortex-M1: Higher performance but also higher power
- ARM Cortex-M3: Widely popular MCU core, more power hungry than M0
- ARM Cortex-M4: Supports DSP instructions, even higher power
- ARM Cortex-M7: Highest performance MCU core from ARM
The M0 gives up some performance and features compared to these cores in order to reach ultra low power operation. But it still provides good processing capability for basic applications in exchange.
Example M0 Microcontrollers
Many microcontroller manufacturers offer Cortex-M0 based MCUs. Here are some examples with typical power consumption estimates:
- STM32L011 (STMicroelectronics): 1.65 μA in standby, 200 μA to 2 mA active @ 32 MHz
- EFM32TG840 (Silicon Labs): 1.2 μA in deep sleep, 113 μA/MHz active
- SAM L10 (Microchip): 1.38 μA in sleep mode, 169 μA/MHz active @ 48 MHz
- MSP430FR2000 (TI): 0.4 μA in standby, 116 μA/MHz active @ 8 MHz
- NRF51822 (Nordic): 2.5 μA in deep sleep, 9.7 mA RX/TX @ 16 MHz
This shows the wide range of power consumption possible. Factors like operating voltage, peripheral choice, and process technology all contribute to differences between chips.
The Cortex-M0 is well suited to a variety of low power embedded applications including:
- Battery-powered and energy harvesting devices
- Smart meters and smart grid devices
- Environmental sensors
- Wearable health trackers
- Low-power wireless IoT endpoints
- Home automation and smart home devices
- Toys and other consumer products
The ability to operate for long periods on small batteries or harness low levels of ambient energy makes the M0 a very flexible choice for product designers. It provides enough performance for many simple tasks while sipping power.
Optimizing Software for Low Power
To fully realize the low power potential of the Cortex-M0, software should be designed with power in mind:
- Avoid unnecessary polling loops, use sleep modes and wake only when needed
- Minimize use of power-hungry peripherals like RF transmitters
- Manage clocks and power to unused sections of the MCU
- Use DMA transfers instead of CPU loading for bulk data movement
- Choose low-power peripherals when possible (like LPUART instead of UART)
- Use flash memory efficiently to reduce reprogramming cycles
- Process data algorithmically instead of taking more measurements
- Operate at lower voltages/speeds when real-time demands permit
Efficient firmware can often have a bigger impact on power reduction than hardware optimization alone. The Cortex-M0 provides flexible sleep modes and clock control peripherals to enable energy-friendly software architectures.
The ARM Cortex-M0 achieves remarkably low power consumption through an efficient RISC architecture, extensive clock gating, and advanced process technology. Core power draw ranges from around 10 μA/MHz at 1V up to around 1 mA/MHz at 1.2V.
Total system power depends on the MCU chosen, peripherals enabled, operating frequency, supply voltage, and software. But with careful design, an M0-based system can operate for years on a small primary battery or even energy harvesting sources.
The M0 is highly competitive in low power applications needing basic microcontroller performance. It forms the basis of many energy-friendly connected devices. With proper optimization across hardware and software, the M0 will continue to enable innovative ultra-low power products.