.. _esp32c3_devkitm: ESP32-C3 ######## Overview ******** ESP32-C3 is a single-core Wi-Fi and Bluetooth 5 (LE) microcontroller SoC, based on the open-source RISC-V architecture. It strikes the right balance of power, I/O capabilities and security, thus offering the optimal cost-effective solution for connected devices. The availability of Wi-Fi and Bluetooth 5 (LE) connectivity not only makes the device configuration easy, but it also facilitates a variety of use-cases based on dual connectivity. [1]_ The features include the following: - 32-bit core RISC-V microcontroller with a maximum clock speed of 160 MHz - 400 KB of internal RAM - 802.11b/g/n/e/i - A Bluetooth LE subsystem that supports features of Bluetooth 5 and Bluetooth mesh - Various peripherals: - 12-bit ADC with up to 6 channels - TWAI compatible with CAN bus 2.0 - Temperature sensor - 3x SPI - 1x I2S - 1x I2C - 2x UART - LED PWM with up to 6 channels - Cryptographic hardware acceleration (RNG, ECC, RSA, SHA-2, AES) Supported Features ================== Current Zephyr's ESP32-C3-Devkitm board supports the following features: +------------+------------+-------------------------------------+ | Interface | Controller | Driver/Component | +============+============+=====================================+ +------------+------------+-------------------------------------+ | UART | on-chip | serial port | +------------+------------+-------------------------------------+ | GPIO | on-chip | gpio | +------------+------------+-------------------------------------+ | PINMUX | on-chip | pinmux | +------------+------------+-------------------------------------+ | USB-JTAG | on-chip | hardware interface | +------------+------------+-------------------------------------+ | SPI Master | on-chip | spi | +------------+------------+-------------------------------------+ | Timers | on-chip | counter | +------------+------------+-------------------------------------+ | Watchdog | on-chip | watchdog | +------------+------------+-------------------------------------+ | TRNG | on-chip | entropy | +------------+------------+-------------------------------------+ | LEDC | on-chip | pwm | +------------+------------+-------------------------------------+ | SPI DMA | on-chip | spi | +------------+------------+-------------------------------------+ | TWAI | on-chip | can | +------------+------------+-------------------------------------+ | USB-CDC | on-chip | serial | +------------+------------+-------------------------------------+ | ADC | on-chip | adc | +------------+------------+-------------------------------------+ | Wi-Fi | on-chip | | +------------+------------+-------------------------------------+ | Bluetooth | on-chip | | +------------+------------+-------------------------------------+ System requirements =================== Prerequisites ------------- Espressif HAL requires WiFi and Bluetooth binary blobs in order work. Run the command below to retrieve those files. .. code-block:: console west blobs fetch hal_espressif .. note:: It is recommended running the command above after :file:`west update`. Building & Flashing ------------------- Build and flash applications as usual (see :ref:`build_an_application` and :ref:`application_run` for more details). .. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: esp32c3_devkitm :goals: build The usual ``flash`` target will work with the ``esp32c3_devkitm`` board configuration. Here is an example for the :ref:`hello_world` application. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: esp32c3_devkitm :goals: flash Open the serial monitor using the following command: .. code-block:: shell west espressif monitor After the board has automatically reset and booted, you should see the following message in the monitor: .. code-block:: console ***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx ***** Hello World! esp32c3_devkitm Debugging --------- As with much custom hardware, the ESP32-C3 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`_ The Zephyr SDK uses a bundled version of OpenOCD by default. You can overwrite that behavior by adding the ``-DOPENOCD= -DOPENOCD_DEFAULT_PATH=`` parameter when building. Here is an example for building the :ref:`hello_world` application. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: esp32c3_devkitm :goals: build flash :gen-args: -DOPENOCD= -DOPENOCD_DEFAULT_PATH= You can debug an application in the usual way. Here is an example for the :ref:`hello_world` application. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: esp32c3_devkitm :goals: debug .. _`OpenOCD ESP32`: https://github.com/espressif/openocd-esp32/releases References ========== .. [1] https://www.espressif.com/en/products/socs/esp32-c3 .. _ESP32C3 Devkitm User Guide: https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html .. _ESP32C3 Technical Reference Manual: https://espressif.com/sites/default/files/documentation/esp32-c3_technical_reference_manual_en.pdf .. _ESP32C3 Datasheet: https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf