Clock configurations and sleep modes on the SAME54

1 post / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

This post compares current consumption of the SAME54 for various clock configurations across different low-power sleep modes.

<!--break-->

Context and Spoilers:

I was curious about a few things.  In ACTIVE mode, does using the DFLL consume more current than using an external crystal?  (No, it actually consumes less.)  During sleep modes, does using an external 32KHz crystal for the RTC consume more current than using the ultra low power internal oscillator?  (Yes, but only by a few microamperes.  And the external crystal is much more accurate and stable.)

Background:

Starting with the standard Atmel START example project ("Low power modes") for the SAME54 Xplained Pro, I measured the current consumption on an Agilent 34401A DMM across several clock configurations.   "Config A" uses the original clock configuration in the "Low power modes" project.  The details of the other configurations are described below.

  mode      Config A   Config B  Config C  Config D
+---------+---------+----------+---------+---------+
    ACTIVE   6.67 mA   15.6 mA   15.6 mA    4.08 mA
      IDLE   1.48 mA   1.06 mA   1.06 mA     667 uA
   STANDBY   56.5 uA   54.8 uA   56.1 uA    56.4 uA
 HIBERNATE    9.6 uA    9.4 uA   10.9 uA    11.2 uA
    BACKUP    3.5 uA    3.4 uA    4.9 uA     4.9 uA

Config A: Uses 8MHz external xtal for CPU, internal 32KHz osc for RTC (original Low Power code)

  • [Ext XTAL (8MHz) => GCLK0 (8MHz) => CPU (8MHz)]
  • [OSCULP32K (32KHz) => RTC (32KHz) => TIMER_0 (1 KHz)]

Config B: Uses internal 32KHz osc for RTC and to drive DFLL (generating 48MHz for CPU)

  • [OSCULP32K (32KHz) => GCLK3 (32KHz) => DFLL48M (48MHz) => GCLK0 (48MHz) => CPU (48MHz)]
  • [OSCULP32K (32KHz) => RTC (32KHz) => TIMER_0 (1 KHz)]

Config C: Uses EXternal 32KHz osc for RTC and to drive DFLL (generating 48MHz for CPU)

  • [XOSC32K(32KHz) => GCLK3 (32KHz) => DFLL48M (48MHz) => GCLK0 (48MHz) => CPU (48MHz)]
  • [XOSC32K (32KHz) => RTC (32KHz) => TIMER_0 (1 KHz)]

Config D: Uses EXternal 32KHz osc for RTC and to drive DFLL / 6 (generating 8MHz for CPU)

  • [XOSC32K(32KHz) => GCLK3 (32KHz) => DFLL48M (48MHz) => GCLK0 div 6 (8MHz) => CPU (8MHz)]
  • [XOSC32K (32KHz) => RTC (32KHz) => TIMER_0 (1 KHz)]

Commentary:

  1. As expected, running the CPU at 48MHz draws more current that running it at 8MHz (see ACTIVE mode), but the CPU is running 6x the speed.  If that allows you to complete operations more quickly before entering into a low-power mode, it's advantageous to run it at 48MHz using the DFLL.
  2. If running the CPU at 8MHz is appropriate for your app, you'll get lower power consumption by using a 32KHz oscillator driving the DFLL and dividing the output in GCLK0 (Config D) rather than driving the CPU directly with an 8MHz crystal (Config A).
  3. Using the internal 32KHz oscillator (OSCULP32K) consumes slightly less sleep current than using the external 32KHz crystal (XOSC32K) -- compare Config B to Config C.  But the external 32KHz oscillator gives you *much* better frequency stability which you often need for driving a UART or keeping accurate time.