Of all the i.MX serials SoC, i.MX28/i.MX6UL/i.MX7D/S use Synchronous Audio Interface(SAI) to support audio applications. SAI supports I2S, AC97, TDM and code/DSP interfaces. The SAI interface consists of these signals:
SAI_MCLK ------------ used to provide working clock for external audio device , such as audio codec.
SAI_RX_BCLK ------------ bit clock for receiving channle.
SAI_RX_DATA ------------ data of receiving channel.
SAI_RX_SYNC ------------ Frame Synchronous signal of Left and right channel for receiving channel.
SAI_TX_BCLK ------------ bit clock for transmitting channel.
SAI_TX_DATA ------------ data of transmitting channel
SAI_TX_SYNC ------------ Frame Synchronous signal of Left and right channel for transmitting channel.
According to above signals, SAI has 2 channels: receive and transmit, and these 2 channels have their own clock: bit clock and frame SYNC, so they can work independently, it means PLAY and CAPTURE can be operated simultaneously, that is to say, SAI works at Asynchronous mode this moment.
In the document, we will discuss several usages of SAI on hardware design when it works at I2S(SYNC) mode. we will take i.MX6UL as an example, and for i.MX7D/S, usages are similar.
1. IOMUX of SAI
From i.MX6UL reference manual, there are 3 SAI modules in i.MX6UL: SAI1 , SAI2 & SAI3, see page 2529 in IMX6ULRM.pdf. As common applications, we will use 2 interface of SAIs.
2. Hardware connections for I2S mode
Either CPU is Master or Codec is Master, hardware connections are same.
(1) Single audio codec
(2) Dual audio codec
(3) Audio codec + Bluetooth PCM
(4) Audio codec + Bluetooth PCM + 4G PCM
[Note] Attachments are schematics of WM8958 and MAX98089, which are not released by NXP, just for users who are interested in i.MX audio applications reference. If you want to use WM98089 or WM8958, please contact their manufactures and confirm if schematics are correct, so don't use them directly for your solution.
TIC i.MX team