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.

TLV320AIC3104 I2C reading time sequence

Other Parts Discussed in Thread: TLV320AIC3104

Hi All,

My customer is using TLV320AIC3104, and using I2C to read the register but now encounter with a problem.

Problem description:

The reading process is as below.

 start + slave Addr + write flag + reg addr + stop      +    start  +   slave Addr + read flag + read data + stop ; 

(Note that, i highlight the stop bit)

But the data red out is not the data of current address, but address+1. For example

1、send slave  address(write flag);  à 0x30

2、send register address;                 à0x02

3、send slave addess(read flag);      à0x30

4、read back register value;             à 0x91

 Actual : addr:0x02 à  value:0xaa

The waveform capture by scope is as below

However, if we didn't send an stop bit after sending out the slave address at step 2, and send start signal directly the data can be read correctly

start + slave Addr + write flag + reg addr    (no stop here) +    start  +   slave Addr + read flag + read data + stop ; 

We checked the datasheet sequence, there is only time sequence without the stop bit

Question:

1. Does our TLV320AIC3104 support the reading sequence with the stop bit?

2. If it doesn't support the reading sequence with the stop bit, will it cause the phenomenon that the data at address+1 will be read out when reading data at address(the problem described at first).

Thank you very much.

Best Regards

Charles Zhang