.. _esp32s2_saola: ESP32-S2 ######## Overview ******** ESP32-S2 is a highly integrated, low-power, single-core Wi-Fi Microcontroller SoC, designed to be secure and cost-effective, with a high performance and a rich set of IO capabilities. [1]_ The features include the following: - RSA-3072-based secure boot - AES-XTS-256-based flash encryption - Protected private key and device secrets from software access - Cryptographic accelerators for enhanced performance - Protection against physical fault injection attacks - Various peripherals: - 43x programmable GPIOs - 14x configurable capacitive touch GPIOs - USB OTG - LCD interface - camera interface - SPI - I2S - UART - ADC - DAC - LED PWM with up to 8 channels Supported Features ================== Current Zephyr's ESP32-S2-saola 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 | +------------+------------+-------------------------------------+ | PCNT | on-chip | qdec | +------------+------------+-------------------------------------+ | SPI DMA | on-chip | spi | +------------+------------+-------------------------------------+ | ADC | on-chip | adc | +------------+------------+-------------------------------------+ | DAC | on-chip | dac | +------------+------------+-------------------------------------+ | Wi-Fi | 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: esp32s2_saola :goals: build The usual ``flash`` target will work with the ``esp32s2_saola`` board configuration. Here is an example for the :ref:`hello_world` application. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: esp32s2_saola :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! esp32s2_saola Debugging --------- ESP32-S2 support on OpenOCD is available upstream as of version 0.12.0. Download and install OpenOCD from `OpenOCD`_. The following table shows the pin mapping between ESP32-S2 board and JTAG interface. +---------------+-----------+ | ESP32 pin | JTAG pin | +===============+===========+ | MTDO / GPIO40 | TDO | +---------------+-----------+ | MTDI / GPIO41 | TDI | +---------------+-----------+ | MTCK / GPIO39 | TCK | +---------------+-----------+ | MTMS / GPIO42 | TMS | +---------------+-----------+ Further documentation can be obtained from the SoC vendor in `JTAG debugging for ESP32-S2`_. Here is an example for building the :ref:`hello_world` application. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: esp32s2_saola :goals: build flash 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: esp32s2_saola :goals: debug .. _`OpenOCD`: https://github.com/openocd-org/openocd .. _`JTAG debugging for ESP32-S2`: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-guides/jtag-debugging/index.html References ********** .. [1] https://www.espressif.com/en/products/socs/esp32-s2 .. _ESP32-S2 Saola User Guide: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html .. _ESP32S2 Technical Reference Manual: https://espressif.com/sites/default/files/documentation/esp32-s2_technical_reference_manual_en.pdf .. _ESP32S2 Datasheet: https://www.espressif.com/sites/default/files/documentation/esp32-s2_datasheet_en.pdf