ADAU1701
Production
The ADAU1701 is a complete single-chip audio system with a 28-/56-bit audio DSP, ADCs, DACs, and microcontroller-like control interfaces. Signal processing...
Datasheet
ADAU1701 on Analog.com
Hi
My customer is trying to initiate an i2c read from adau1701.
Addr0==Addr1=0 => Write addr = 0x68, Read addr = 0x69.
Sequence looks like he indeed sends 0x69, however adaqu1701 doesn't send an ack (pulls SDA low on 9th clock)
Attached are read sequence & schematics.
Similar write sequence (sending 0x68) produces the required ack.
Please advise
BR,
Alon
Hello Alon,
I explained this all above but I will repeat. You must write the address of where you want to read data from first.
So what is going on is that they are sending a read command and the 1701 is saying "Read What? you never gave me an address!" and not acknowledging.
This is documented. Here is a screenshot from the 1701 datasheet:
Look at figure 24. This is what needs to be sent"
Start condition,
Chip address with R/W = 0 which is a write command
1701 will ACK
Send the high byte of the address
1701 will ACK
Send the low byte of the address
1701 will ACK
Repeat the start condition
Send chip address with R/W = 1 which is a read command
1701 will ACK
Send clocks and 1701 will output data
Master will send an ACK but the 1701 will ignore this ACK since there is nothing it can do about it should it not arrive.
If you send another set of clocks then it will increment the address and send out another byte.
Master will ACK
this will continue until a stop condition is sent by the master.
The next time they need to read this all has to start over.
Dave T
Hello Alon,
I explained this all above but I will repeat. You must write the address of where you want to read data from first.
So what is going on is that they are sending a read command and the 1701 is saying "Read What? you never gave me an address!" and not acknowledging.
This is documented. Here is a screenshot from the 1701 datasheet:
Look at figure 24. This is what needs to be sent"
Start condition,
Chip address with R/W = 0 which is a write command
1701 will ACK
Send the high byte of the address
1701 will ACK
Send the low byte of the address
1701 will ACK
Repeat the start condition
Send chip address with R/W = 1 which is a read command
1701 will ACK
Send clocks and 1701 will output data
Master will send an ACK but the 1701 will ignore this ACK since there is nothing it can do about it should it not arrive.
If you send another set of clocks then it will increment the address and send out another byte.
Master will ACK
this will continue until a stop condition is sent by the master.
The next time they need to read this all has to start over.
Dave T