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.

CCS/TLV320AIC3106: Audio playback issue with CC3200 I2S

Part Number: TLV320AIC3106
Other Parts Discussed in Thread: CC3200,

Tool/software: Code Composer Studio

Hi,

I am working on TLV320AIC3106 interfaced with CC3200's I2S port. I could read I2S data send out from the audio codec and I've sent it to cloud and is working fine. There is also a speaker in my application. For testing the speaker I bypassed Line2LP/M to MONOLOP and it did work fine. Now I need to play audio which is sending from the processor to TLV320aic3106. but this is not working unfortunately. Data is sending to the audio codec, which I verified using oscilloscope. Please see the register configuration below and check whether I missed anything? 

    AudioCodecPageSelect((unsigned char )0x00);
    AudioCodecRegWrite((unsigned char) CODEC_SW_RESET, codecPage0Regs.SW_RESET);
    // clock generation and control
    AudioCodecRegWrite((unsigned char) CODEC_CLOCK_GENERATION_CONTROL, (unsigned char) 0x02); // CODEC_CLKIN uses MCLK(CLKDIV_OUT)
    AudioCodecRegWrite((unsigned char) CODEC_ADDITIONAL_GPIO_CONTROL_B, (unsigned char)0x01);
    //   AudioCodecRegWrite((unsigned char) CODEC_PLL_A, 0x91);// CODEC_PLL_A_RESETVAL);
 //   AudioCodecRegWrite((unsigned char) CODEC_PLL_B, 0x60); // J value 24
 //   AudioCodecRegWrite((unsigned char) CODEC_PLL_C, 0x09);
 //   AudioCodecRegWrite((unsigned char) CODEC_PLL_D, 0x00);

    AudioCodecRegWrite((unsigned char) CODEC_GPIO1_CONTROL, 0x28);// 0x28);   // clock out on gpio1 pin

    AudioCodecRegWrite((unsigned char) CODEC_SAMPLE_RATE,0x00);//0xAA);  // fs = fsref/n

    AudioCodecRegWrite((unsigned char) CODEC_MIC_BIAS_CONTROL, 0xC0);// (unsigned char)0xC0);  // MIC bias

    //When selecting an input, unmute the PGAs after routing the input and powering up the ADC.
    AudioCodecRegWrite((unsigned char) CODEC_LINE2L_LEFT_ADC_CONTROL, 0x80);
    AudioCodecRegWrite((unsigned char) CODEC_LINE1L_LEFT_ADC_CONTROL, 0x7C);  // power up left ADC
    AudioCodecRegWrite((unsigned char) CODEC_LEFT_ADC_PGA_GAIN_CONTROL, 0x00); // unmute PGA



    //================================================================= Speaker configurations
    // ==== bypass
    /*
    AudioCodecRegWrite((unsigned char)CODEC_HIGH_POWER_OUTPUT_STAGE_CONTROL,0xF0);
    AudioCodecRegWrite((unsigned char)CODEC_LINE2L_MONO_LOPM_VOLUME_CONTROL,0x80);
    AudioCodecRegWrite((unsigned char)CODEC_MONO_LOPM_OUTPUT_LEVEL_CONTROL,0x99);
    AudioCodecRegWrite((unsigned char)CODEC_LEFT_DAC_DIGITAL_VOLUME_CONTROL,0x00);
    */

    AudioCodecRegWrite((unsigned char)CODEC_HIGH_POWER_OUTPUT_STAGE_CONTROL,0xC0);

    AudioCodecRegWrite((unsigned char)CODEC_DAC_POWER_OUTPUT_DRIVER_CONTROL,0x88);
    AudioCodecRegWrite((unsigned char)CODEC_LEFT_DAC_DIGITAL_VOLUME_CONTROL,0x00);
    AudioCodecRegWrite((unsigned char)CODEC_DACL1_MONO_LOPM_VOLUME_CONTROL,0x80);

    AudioCodecRegWrite((unsigned char)CODEC_MONO_LOPM_OUTPUT_LEVEL_CONTROL,0x99);
SET_MONO:
    AudioCodecRegRead((unsigned char) CODEC_MONO_LOPM_OUTPUT_LEVEL_CONTROL, (unsigned char *) &temp_readptr, (unsigned int) 0x02);
    if((temp_readptr&0x01)==0x01){
        monolop_success=1;
    }
    else
        goto SET_MONO;

Thanks & regards,

Vishnu Pradeep