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.

TLV320ADC3120: Getting wierd ADC data and DC offset of the INPUT if it is floating.

Part Number: TLV320ADC3120


Tool/software:

I created a small PCB using the TLV320ADC3120. 
The inputs are set as single ended Input, INX-M tied to GND.

SIGNALS:

VREF: 2.50V

AREF: 1.80V

AVDD: 3.37V

VDD: 3.41V

All seem pretty stable, hence why i did not attach a screenshot of my scope.

What am I trying to measure:

Currently a 18.9 kHz Signal, 90mV PP (0V to 90mV), no DC offset.

The signal is coupled directly to IN2 with a 1kOhm Resistor.

IN1 is floating at the Moment.

Circuit

Configuration:

I am using a STM32L533 for communication with the ADC. It is configured using I2C and Data is transferred using SAI.

data[0]=(SW_RESET_RESET);
HAL_I2C_Mem_Write(&hi2c1,0x9c,SW_RESET_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(SLEEP_CFG_AREG_SELECT_INTERNAL | SLEEP_CFG_SLEEP_ENZ_ACTIVE|SLEEP_CFG_VREF_QCHG_100_MS);
HAL_I2C_Mem_Write(&hi2c1,0x9c,0x02,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(ASI_CFG0_WLEN_32_BITS);
HAL_I2C_Mem_Write(&hi2c1,0x9c,ASI_CFG0_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(BIAS_CFG_MBIAS_VAL_VREF);
HAL_I2C_Mem_Write(&hi2c1,0x9c,   BIAS_CFG_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(IN_CH_EN_CH1_ENABLED | IN_CH_EN_CH2_ENABLED);
HAL_I2C_Mem_Write(&hi2c1,0x9c,IN_CH_EN_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(ASI_OUT_CH_EN_CH1_ENABLED | ASI_OUT_CH_EN_CH2_ENABLED);
HAL_I2C_Mem_Write(&hi2c1,0x9c,ASI_OUT_CH_EN_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(CH1_CFG0_INTYP_LINE | CH1_CFG0_INSRC_SINGLE |CH1_CFG0_DC_DC  );
HAL_I2C_Mem_Write(&hi2c1,0x9c,CH1_CFG0_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(CM_TOL_CFG_CH2_INP_FULL |CM_TOL_CFG_CH1_INP_FULL);
HAL_I2C_Mem_Write(&hi2c1,0x9c,CM_TOL_CFG_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(CH1_CFG2_DVOL_MUTE);
HAL_I2C_Mem_Write(&hi2c1,0x9c, CH1_CFG2_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(CH2_CFG2_DVOL_0dB);
HAL_I2C_Mem_Write(&hi2c1,0x9c, CH2_CFG2_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(CH2_CFG0_INTYP_LINE | CH2_CFG0_INSRC_SINGLE |CH2_CFG0_DC_DC );
HAL_I2C_Mem_Write(&hi2c1,0x9c,CH2_CFG0_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);
data[0]=(PWR_CFG_ADC_PDZ_ON |  PWR_CFG_PLL_PDZ_ON | PWR_CFG_MICBIAS_PDZ_OFF );
HAL_I2C_Mem_Write(&hi2c1,0x9c,PWR_CFG_ADDRESS,I2C_MEMADD_SIZE_8BIT,data,1,100);


Channel 1 is Muted, since I wanted to verify that my SAIconfiguration is working and correct.
SAI is configured to 96kHz Master Receive on the STM32 side.
The data I receive is this:
The 0 are correct since channel 1 is muted. But on Channel 2 I am not measureing my signal. As you can see, thavalues are jumping between a positive and a negative value.
In the data you see, I tied the IN2_P directly to GND so i should measure a somehow stable value. If i connect my signal the values look really similar.



If i am measureing the Open Circuit IN1-P i read a DC offset on that pin of 1.47V. On Pin 2 it is 0.45V when my signal is connected (or 0V if IN2 is grounded).
I am sure i misconfigured something. Does anybody have a hint for me?

  • Hi

    Today is a U.S. holiday so our engineers in the U.S. will get back to you no later than tomorrow.

    Thank you for your patience,

    Jeff McPherson

  • Hi,

    I suggest changing vref cap to 1uf.

    Assuming the rest of the schematic has recommended components, I suggest confirming that the CHx_CFG registers write for DC coupled and Single-ended configuration, (example: CH1_CFG = 0X58).

    For troubleshooting, I suggest validating operation at 48kHz or for 96k ensuring that I2S clocks match supported frequencies shown in table 8-6 of the datasheet. I would also suggest a larger input signal during this test, at least 100mVRMS.

    We also dont recommend to leave analog inputs floating and to have a provision to AC couple to GND if unused.