17.6.1 Principle of Operation
XOSC, XOSC32K, OSC32K, OSCULP32K, OSC8M, DFLL48M, FDPLL96M, BOD33, and VREF are configured through SYSCTRL control registers. Through this interface, the sub-peripherals are enabled, disabled or have their calibration values updated.
The Power and Clocks Status register gathers different status signals coming from the sub-peripherals controlled by the SYSCTRL. The status signals can be used to generate system interrupts, and in some cases wake up the system from Standby mode, provided the corresponding interrupt is enabled.
The oscillator must be enabled to run. The oscillator is enabled by writing a one to the ENABLE bit in the respective oscillator control register, and disabled by writing a zero to the oscillator control register. In Idle mode, the default operation of the oscillator is to run only when requested by a peripheral. In Standby mode, the default operation of the oscillator is to stop. This behavior can be changed by the user, see below for details.
The behavior of the oscillators in the different sleep modes is shown in the table below.
Oscillator | Idle 0, 1, 2 | Standby |
---|---|---|
XOSC | Run on request | Stop |
XOSC32K | Run on request | Stop |
OSC32K | Run on request | Stop |
OSCULP32K | Run | Run |
OSC8M | Run on request | Stop |
DFLL48M | Run on request | Stop |
FDPLL96M | Run on request | Stop |
To force an oscillator to always run in Idle mode, and not only when requested by a peripheral, the oscillator ONDEMAND bit must be written to zero. The default value of this bit is one, and thus the default operation in Idle mode is to run only when requested by a peripheral.
To force the oscillator to run in Standby mode, the RUNSTDBY bit must be written to one. The oscillator will then run in Standby mode when requested by a peripheral (ONDEMAND is one). To force an oscillator to always run in Standby mode, and not only when requested by a peripheral, the ONDEMAND bit must be written to zero and RUNSTDBY must be written to one.
The next table shows the behavior in the different sleep modes, depending on the settings of ONDEMAND and RUNSTDBY.
Sleep mode | ONDEMAND | RUNSTDBY | Behavior |
---|---|---|---|
Idle 0, 1, 2 | 0 | X | Run |
Idle 0, 1, 2 | 1 | X | Run when requested by a peripheral |
Standby | 0 | 0 | Stop |
Standby | 0 | 1 | Run |
Standby | 1 | 0 | Stop |
Standby | 1 | 1 | Run when requested by a peripheral |