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.

TLV320ADC5140作为I2S从机,无法正常工作。读取0x76寄存器为0,显示ADC通道没有工作,读取0x15寄存器为0xff。

Other Parts Discussed in Thread: TLV320ADC5140

/* 主机给从机提供MCLK = 24.576MHz,(GPIO1管脚复用为MCLK input)BCLK= 3.072MHz,fs = 48kHz*/

void ADC_5140_Init(uint8_t tlv5140_addr)
{
I2C_Write(tlv5140_addr,ADCX140_SW_RESET,0x01); /* Reset */
I2C_Write(tlv5140_addr,ADCX140_PAGE_SELECT,0x00); /* page 0 */
I2C_Write(tlv5140_addr,ADCX140_SLEEP_CFG,0x81); /* Debice is not sleep mode */
I2C_Write(tlv5140_addr,ADCX140_SHDN_CFG,0x05); /* */
I2C_Write(tlv5140_addr,ADCX140_ASI_CFG0,0x60); /* I2S mode ,24bit*/

I2C_Write(tlv5140_addr,ADCX140_PWR_CFG,0xe0); /* power up PLL */
// I2C_Write(tlv5140_addr,ADCX140_MST_CFG0,0x60); /* */
// I2C_Write(tlv5140_addr,ADCX140_MST_CFG1,0x44);
I2C_Write(tlv5140_addr,ADCX140_CLK_SRC,0x58); /* */
I2C_Write(tlv5140_addr,ADCX140_GPIO_CFG0,0xa6); /* GPIO1 provide MCLK = 24.516MHz*/



I2C_Write(tlv5140_addr,ADCX140_ASI_CH1,0x00); /* I2S mode*/
I2C_Write(tlv5140_addr,ADCX140_CH1_CFG0,0x04); /* Analog single-ended input for channel 1 */
I2C_Write(tlv5140_addr,ADCX140_CH1_CFG1,0x28); /* input 40dB,step 1dB*/
I2C_Write(tlv5140_addr,ADCX140_CH1_CFG2,0xff); /* output 27dB, setp -0.5dB*/

I2C_Write(tlv5140_addr,ADCX140_ASI_CH2,0x00); /* I2Smode */
I2C_Write(tlv5140_addr,ADCX140_CH2_CFG0,0x04); /* channel2 */
I2C_Write(tlv5140_addr,ADCX140_CH2_CFG1,0x28);
I2C_Write(tlv5140_addr,ADCX140_CH2_CFG2,0xff);

I2C_Write(tlv5140_addr,ADCX140_ASI_CH3,0x02); /* I2Smode */
I2C_Write(tlv5140_addr,ADCX140_CH3_CFG0,0x04); /* channel3 */
I2C_Write(tlv5140_addr,ADCX140_CH3_CFG1,0x28);
I2C_Write(tlv5140_addr,ADCX140_CH3_CFG2,0xff);

I2C_Write(tlv5140_addr,ADCX140_IN_CH_EN,0xe0); /* channel1 、channel2 channel3 input en */
I2C_Write(tlv5140_addr,ADCX140_ASI_OUT_CH_EN,0xe0); /* channel1 、channel2 channel3 output en */

}