XTAL32K Watchdog Timer (WDT)

Browse source code on GitHub

Overview

This sample shows how to work with XTAL32K Watchdog Timer (XT WDT) peripheral. To properly run this sample, you need to have a board with an external 32.728 Hz crystal oscillator connected to the XTAL_32K_P and XTAL_32K_N pins.

The app will ask for the crystal removal to simulate a crystal failure and trigger the XT WDT interrupt. Internally the hardware switch the RTC SLOW clock source from ESP32_RTC_SLOW_CLK_SRC_XTAL32K to ESP32_RTC_SLOW_CLK_SRC_RC_SLOW (136 KHz for C3 and S3 / 9 KHz for S2).

Supported SoCs

The following SoCs supports the XT WDT peripheral:

  • ESP32-C3

  • ESP32-S2

  • ESP32-S3

Building and Running

Make sure you have your board connected over USB port and the external crystal is connected to pins XTAL_32K_P and XTAL_32K_N.

west build -p -b esp32s3_devkitm/esp32s3/procpu samples/boards/espressif/xt_wdt
west flash

If using another supported Espressif board, replace the argument in the above command with a proper board name (e.g., esp32s2_saola).

Sample Output

To check output of this sample, run west espressif monitor or any other serial console program (e.g., minicom, putty, screen, etc). This example uses west espressif monitor, which automatically detects the serial port at /dev/ttyUSB0:

$ west espressif monitor
*** Booting Zephyr OS build v3.6.0-3896-gb4a7f061524f ***
[00:00:01.287,000] <inf> xt_wdt_sample: XT WDT Sample on esp32s3_devkitm/esp32s3/procpu
[00:00:01.287,000] <inf> xt_wdt_sample: Current RTC SLOW clock rate: 32768 Hz
[00:00:01.287,000] <inf> xt_wdt_sample: Remove the external 32K crystal to trigger the watchdog
XT WDT callback
[00:00:03.554,000] <inf> xt_wdt_sample: Current RTC SLOW clock rate: 136000 Hz