zephyr/samples/drivers/i2s/echo
Gerard Marull-Paretas 79e6b0e0f6 includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h>
As of today <zephyr/zephyr.h> is 100% equivalent to <zephyr/kernel.h>.
This patch proposes to then include <zephyr/kernel.h> instead of
<zephyr/zephyr.h> since it is more clear that you are including the
Kernel APIs and (probably) nothing else. <zephyr/zephyr.h> sounds like a
catch-all header that may be confusing. Most applications need to
include a bunch of other things to compile, e.g. driver headers or
subsystem headers like BT, logging, etc.

The idea of a catch-all header in Zephyr is probably not feasible
anyway. Reason is that Zephyr is not a library, like it could be for
example `libpython`. Zephyr provides many utilities nowadays: a kernel,
drivers, subsystems, etc and things will likely grow. A catch-all header
would be massive, difficult to keep up-to-date. It is also likely that
an application will only build a small subset. Note that subsystem-level
headers may use a catch-all approach to make things easier, though.

NOTE: This patch is **NOT** removing the header, just removing its usage
in-tree. I'd advocate for its deprecation (add a #warning on it), but I
understand many people will have concerns.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-09-05 16:31:47 +02:00
..
boards
dts/bindings
src includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
CMakeLists.txt
Kconfig samples: i2s: echo: Remove DT_COMPAT_<compat> defines 2022-09-01 14:58:25 +00:00
README.rst
prj.conf
sample.yaml

README.rst

.. _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/