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



