Audio is not get

I am interfacing a TLV320AIC3204 codec EVM with an nRF54L15 board using I2S.

The codec EVM default configuration is working correctly. I verified audio on the EVM side.

Current clock configuration:

  • MCLK = 12 MHz

  • BCLK = 3 MHz

  • LRCK = 48 kHz

I am using clocks generated from the codec EVM and connecting them to the nRF54L15 board. The nRF54L15 is configured as I2S slave.

Issue:

I am not receiving ADC audio data on the nRF54L15 side. ADC values remain zero.

I am using IN3L microphone input on the codec. Codec initialization completes successfully and clocks are present. However, nRF54L15 does not receive audio samples.

Current observations:

  • Codec EVM default condition works

  • MCLK/BCLK/LRCK are measured and present

  • ADC path initialization completes

  • nRF54L15 I2S RX does not receive valid audio data

  • ADC values remain zero

Could anyone suggest what should be checked on the Nordic side (I2S configuration, pin mapping, clock slave configuration, RX trigger sequence, or other nRF54L15-specific requirements)?

const codec_register CODEC_DEF_REG_DATA[] = {

    // ---- Page 0: Reset + Clock ----
    {0,  0x00},  // Select Page 0
    {1,  0x01},  // Software reset (wait 1ms after)

    {0,  0x00},  // Select Page 0
    {4,  0x03},  // PLL_CLKIN = MCLK, CODEC_CLKIN = PLL
    {5,  0x91},  // PLL power up, P=1, R=1
    {6,  0x07},  // J=7
    {7,  0x00},  // D MSB
    {8,  0x90},  // D LSB  (D=0.144 → Fout=12MHz×7.144/2/2 = ~48kHz path)

    {27, 0x0C},  // I2S, 16-bit, codec slave

    {11, 0x82},  // NDAC=2, powered up
    {12, 0x87},  // MDAC=7, powered up
    {13, 0x00},  // DOSR MSB
    {14, 0x80},  // DOSR=128
    {18, 0x82},  // NADC=2, powered up
    {19, 0x87},  // MADC=7, powered up
    {20, 0x80},  // AOSR=128

    {29, 0x01},  // BDIV_CLKIN = DAC_CLK
    {30, 0x82},  // BCLK N=2, powered up

    // DAC & ADC processing blocks
    {60, 0x08},  // DAC PRB_P8  
    {61, 0x01},  // ADC PRB_R1

    // ---- Page 1: Analog power + MIC routing ----
    {0,  0x01},  // Select Page 1
    {1,  0x08},  // Disable weak AVDD
    {2,  0x00},  // Enable Master Analog Power Control

    {10, 0x00},  // Common mode = 0.9V  

    {71, 0x32},  // MicPGA startup delay = 3.1ms
    {123,0x01},  // REF charging time = 40ms

    {51, 0x68},  // MICBIAS: powered up (D6=1), 2.5V (D5-D4=10), from AVDD

    // Route IN3L → LEFT_P at 20kΩ  (D3-D2 = 10 = 0x08)
    {52, 0x08},  // IN3L to Left MICPGA P-terminal, 20kΩ

    // Route CM → LEFT_M at 20kΩ via CM1L  (D7-D6 = 10 = 0x80)
    {54, 0x80},  

    {59, 0x77},  // Left MICPGA: unmuted (D7=0), gain=6dB (0dB channel gain with 20kΩ)
    {60, 0x80},  // Right MICPGA: muted

    // ---- Page 0: Power up ADC ----
    {0,  0x00},  // Select Page 0
    {81, 0xC0},  // Power up Left + Right ADC
    {82, 0x00},  // Unmute ADC
    {83, 0x28},  // Left  ADC digital volume +12.5dB  
    {84, 0x1B},  // Right ADC digital volume +13.5dB  
};

Thank you.

  • Hi,

    I am not able to say much for sure, but there is one thing that sticks out. BCLK ratio looks off For stereo I2S at 48 kHz you need BCLK = 48k × 2 × WS = 1.536 MHz (16-bit) or 3.072 MHz (32-bit). 3.000 MHz isn't a valid frame length and the I2S peripheral won't latch valid samples. Double-check your codec BCLK divider (Page 0, Reg 30) — with BDIV=2 from a typical DAC_CLK path you should be getting 3.072 MHz, not 3.000 MHz.

    Other than that,

    1. can you share your configuration (most relevant pincontrol and devicetree)?
    2. Which debugging have you done?
    3. If you observe the I2S lines with a logic analyzer that can analyze I2S, what do you see? Do you see clocks as expected? What about data?
    4. Are there runtime errors? If so, which?
    5. Are there build warnings, if so which?
Related