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.
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)|
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 -D plughw:CARD=imxaudioes9023,DEV=0 sample.wav Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo