Can I2S component's clip detection work even when DMA is inactive?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JoBr_1593366
Level 5
Level 5
100 sign-ins 50 questions asked 100 replies posted

If I use the I2S component's clip detection, it works fine when USB audio is consuming the data from the I2S component, but if the USB Audio is inactive, or the PSoC is not connected to a USB host, the I2S data is still coming into the component, but the clip detection no longer works.

It seems that the RxDMA_ChDisable() command is what actually disables it, even though that doesn't directly control the I2S component?  It just moves the data out of the I2S component FIFO. Maybe the data in the FIFO is what is actually being read for clip detection, and not moving it out leaves it stuck on the same sample?  But it never gets stuck in the "clip detected" state.

Maybe I'm misunderstanding what actually turns off the clip detection, but the I2S lines all still have the same data on them, whether it's working or not.  I would like it to work all the time, regardless of the DMA output.

0 Likes
2 Replies
Aashita_R
Moderator
Moderator
Moderator
50 likes received 100 solutions authored 250 replies posted

Hi @JoBr_1593366 ,

As I go through PSoC 4 I2S component datasheet , I see that there would be some delay in the flushing of I2S data from the FIFO even though the RxDMA_ChDisable() API is being used.  This particular thread might interest you : Audio Streaming PSoC 4  . 

However,  to confirm that the "I2S lines all still have the same data on them, whether it's working or not", we haven't come across such scenario. I will check at my end with an application and update the results here. Apologies for the delay in response.

Best Regards,

Aashita


@Aashita_R wrote:

to confirm that the "I2S lines all still have the same data on them, whether it's working or not", we haven't come across such scenario.


I verified that the clip LED does not always function even if the I2S signal is going into the PSoC.

It seems like the clip detection is based on the value currently in the FIFO?

When RxDMA_ChDisable() the FIFO value is no longer emptied?  So it just stays constant?  Then the overflow flag is triggered.

If the I2S_In_ClearRxFIFO() is removed, then the clip LED state stays constant and does not change.

So to keep the clip LED running continually, RxDMA needs to stay active and ClearRxFIFO should not be called?

0 Likes