The definitive guide to ARM Cortex-M0/M0+: Using low-power features
Editor's Note: In designing deeply embedded systems, engineers face ongoing tradeoffs between power and performance. The rapid emergence of opportunities for personal electronics, wearables and Internet of Things (IoT) applications only exacerbates challenges in reducing power while enhancing performance. The ARM Cortex-M0 and Cortex-M0+ processors have emerged as a leading solution, providing the core for a broad range of microcontrollers designed to meet tough requirements for low-power, high-performance operation. In The Definitive Guide to ARM® Cortex®-M0 and Cortex-M0+ Processors, 2nd Edition, Joseph Yiu offers a comprehensive view of these processors. As Jack Gannsle wrote, these books will "...give you the insight you need to be productive on real projects."
CHAPTER 19. Ultralow-Power Designs (Cont.)
19.8 Example of Using Low-Power Feature on LPC1114
19.8.1 Overview of LPC1114FN28
While the LPC1114 product series is not the lowest power Cortex!-M0/Cortex-M0þ microcontroller from NXP, it is an interesting product as it is available in DIP package. It means even hobbyists can construct low-power circuit boards at home (e.g., on breadboard). While there are plenty of other microcontroller development boards that can plug onto breadboard, often those boards do not allow users to isolate the power of the microcontroller from the power supply of the other components. So that adds to complexity when creating simple low-power systems.
The LPC111x supports four power modes (Table 19.6).
The LPC1114FN28 device has an internal 12-MHz RC oscillator (trimmed), and a programmable low-power watchdog oscillator. In addition, there is an external crystal oscillator. The clock generation unit of the LPC111x is shown in Figure 19.14.
Figure 19.14. LPC111x clock generation unit. Image from LPC111x User Manual.
The power management of the LPC111x is controlled by a number of registers (Table 19.7).
The details of these registers can be found in NXP LPC111x User Manual.
19.8.2 First Experiment — Running at 12 MHz with Internal and External Crystal
In the first test, a small experiment is carried out to compare the power consumption when running the system at 12 MHz, with internal and external crystals.
In the project, we set the CLOCK_SETUP macro in system_LPC11xx.c to 0. And handle all the clock initialization in the main program code if needed. We added a C macro USE_EXT_CRYSTAL to select between internal crystal and external crystal.
After compiling and executing the program, some measurements are carried out (Table 19.8).
From here, we can see that you can have lower power with an external crystal oscillator. Of course, this result is device-specific and in general the result can be affected by many factors like the crystal component being used and if there is any special low-power feature for either oscillators.
19.8.3 Second Experiment — Running at Reduced Frequencies of 1 MHz and 100 KHz
We can save a large portion of power by reducing the operation frequency. In the LPC1114, we can do this by programming the System AHB clock divider (LPC_SYSCON->SYSAHBCLKDIV). Please note this can have an impact to the timer’s programming if we need to wake up the system at the same 1-Hz rate.
Most of the codes are similar from the previous example, with the addition of:
And the timer configuration code needs to deal with the new preprocessing macros.
After doing the changes, we can measure the result and compare to the previous 12-MHz setup (Table 19.9). All results here are based on using of external 12-MHz crystal as source.
Here, we can see that at low-clock frequencies (using clock divider or prescalar), the reduction of power is not linear. So even the operating frequency is reduced by 10 from 1 MHz to 100 KHz, the active current reduction is only around 11%.