I2S
I²S (Inter-IC Sound), pronounced I-squared-S, is an electrical serial bus interface standard used for connecting digital audio devices together. It is used to communicate PCM audio data between integrated circuits in an electronic device. The I²S bus separates clock and serial data signals, resulting in a lower jitter than is typical of communications systems that recover the clock from the data stream. Alternatively I²S is spelled I2S (pronounced I-two-S) or IIS (pronounced I-I-S). Despite the name, it is unrelated to the bidirectional I²C bus.
From Wikipedia.
Pins
The IMX6 SoC provides those pins for I2S:
- TXFS: Transmit Frame Select
- TXC: Transmit Bit Clock
- TXD: Transmit Data
- RXFS: Receive Frame Select
- RXC: Receive Bit Clock
- RXD: Receive Data
TXFS | TXC | TXD | RXFS | RXC | RXD | Default core at boot | |
---|---|---|---|---|---|---|---|
AUD6 | 31 | 27 | 26 | 30 | 29 | 25 | A9 (gpio mode) |
Example
Thanks to the I²S bus we can use audio codecs, such as DACs, with our UDOO
Neo enabling it via I2S. As an example, we had already set a ESS 9023 DAC card on that
bus, so you can use it plug and play.
Note: the RX Pins are not enabled (only out).
To do so, just open the Device Tree Editor and enable the AUD pins. At the next reboot, you will see an audio card installed in ALSA (even if it's not plugged).
# aplay -L
...
...
sysdefault:CARD=imxaudioes9023
imx-audio-es9023,
Default Audio Device
dmix:CARD=imxaudioes9023,DEV=0
imx-audio-es9023,
Direct sample mixing device
dsnoop:CARD=imxaudioes9023,DEV=0
imx-audio-es9023,
Direct sample snooping device
hw:CARD=imxaudioes9023,DEV=0
imx-audio-es9023,
Direct hardware device without any conversions
plughw:CARD=imxaudioes9023,DEV=0
imx-audio-es9023,
Hardware device with all software conversions
To play simple audio WAV samples just use aplay
.
# aplay -D plughw:CARD=imxaudioes9023,DEV=0 sample.wav
Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo