8.0 KiB
@defgroup boards_esp32s3_usb_otg ESP32-S3-USB-OTG Board @ingroup boards_esp32s3 @brief Support for the ESP32-S3-USB-OTG board @author Gunar Schorcht gunar@schorcht.net
\section esp32s3_usb_otg ESP32-S3-USB-OTG
Table of Contents
Overview
The Espressif ESP32-S3-USB-OTG is a development board designed for the development of applications that use the USB interface. For this purpose it is equipped with two USB type A ports:
USB_DEVmale port that is used to connect the board as a USB device to a host.USB_HOSTfemale port that is used to connect other USB devices to the board.
\image html "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/_images/pic_board_top_lable.png" "Espressif ESP32-S3-USB-OTG" width=600px
@note RIOT-OS does only support the USB_DEV port, that is the board can only
be used as USB device.
The main features of the board are:
| Feature | Support |
|---|---|
| ESP32-S3 SoC | yes (1 core) |
| 2.4 GHz WiFi 802.11b/g/n | yes |
| Bluetooth5, BLE | yes |
| 8 MByte Flash | yes |
| USB Type-A Host Interface | no |
| USB Type-A Device Interface | yes |
| SD Card Slot | yes |
| LCD Color Display 240 x 240 | yes |
Hardware
This section describes
- the MCU,
- the default board configuration,
MCU
Most features of the board are provided by the ESP32-S3 SoC. For detailed information about the ESP32-S3 SoC variant (family) and ESP32x SoCs, see section \ref esp32_mcu_esp32 "ESP32 SoC Series".
Board Configuration
The Espressif ESP32-S3-USB-OTG is a development board that uses the ESP32-S3-MINI-1 module. Most important features of the board are
- Micro-SD Card interface
- 1.3" Color LCD display with ST7789 display controller
- USB-to-UART bridge
USB_DEVType-A male portUSB_HOSTType-A female port
@note
SPI_DEV(1) is only configured if the sdcard_spi module is explicitly added to
the USEMODULE in the application's Makefile to access the SD card in SPI mode.
By default, the SDMMC host is configured and used by the periph_sdmmc
module to access the SD card.
For detailed information about the peripheral configurations of ESP32-S3 boards, see section \ref esp32_peripherals "Common Peripherals".
The corresponding board schematic can be found here
Flashing the Device
There are two options to flash the board:
- USB Serial/JTAG interface using the
USB_DEVport (default) - UART-to-UART bridge
Flashing the device using the USB Serial/JTAG interface (USB_DEV port)
To flash the board via the USB Serial/JTAG interface just connect the board
with the USB_DEV port to your host computer and use the following command:
BOARD=esp32s3_usb_otg make flash ...
Usually the make system resets the board before flashing to enable the USB Serial/JTAG controller and to reboot the ESP32-S3 in download mode.
In some very special cases this reset does not work and the programmer cannot connect to the card, so the flashing is aborted with a timeout:
Serial port /dev/ttyACM0
Connecting...
...
serial.serialutil.SerialTimeoutException: Write timeout
This can happen either if RIOT is not yet installed or if the USB port was previously used with the USB OTG controller, for example with USBUS or tinyUSB. In this case, restart the board manually into download mode by pressing and releasing the RESET button while holding down the BOOT button. In download mode, the USB Serial/JTAG interface is always available.
@note If the USB port was previously used with the USB OTG controller, an automatic restart of the ESP32-S3 with the flashed application is not possible. In this case the board must be reset manually using the RESET button. In all other cases the ESP32-S3 automatically restarts with the flashed application.
Flashing the device using USB-to-UART bridge
Flashing RIOT using the USB-to-UART bridge is quite easy. The board has a Micro-USB connector with reset/boot/flash logic. Just connect the board to your host computer and type using the programming port:
BOARD=esp32s3-usb-otg make flash ... PORT=/dev/ttyUSB0
For detailed information about ESP32-S3 as well as configuring and compiling RIOT for ESP32-S3 boards, see \ref esp32_riot.
Using STDIO
By default, the USB_DEV port and the USB Serial/JTAG interface are used for
the STDIO (module stdio_usb_serial_jtag). If the USB port is used by the
USBUS stack or the tinyUSB stack, implicitly the module stdio_cdc_acm or
stdio_tinyusb_cdc_acm is used for the STDIO via the USB CDC ACM interface.
Alternatively, the USB-to-UART bridge and UART_DEV(0) could be used for the
STDIO. Simply add stdio_uart to the list of used modules for this purpose:
BOARD=esp32s3-usb-otg USEMODULE=stdio_uart make flash ...