This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 9b5516846282d2f11dce65c12d22473255668fff Author: Tiago Medicci Serrano <[email protected]> AuthorDate: Fri Nov 11 14:21:04 2022 -0300 documentation: update ESP32's documentation about the I2S RX mode --- .../xtensa/esp32/boards/esp32-devkitc/index.rst | 105 +++++++++++++++++++-- 1 file changed, 95 insertions(+), 10 deletions(-) diff --git a/Documentation/platforms/xtensa/esp32/boards/esp32-devkitc/index.rst b/Documentation/platforms/xtensa/esp32/boards/esp32-devkitc/index.rst index 0016fbe37c..5a186f8650 100644 --- a/Documentation/platforms/xtensa/esp32/boards/esp32-devkitc/index.rst +++ b/Documentation/platforms/xtensa/esp32/boards/esp32-devkitc/index.rst @@ -110,8 +110,10 @@ I2S ESP32 has two I2S peripherals 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. +available at the moment). The generic I2S audio driver enables using both +the receiver module (RX) and the transmitter module (TX) without using any +specific codec. Also, it's possible to use the I2S character device driver +to bypass the audio subsystem and write directly to the I2S peripheral. .. note:: The I2S peripheral is able to work on two functional modes internally: 16 and 32-bit width. @@ -134,6 +136,11 @@ driver to bypass audio systems and write directly to the I2S peripheral. aligned to the next boundary i.e. 16 bits for the 8 and 16-bit-widths and 32 bits for 24 and 32-bit-widths. +The following configurations use the I2S peripheral:: + * :ref:`platforms/xtensa/esp32/boards/esp32-devkitc/index:audio` + * :ref:`platforms/xtensa/esp32/boards/esp32-devkitc/index:i2schar` + * :ref:`platforms/xtensa/esp32/boards/esp32-devkitc/index:nxlooper` + Pin Mapping =========== @@ -189,15 +196,15 @@ browser: After successfully built and flashed, connect the board to the Wi-Fi network:: - $ nsh> wapi psk wlan0 mypasswd 1 - $ nsh> wapi essid wlan0 myssid 1 - $ nsh> renew wlan0 + nsh> wapi psk wlan0 mypasswd 1 + nsh> wapi essid wlan0 myssid 1 + nsh> renew wlan0 Once connected, open NuttX's player and play the file according to its file name and the IP address of the HTTP server:: - $ nsh> nxplayer - $ nxplayer> play http://192.168.1.239:8000/tones.wav + nsh> nxplayer + nxplayer> play http://192.168.1.239:8000/tones.wav efuse ----- @@ -208,12 +215,35 @@ 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 (I2S0 -on this example). +app, which provides an easy-to-use way of testing the I2S peripherals (I2S0 +and I2S1), enabling both the TX and the RX for those peripherals. + +**I2S0 pinout** + +========== ========== ========================================= +ESP32 Pin Signal Pin Description +========== ========== ========================================= +0 MCLK Master Clock +4 BCLK Bit Clock (SCLK) +5 WS Word Select (LRCLK) +18 DOUT Data Out +19 DIN Data IN +========== ========== ========================================= + +**I2S1 pinout** + +========== ========== ========================================= +ESP32 Pin Signal Pin Description +========== ========== ========================================= +22 BCLK Bit Clock (SCLK) +23 WS Word Select (LRCLK) +25 DOUT Data Out +26 DIN Data IN +========== ========== ========================================= After successfully built and flashed, run on the boards's terminal:: - $ i2schar + i2schar -p /dev/i2schar[0-1] The corresponding output should show related debug informations. @@ -319,6 +349,61 @@ nsh Basic NuttShell configuration (console enabled in UART0, exposed via USB connection by means of CP2102 converter, at 115200 bps). +nxlooper +-------- + +This configuration uses the I2S1 peripheral as an I2S receiver and the I2S0 +peripheral as an I2S transmitter. The idea is to capture an I2S data frame +using an I2S peripheral and reproduce the captured data on the other. + +**Receiving data on I2S1** + +The I2S1 will act as a receiver (master mode), capturing data from DIN, which +needs to be connected to an external source as follows: + +========== ========== ========================================= +ESP32 Pin Signal Pin Description +========== ========== ========================================= +22 BCLK Bit Clock (SCLK) +23 WS Word Select (LRCLK) +26 DIN Data IN +========== ========== ========================================= + +**Transmitting data on I2S0** + +The I2S0 will act as a transmitter (master mode), replicating the data +captured on I2S1. The pinout for the transmitter is as follows: + +========== ========== ========================================= +ESP32 Pin Signal Pin Description +========== ========== ========================================= +0 MCLK Master Clock +4 BCLK Bit Clock (SCLK) +5 WS Word Select (LRCLK) +18 DOUT Data Out +========== ========== ========================================= + +.. note:: The audio codec CS4344 can be connected to the transmitter pins + to reproduce the captured data if the receiver's source is an audio data. + +**nxlooper** + +The `nxlooper` application captures data from the audio device with receiving +capabilities (the I2S1 on this example) and forwards the audio data frame to +the audio device with transmitting capabilities (the I2S0 on this example). + +After successfully built and flashed, run on the boards's terminal:: + + nsh> nxlooper + nxlooper> loopback + +.. note:: `loopback` command default arguments for the channel configuration, + the data width and the sample rate are, respectively, 2 channels, + 16 bits/sample and 48KHz. These arguments can be supplied to select + different audio formats, for instance:: + + nxlooper> loopback 2 8 44100 + ostest ------
