ArduinoCore-arc32 icon indicating copy to clipboard operation
ArduinoCore-arc32 copied to clipboard

I2S interface sample size configuration issue

Open kitsunami opened this issue 8 years ago • 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.

kitsunami avatar Aug 30 '17 22:08 kitsunami

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.

kitsunami avatar Aug 30 '17 22:08 kitsunami

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.

kitsunami avatar Aug 30 '17 22:08 kitsunami