zephyr/samples/drivers/i2s/echo
Pavel Hübner 104714394f kernel: Introduce K_MEM_SLAB_DEFINE_STATIC
As the already existing macro K_MEM_SLAB_DEFINE results in
two variable definitions, the preceding static modifier leads to
a seemingly working solution, though linkage conflicts will occur
when the same memory slab name is used across multiple modules.

The new K_MEM_SLAB_DEFINE_STATIC macro duplicates the functionality of
K_MEM_SLAB_DEFINE with the difference that the static keywords are
internally prepended before both variable definitions.

The implementation has been tested on my Zephyr project (the build
issue faded out). The documentation has been updated altogether
with all incorrect occurences of static K_MEM_SLAB_DEFINE.

Signed-off-by: Pavel Hübner <pavel.hubner@hardwario.com>
2021-11-07 05:36:48 -05:00
..
boards
dts/bindings
src kernel: Introduce K_MEM_SLAB_DEFINE_STATIC 2021-11-07 05:36:48 -05:00
CMakeLists.txt cmake: increase minimal required version to 3.20.0 2021-08-20 09:47:34 +02:00
Kconfig
prj.conf
README.rst
sample.yaml

.. _i2s_echo_sample:

I2S Echo Sample
###############

Overview
********

This sample demonstrates how to use an I2S driver in a simple processing of
an audio stream. It configures and starts both the RX and TX streams and then
mixes the original signal with its delayed form that is buffered, providing
a simple echo effect.

Requirements
************

The sample uses the WM8731 audio CODEC that can be found, for example,
on the Audio Codec Shield, but it can be easily adapted to use other
CODECs. The I2S device to be used by the sample is specified by defining
a devicetree node label named ``i2s_rxtx`` or separate node labels ``i2s_rx``
and ``i2s_tx`` if separate I2S devices are to be used for the RX and TX
streams.

This sample has been tested on :ref:`nrf52840dk_nrf52840` (nrf52840dk_nrf52840)
and :ref:`nrf5340dk_nrf5340` (nrf5340dk_nrf5340_cpuapp), using the Audio Codec
Shield, and provides overlay files for both of these boards.

More information about the used shield and the CODEC itself can be found here:

- `Audio Codec Shield`_
- `WM8731`_

Building and Running
********************

The code can be found in :zephyr_file:`samples/drivers/i2s/echo`.

To build and flash the application:

.. zephyr-app-commands::
   :zephyr-app: samples/drivers/i2s/echo
   :board: nrf52840dk_nrf52840
   :goals: build flash
   :compact:

Press Button 1 to toggle the echo effect and Button 2 to stop the streams.

.. _Audio Codec Shield: http://wiki.openmusiclabs.com/wiki/AudioCodecShield
.. _WM8731: https://www.cirrus.com/products/wm8731/