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