13.10.6.2 32 KHz External Crystal Oscillator (XOSC32K) Operation
The XOSC32K can operate in two different modes:
- External clock, with an external clock signal connected to XIN32
- Crystal oscillator, with an external 32.768 kHz crystal connected between XIN32 and XOUT32
At reset, the XOSC32K is disabled, and the XIN32/XOUT32 pins can either be used as General Purpose I/O (GPIO) pins or by other peripherals in the system.
When XOSC32K is enabled, the operating mode determines the GPIO usage. When in crystal oscillator mode, the XIN32 and XOUT32 pins are controlled by the OSC32KCTRL, and the GPIO functions are overridden on both pins. When in external clock mode, the only XIN32 pin will be overridden and controlled by the OSC32KCTRL, while the XOUT32 pin can still be used as a GPIO pin.
The XOSC32K is enabled by writing a '1' to the Enable bit in the 32 KHz External Crystal Oscillator Control register (XOSC32K.ENABLE = 1). The XOSC32K is disabled by writing a '0' to the Enable bit in the 32 KHz External Crystal Oscillator Control register (XOSC32K.ENABLE = 0).
To enable the XOSC32K as a crystal oscillator, the XTALEN bit in the 32 KHz External Crystal Oscillator Control register must be set (XOSC32K.XTALEN = 1). If XOSC32K.XTALEN is '0', the external clock input will be enabled.
The XOSC32K 32.768 kHz output is enabled by setting the 32 KHz Output Enable bit in the 32 KHz External Crystal Oscillator Control register (XOSC32K.EN32K = 1). The XOSC32K also has a 1.024 kHz clock output, which can only be used by the RTC. This clock output is enabled by setting the 1 KHz Output Enable bit in the 32 KHz External Crystal Oscillator Control register (XOSC32K.EN1K = 1).
It is also possible to lock the XOSC32K configuration by setting the Write Lock bit in the 32 KHz External Crystal Oscillator Control register (XOSC32K.WRTLOCK = 1). If set, the XOSC32K configuration is locked until a Power-On Reset (POR) is detected.
The XOSC32K will behave differently in different sleep modes based on the settings of XOSC32K.RUNSTDBY, XOSC32K.ONDEMAND and XOSC32K.ENABLE. If XOSC32K.ENABLE = 0, the XOSC32K will always be stopped. For XOS32K.ENABLE = 1, this table is valid:
CPU Mode | XOSC32K. RUNSTDBY |
XOSC32K. ONDEMAND |
Sleep Behavior |
---|---|---|---|
Active or Idle | — | 0 | Always run |
Active or Idle | — | 1 | Run if requested by peripheral |
Standby | 1 | 0 | Always run |
Standby | 1 | 1 | Run if requested by peripheral |
Standby | 0 | — | Run if requested by peripheral |
As a crystal oscillator usually requires a very long start-up time, the 32 KHz External Crystal Oscillator will keep running across resets when XOSC32K.ONDEMAND = 0, except for power-on reset (POR). After a reset or when waking up from a sleep mode where the XOSC32K was disabled, the XOSC32K will need a certain amount of time to stabilize on the correct frequency. This start-up time can be configured by changing the Oscillator Start-Up Time bit group (XOSC32K.STARTUP) in the 32 KHz External Crystal Oscillator Control register. During the start-up time, the oscillator output is masked to ensure that no unstable clock propagates to the digital logic.
Once the external clock or crystal oscillator is stable and ready to be used as a clock source, the XOSC32K Ready bit in the Status register is set (STATUS.XOSC32KRDY = 1). The transition of STATUS.XOSC32KRDY from '0' to '1' generates an interrupt if the XOSC32K Ready bit in the Interrupt Enable Set register is set (INTENSET.XOSC32KRDY = 1).
The XOSC32K can be used as a source for Generic Clock Generators (GCLK) or for the Real-Time Counter (RTC). Before enabling the GCLK or the RTC module, the corresponding oscillator output must be enabled (XOSC32K.EN32K or XOSC32K.EN1K) to ensure proper operation. In the same way, the GCLK or RTC modules must be disabled before the clock selection is changed. For details on the RTC clock configuration, refer to 13.10.6.6 Real-Time Counter Clock Selection.