174 lines
5.0 KiB
ReStructuredText
174 lines
5.0 KiB
ReStructuredText
================
|
|
ESP32-S2-Saola-1
|
|
================
|
|
|
|
The `ESP32-S2-Saola-1 <https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html>`_
|
|
is a development board for the ESP32-S2 SoC from Espressif, based on the following modules:
|
|
|
|
- ESP32-S2-WROVER
|
|
- ESP32-S2-WROVER-I
|
|
- ESP32-S2-WROOM
|
|
- ESP32-S2-WROOM-I
|
|
|
|
In this guide, we take ESP32-S2-Saola-1 equipped with ESP32-S2-WROVER as an example.
|
|
|
|
.. figure:: esp32-s2-saola-1-v1.2-isometric.png
|
|
:alt: ESP32-S2-Saola-1
|
|
:figclass: align-center
|
|
|
|
ESP32-S2-Saola-1
|
|
|
|
Features
|
|
========
|
|
|
|
- ESP32-S2-WROVER
|
|
- 4 MB external SPI flash + 2 MB PSRAM
|
|
- USB-to-UART bridge via micro USB port
|
|
- Power LED
|
|
- EN and BOOT buttons
|
|
- RGB LED (Addressable RGB LED (WS2812), driven by GPIO18)
|
|
|
|
Serial Console
|
|
==============
|
|
|
|
UART0 is, by default, the serial console. It connects to the on-board
|
|
CP2102 converter and is available on the micro-USB connector (J1).
|
|
|
|
It will show up as /dev/ttyUSB[n] where [n] will probably be 0.
|
|
|
|
Buttons and LEDs
|
|
================
|
|
|
|
Buttons
|
|
-------
|
|
|
|
There are two buttons labeled Boot and EN. The EN button is not available
|
|
to the software. It pulls the chip enable line that doubles as a reset line.
|
|
|
|
The BOOT button is connected to IO0. On reset, it is used as a strapping
|
|
pin to determine whether the chip boots normally or into the serial
|
|
bootloader. After resetting, however, the BOOT button can be used for
|
|
software input.
|
|
|
|
LEDs
|
|
----
|
|
|
|
There are two on-board LEDs. RED_LED (D5) indicates the presence of 3.3V
|
|
power and is not controlled by software. RGB LED (U6) is a WS2812 addressable
|
|
LED and is driven by GPIO18.
|
|
|
|
I2S
|
|
===
|
|
|
|
ESP32-S2 has an I2S peripheral accessible using either the generic I2S audio
|
|
driver or a specific audio codec driver
|
|
(`CS4344 <https://www.cirrus.com/products/cs4344-45-48/>`__ bindings are
|
|
available at the moment). Also, it's possible to use the I2S character device
|
|
driver to bypass audio systems and write directly to the I2S peripheral.
|
|
|
|
.. note:: When using the audio system, sample rate and data width are
|
|
automatically set by the upper half audio driver.
|
|
|
|
.. note:: The above statement is not valid when using the I2S character
|
|
device driver.
|
|
It's possible to use 8, 16, 24, and 32-bit-widths writing directly to the
|
|
I2S character device. Just make sure to set the bit-width::
|
|
|
|
$ make menuconfig
|
|
-> System Type
|
|
-> ESP32-S2 Peripheral Selection
|
|
-> I2S
|
|
-> I2S0/1
|
|
-> Bit Witdh
|
|
|
|
|
|
Configurations
|
|
==============
|
|
|
|
audio
|
|
-----
|
|
|
|
This configuration uses the I2S0 peripheral and an externally connected audio
|
|
codec to play an audio file. The easiest way of playing an uncompressed file
|
|
is embedding into the firmware. This configuration selects
|
|
`romfs example <https://github.com/apache/incubator-nuttx-apps/tree/master/examples/romfs>`__
|
|
to allow that.
|
|
|
|
**Audio Codec Setup**
|
|
|
|
The CS4344 audio codec is connected to the following pins:
|
|
|
|
============ ========== =========================================
|
|
ESP32-S2 Pin CS4344 Pin Description
|
|
============ ========== =========================================
|
|
33 MCLK Master Clock
|
|
35 SCLK Serial Clock
|
|
34 LRCK Left Right Clock (Word Select)
|
|
36 SDIN Serial Data In on CS4344. (DOUT on ESP32)
|
|
============ ========== =========================================
|
|
|
|
**ROMFS example**
|
|
|
|
Prepare and build the `audio` defconfig::
|
|
|
|
$ make -j distclean && ./tools/configure.sh esp32s2-saola-1:audio && make
|
|
|
|
This will create a temporary folder in `apps/examples/romfs/testdir`. Move
|
|
a PCM-encoded (`.wav`) audio file with 16 or 24 bits/sample (sampled at 16~48kHz)
|
|
to this folder.
|
|
|
|
.. note:: You can use :download:`this 440 Hz sinusoidal tone <tone.wav>`.
|
|
The audio file should be located at `apps/examples/romfs/testdir/tone.wav`
|
|
|
|
Build the project again and flash it (make sure not to clean it, just build)
|
|
|
|
After successfully built and flashed, load the romfs and play it::
|
|
|
|
$ nsh> romfs
|
|
$ nsh> nxplayer
|
|
$ nxplayer> play /usr/share/local/tone.wav
|
|
|
|
i2schar
|
|
-------
|
|
|
|
This configuration enables the I2S character device and the i2schar example
|
|
app, which provides an easy-to-use way of testing the I2S peripheral.
|
|
|
|
After successfully built and flashed, run on the board's terminal::
|
|
|
|
$ i2schar
|
|
|
|
The corresponding output should show related debug information.
|
|
|
|
nsh
|
|
---
|
|
|
|
Basic NuttShell configuration (console enabled in UART0, exposed via
|
|
USB connection by means of CP2102 converter, at 115200 bps).
|
|
|
|
timer
|
|
-----
|
|
|
|
This config tests the general-use purpose timers. It includes the 4 timers,
|
|
adds driver support, registers the timers as devices and includes the timer
|
|
example.
|
|
|
|
To test it, just run the following::
|
|
|
|
nsh> timer -d /dev/timerx
|
|
|
|
Where x in the timer instance.
|
|
|
|
watchdog
|
|
--------
|
|
|
|
This config test the watchdog timers. It includes the 2 MWDTs,
|
|
adds driver support, registers the WDTs as devices and includes the watchdog
|
|
example.
|
|
|
|
To test it, just run the following::
|
|
|
|
nsh> wdog -d /dev/watchdogx
|
|
|
|
Where x in the watchdog instance.
|