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,
This is a good question... Your waveforms look good except that it is not going all the way down to ground but I don't think this is a problem.
Your clock waveform is not 50/50 ( which in itself is not a problem) and the time high looks awfully close to the minimum time for SCL high which is 0.6us. Hard for me to read it exactly on your screenshot. It is a great screenshot but this specification was difficult to get off of it. You are at the max of the SCL rate, 400kHz so perhaps you should try to slow it down to something like 200kHz to see if it is time related.
I see in your schematics that you have ferrite beads/inductors between the DGND, AGND and what may be the main system ground. It is not a good idea to have the inductors on the path to ground. This will make the entire plane radiate with any high frequency currents so passing EMI spec would be difficult. So I recommend to remove those and tie all the grounds directly to one ground plane.
It looks like you have the ability to use the Selfboot feature. If you do use it you have to make sure the selfboot is complete before trying to address the part. Having an MP pin signal that the program is running is a good way to do that.
I see that your default is to stuff R17 and defeat the selfboot.
You have R31 and R26 as NC. I think you will want to stuff one of them.
Now, perhaps this is more fundamental. Did you look at Figure 21 in the datasheet? If you want to read from the part you first have to write to it the address of where you want to read from. Then you do NOT send a stop, instead you send a repeated start with the "Read" bit set. Then it will turn around the SDA pin to be an output and drive the data onto the buss with the following clocks from the master. It will continue to increment the address and send out data until it sees the stop condition.
So let me know if you make any progress.
Dave T
Hello Alon,
This is a good question... Your waveforms look good except that it is not going all the way down to ground but I don't think this is a problem.
Your clock waveform is not 50/50 ( which in itself is not a problem) and the time high looks awfully close to the minimum time for SCL high which is 0.6us. Hard for me to read it exactly on your screenshot. It is a great screenshot but this specification was difficult to get off of it. You are at the max of the SCL rate, 400kHz so perhaps you should try to slow it down to something like 200kHz to see if it is time related.
I see in your schematics that you have ferrite beads/inductors between the DGND, AGND and what may be the main system ground. It is not a good idea to have the inductors on the path to ground. This will make the entire plane radiate with any high frequency currents so passing EMI spec would be difficult. So I recommend to remove those and tie all the grounds directly to one ground plane.
It looks like you have the ability to use the Selfboot feature. If you do use it you have to make sure the selfboot is complete before trying to address the part. Having an MP pin signal that the program is running is a good way to do that.
I see that your default is to stuff R17 and defeat the selfboot.
You have R31 and R26 as NC. I think you will want to stuff one of them.
Now, perhaps this is more fundamental. Did you look at Figure 21 in the datasheet? If you want to read from the part you first have to write to it the address of where you want to read from. Then you do NOT send a stop, instead you send a repeated start with the "Read" bit set. Then it will turn around the SDA pin to be an output and drive the data onto the buss with the following clocks from the master. It will continue to increment the address and send out data until it sees the stop condition.
So let me know if you make any progress.
Dave T