This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

XIAO ESP32C3

Overview

Seeed Studio XIAO ESP32C3 is an IoT mini development board based on the Espressif ESP32-C3 WiFi/Bluetooth dual-mode chip.

For more details see the Seeed Studio XIAO ESP32C3 1 wiki page.

XIAO ESP32C3

Fig. 230 XIAO ESP32C3

Hardware

This board is based on the ESP32-C3 with 4MB of flash, WiFi and BLE support. It has an USB-C port for programming and debugging, integrated battery charging and an U.FL external antenna connector. It is based on a standard XIAO 14 pin pinout.

Supported Features

The XIAO ESP32C3 board configuration supports the following hardware features:

Interface

Controller

Driver/Component

PMP

on-chip

arch/riscv

INTMTRX

on-chip

intc_esp32c3

PINMUX

on-chip

pinctrl_esp32

USB UART

on-chip

serial_esp32_usb

GPIO

on-chip

gpio_esp32

UART

on-chip

uart_esp32

I2C

on-chip

i2c_esp32

SPI

on-chip

spi_esp32_spim

TWAI

on-chip

can_esp32_twai

Connections and IOs

The board uses a standard XIAO pinout, the default pin mapping is the following:

XIAO ESP32C3 Pinout

Fig. 231 XIAO ESP32C3 Pinout

Prerequisites

Espressif HAL requires WiFi and Bluetooth binary blobs in order work. Run the command below to retrieve those files.

west blobs fetch hal_espressif

Note

It is recommended running the command above after west update.

Building & Flashing

For the Hello, world! application, follow the instructions below.

# From the root of the zephyr repository
west build -b xiao_esp32c3 samples/hello_world
west flash

Since the Zephyr console is by default on the usb_serial device, we use the espressif monitor to view.

$ west espressif monitor

Debugging

As with much custom hardware, the ESP32 modules require patches to OpenOCD that are not upstreamed yet. Espressif maintains their own fork of the project. The custom OpenOCD can be obtained at OpenOCD ESP32 2

The Zephyr SDK uses a bundled version of OpenOCD by default. You can overwrite that behavior by adding the -DOPENOCD=<path/to/bin/openocd> -DOPENOCD_DEFAULT_PATH=<path/to/openocd/share/openocd/scripts> parameter when building.

Here is an example for building the Hello World application.

# From the root of the zephyr repository
west build -b xiao_esp32c3 samples/hello_world -- -DOPENOCD=<path/to/bin/openocd> -DOPENOCD_DEFAULT_PATH=<path/to/openocd/share/openocd/scripts>
west flash

You can debug an application in the usual way. Here is an example for the Hello World application.

# From the root of the zephyr repository
west build -b xiao_esp32c3 samples/hello_world
west debug

References

1

https://wiki.seeedstudio.com/XIAO_ESP32C3_Getting_Started

2

https://github.com/espressif/openocd-esp32/releases