I2S interface sample size configuration issue
kitsunami opened this issue · 2 comments
The only sample size it is supporting is 32 bit right now.
| Master/Slave | Transmit/Receive | Comments |
|---|---|---|
| Master | Transmit | Curie drives the I2S in 32 bit sample size only. |
| Have not found a Slave device that could not take 32 bit sample size. | ||
| Master | Receive | Could not find a transmitter that operates in Slave mode to test this combination. |
| Slave | Transmit | Could not find a receiver that operates in Master mode. |
| Slave | Receive | Curie works with variable sample size input. |
| Curie put the captured sample in 32 bit format with upper unused bits set to 0's. |
Streaming audio sample via DMA to the I2S Controller ran into underrun condition which resulted in glitching the I2S Serial Clock. The I2S output was connected to an amplifier to drive a pair of speakers. Due to the glitching of the I2S clock, the audio output was distorted.
Indeed, the emptying of the I2S FIFO causes the I2S h/w interface to go into error mode and resetting the h/w module is required thereafter. As a consequent, the physical I2S connection is disrupted and the target device(s) has to re-sync on the following transaction. This process causes the losing of data samples.
The DMA streaming implementation eliminated the disruption of the I2S connection.