This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x - McASP I2S not getting both channels

Other Parts Discussed in Thread: TLV320AIC3254

Hi,

I'm trying to interface a TLV320AIC3254 codec (using the EVM board) with a Beaglebone Black using AM335x McASP module configured in I2S mode.

The Beaglebone is outputting the 24MHz master clock while the codec is dealing with the word clock (set at 48kHz) and the bit clock. Right now, the codec only outputs the result of its left and right 16bits configured line in ADCs.

I feed a 440Hz sine wave to the codec and the I2S link works as expected, see the figure above (don't trust the channel 1 frequency measurement).

On the software side, I use a debian distribution where I changed :

  • tlv320aic32x4.c : to configure the codec 
  • davinci-mcasp.c : to configure the McASP module

I use arecord -f S16_LE -c2 -r48000 -d2 foo.wav to record the codec line in results.

Here is the McASP configuration:

PFUNC : 0x0
PDIR : 0x8000004
GBLCTL : 0x21f
AMUTE : 0x0
RGBLCTL : 0x21f
RMASK : 0xffff
RFMT : 0x8074
AFSRCTL : 0x110
ACLKRCTL : 0x0
AHCLKRCTL : 0x8000
RTDM : 0x3
RINTCTL : 0x80
RSTAT : 0x152
RSLOT : 0x0
RCLKCHK : 0xffff00
REVTCTL : 0x0
SRCTL0 : 0x2
ACLKXCTL : 0x180040
RFIFOCTL : 0x10101

Here is the arecord result:

  1. The left channel recording (top) is wrong
  2. The right channel recording (bottom) is not reconstructed the right way

I tried everything on the McASP side, I always have the same result (when I have a coherent result).

Any clue on what I should look at ?

Thanks