This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

About the I2S communication with nRF52832

the signal flow is as follow: TLV320AIC23B(as ADC)——》nRF52832(TX)——》nRF52832(Rx)——TLV320AIC23B(as DAC) TLV320 works in master mode and nRF52832 works in slave mode. 48kHz sampling rate and 16bits word length. they both are set to I2S mode. I set two buffers in both tx side and rx side. one buffer(called i2s buffer) is used to store the i2s date and the buffer length is 1600 Bytes, the other buffer(called RF date buffer) is used to store the date to be transmitted and it length is 200 Bytes.

when I feed a sinewave to the ADC, i expect a pure sinewave at the output of the DAC. But the actual wave is as follow. there is a huge glitch on the wave and the glitch repeats every 12.5ms. The glitch interval(12.5ms) is just equal to the I2S buffer size.

I don't know why. Can anybody help me to solve this problem?

image description

    1. So you transfer 200 of the original 1600 samples via BLE (or some radio protocol) and then use I2S and the TLV320AIC23B to generate the output shown in the image?
    2. Have you compared the original and the output sample values?
    3. Are you doing any filtering?
    4. Could there be some data outside of your buffer that somehow makes its way to the output?
    5. What do you mean by i2s "date"?

    It is pretty peculiar how the spikes seem to point up or downwards depending on where the output is in the cycle.

Related