Many of the engineers that are working on designs using the ARM Cortex-M0 microcontroller care deeply about power consumption. This is particularly true for designers who use the VORAGO Technologies VA108x0, since it is a go-to choice for applications such as downhole drilling and small satellites (battery-powered and solar-powered respectively).
VORAGO Technologies specialize in ARM microcontrollers for extreme environments such as high temperature (up to 200˚C) and radiation (for example Space, but not exclusively). An ARM-based solution is very well received by designers in these fields since it is inherently low power and is easy to develop with, particularly compared to the existing ‘hi-rel’ qualified alternatives that are used in legacy systems.
A new application note was just published detailing different techniques to optimize power consumption on the VORAGO ARM Cortex-M0 devices. It is available here: http://www.voragotech.com/resources. There are three main tips.
The first tip is to switch off any clocks to peripheral sub-systems that are not in use. There is a separate clock enable bit for each peripheral and timer. Out of RESET, all the peripheral and timer clock gates are off with the CPU running. Before any registers can be configured for a peripheral, the clock gating that block must be enabled.
The second tip is to properly terminate all GPIO, JTAG and I2C pins. If the gate of a CMOS transistor is left floating, the device has the potential to oscillate or stay in an active region that can pull current. Termination can be done in several ways – an external pull up/down resistor can be used, an internal pull up/down resistor can be used (after the boot sequence is complete), a pin can be set as an output and driven low or unused pins can be tied to VDD or GND.
The third tip is to utilize the WFI instruction. The Cortex-M family provides an instruction, Wait-For-Interrupt (WFI) that stops the CPU from executing instructions until an interrupt is received, the device is RESET or a debug operation takes place. This can save a lot of power consumption and should be used whenever power consumption is a concern. Implementing the instruction is simple – just insert ‘__WFI’ (two underscore characters followed by WFI).
The VORAGO Technologies VA10800 (for extreme temperature) and the VA10820 (radiation-hardened) devices were analyzed to determine sources of power consumption. Each were run full speed with all peripherals on. Pie charts were constructed to show how the overall power budget of the devices are consumed among the CPU, timers and peripherals. This is quite helpful as a starting point to start squeezing the power consumption down. These charts are shown in the diagram.