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.
Hi,
I'm using the PCM1862 with I2C and writing to individual registers goes well.
But when I read, I can only read from register 0 or continues registers from register 0.
Reading from the TAS5768 is fine.
Can you help me with any ideas about what could be wrong?
Bedst regards.
Jesper
Hi Jesper,
The PCM186X requires that you set the MSB to 1 for the register address for write register address
The process for a multi-byte read for the PCM186X should be the following:
I2C start : Slave Address W : ACK : MSB + Register Address : ACK : Repeated Start : Slave Address R : Slave Response : Host ACK : (continue clocks) Slave response : // : Stop
In an actual example, the following is reading 3 registers starting at register 0x04.
C1 is SCL and C2 is SDA. Z1 is a zoom of C2, showing the data response. As long as the clock is toggles and no stop signal is given, the PCM186X will respond with the next register's data.
Justin
Update: Issue was 'repeated start condition', see http://e2e.ti.com/support/data_converters/audio_converters/f/64/p/566447/2078591#2078591, Thanks to Brian
Hi Justin, hi all,
seems I have a similar issue here. One pcm1863 and one pcm5142 connected to a Raspberry Pi. Writing to both works, reading works only for the 5142.
Tried with MSB=0 and 1 and also reduced i2c clock to about 10kHz. Please see attached images: 1st read from 5142, 2nd read from 1863 with MSB=0 and 3rd read from 1863 with MSB=1.
Using i2c-tools i2cdump -y 1 0x4a reads 0x00 for all registers (when selected page is 0) or 0x01 for all (when selected page is 1) and so on... Where i2cdump -y 1 0x4c reads correct register values twice (repeats at adress 0x80).
I'd be very happy if someone could give me a hint what I'm doing wrong here.
Best regards,
Sebastian
Images
1) pcm5142 adress 0x4c, register 0x56, Value 0x20 ok
2) pcm1863 adress 0x4a, register 0x20 (0x20 and msb 0), actual value 0x10 but value read is 0x00 nok
3) pcm1863 adress 0x4a, register 0xa0 (0x20 and msb 1), actual value 0x10 but value read is 0x00 nok