1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/boards/esp32s3-pros3/doc.txt
2023-09-29 09:01:12 +02:00

193 lines
7.7 KiB
Plaintext

/*
* Copyright (C) 2023 Gunar Schorcht
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @defgroup boards_esp32s3_pros3 ESP32 ProS3 Board
* @ingroup boards_esp32s3
* @brief Support for the ESP32 ProS3 board
* @author Gunar Schorcht <gunar@schorcht.net>
\section esp32s3_pros3 ESP32 ProS3
## Table of Contents {#esp32s3_pros3_toc}
1. [Overview](#esp32s3_pros3_overview)
2. [Hardware](#esp32s3_pros3_hardware)
1. [MCU](#esp32s3_pros3_mcu)
2. [Board Configuration](#esp32s3_pros3_board_configuration)
3. [Board Pinout](#esp32s3_pros3_pinout)
3. [Flashing the Device](#esp32s3_pros3_flashing)
4. [Using STDIO](#esp32s3_pros3_stdio)
## Overview {#esp32s3_pros3_overview}
The ESP32 ProS3 is one of the ESP32-S3 boards from Unexpected Maker.
\image html https://esp32s3.com/images/main_features_pros3.jpg "ESP32 ProS3" width=800px
The main features of the board are:
- ESP32-S3 SoC with 2.4 GHz WiFi 802.11b/g/n and Bluetooth5, BLE
- 16 MByte Flash
- 8 MByte QSPI RAM
- RGB LED WS2812B
- Native USB and USB Serial JTAG
- LiPo Battery Charging and PicoBlade connector
- VBAT and 5V Sensing Pins
- 3D High Gain Antenna
[Back to table of contents](#esp32s3_pros3_toc)
## Hardware {#esp32s3_pros3_hardware}
This section describes
- the [MCU](#esp32s3_pros3_mcu),
- the default [board configuration](#esp32s3_pros3_board_configuration),
- the [board pinout](#esp32s3_pros3_pinout).
[Back to table of contents](#esp32s3_pros3_toc)
### MCU {#esp32s3_pros3_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".
[Back to table of contents](#esp32s3_pros3_toc)
### Board Configuration {#esp32s3_pros3_board_configuration}
ESP32 ProS3 boards have no special hardware on board with the exception
of a single pin RGB-LED WS2812B that uses a special bit-oriented protocol to
control the RGB-LED by 24-bit RGB values which is not supported yet.
Most GPIOs are broken out on the board for flexibility. The default board
configuration provides:
- 10 x ADC channels at maximum
- 1 x SPI
- 1 x I2C
- 1 x UART
- 2 x PWM, 4 channels each
- 1 x RGB-LED
For flexibility, some GPIOs are used in different peripheral configurations,
but they can only be used for one peripheral at a time. For example, GPIO9
is used in the ADC channel definition and the definition of the SCL signal
for I2C_DEV(0).
This is possible because GPIOs are only used for a specific peripheral
interface when either
- the corresponding peripheral module is used, e.g. `periph_i2c`, or
- the corresponding init function is called, e.g. `adc_init`.
That is, the purpose for which a GPIO is used depends on which module
or function is used first.
For example, if module `periph_i2c` is not used, the GPIOs listed in I2C
configuration can be used for the other purposes, that is, GPIO9 can be
used as ADC channel.
The following table shows the default board configuration, which is sorted
according to the defined functionality of GPIOs. This configuration can be
overridden by \ref esp32_application_specific_configurations
"application-specific configurations".
<center>
Function | GPIOs | Remarks | Configuration
:---------------|:-------|:--------|:----------------------------------
BTN0 | GPIO0 | labeled as BOOT button | |
ADC_LINE(n) | GPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO10 | | \ref esp32_adc_channels "ADC Channels"
PWM_DEV(0) | GPIO12, GPIO13, GPIO14, GPIO15, GPIO16 | - | \ref esp32_pwm_channels "PWM Channels"
PWM_DEV(1) | GPIO6, GPIO7, GPIO21, GPIO38 | - | \ref esp32_pwm_channels "PWM Channels"
I2C_DEV(0) SCL | GPIO9 | | \ref esp32_i2c_interfaces "I2C Interfaces"
I2C_DEV(0) SDA | GPIO8 | | \ref esp32_i2c_interfaces "I2C Interfaces"
SPI_DEV(0) CLK | GPIO36 | SPI2_HOST (FSPI) is used | \ref esp32_spi_interfaces "SPI Interfaces"
SPI_DEV(0) MISO | GPIO37 | SPI2_HOST (FSPI) is used | \ref esp32_spi_interfaces "SPI Interfaces"
SPI_DEV(0) MOSI | GPIO35 | SPI2_HOST (FSPI) is used | \ref esp32_spi_interfaces "SPI Interfaces"
SPI_DEV(0) CS0 | GPIO34 | SPI2_HOST (FSPI) is used | \ref esp32_spi_interfaces "SPI Interfaces"
UART_DEV(0) TxD | GPIO43 | Console (configuration is fixed) | \ref esp32_uart_interfaces "UART interfaces"
UART_DEV(0) RxD | GPIO44 | Console (configuration is fixed) | \ref esp32_uart_interfaces "UART interfaces"
</center>
\n
For detailed information about the peripheral configurations of ESP32-S3
boards, see section \ref esp32_peripherals "Common Peripherals".
[Back to table of contents](#esp32s3_pros3_toc)
### Board Pinout {#esp32s3_pros3_pinout}
The following figure shows the pinout as configured by board definition.
@image html https://esp32s3.com/images/pins_pros3.jpg "ESP32 ProS3C-1 Pinout" width=900px
The corresponding board schematic can be found
[here](https://github.com/UnexpectedMaker/esp32s3/raw/main/schematics/schematic-pros3.pdf)
[Back to table of contents](#esp32s3_pros3_toc)
## Flashing the Device {#esp32s3_pros3_flashing}
Since the board does not have a USB-to-Serial chip, the easiest way to flash
the board is using the USB Serial/JTAG interface. Just connect the board to
your host computer and use the following command:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BOARD=esp32s3-pros3 make flash ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@note Usually the make system resets the board before flashing to enable the
USB Serial/JTAG interface. In some special cases this reset does not work so
that the programmer cannot connect to the board and the flashing is aborted
with a timeout:
```
Serial port /dev/ttyACM0
Connecting...
...
serial.serialutil.SerialTimeoutException: Write timeout
```
This can happen for example if the board is not yet flashed with RIOT or the
USB interface is used for another purpose. In this case, restart the board
manually in 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.
Alternatively, an external USB-to-Serial adapter can be used. In this case,
the USB-to-Serial adapter has to be connected to TxD (GPIO43) and RxD (GPIO44)
of the UART0 interface. Before RIOT can be flashed, the board has to be
switched to download mode. To do this, press and release the RESET button
while holding down the BOOT button. Once the board is in download mode, use
the following command to flash RIOT:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BOARD=esp32s3-pros3 make flash ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For detailed information about ESP32-S3 as well as configuring and compiling
RIOT for ESP32-S3 boards, see \ref esp32_riot.
[Back to table of contents](#esp32s3_pros3_toc)
## Using STDIO {#esp32s3_pros3_stdio}
Since the board does not have a USB-to-Serial chip, the USB Serial/JTAG
interface is used by default for the STDIO (module `stdio_usb_serial_jtag`)
which provides an USB CDC ACM interface.
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 UART interface could be used with an external USB-to-Serial
adapter. Simply add `stdio_uart` to the list of used modules for this purpose:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BOARD=esp32s3-pros3 USEMODULE=stdio_uart make flash ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/