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