Does anybody have tried to use I2C bus with a AD5390 ?
I'm trying to do so with a raspberry pi but got no answer from e device. I have other
devices connected to the bus which are answering (DS1631, DS3231M), I'm using
Can you show a logic analyzer or oscilloscope trace of your communication attempt?
Besides what Klaus has suggested, could you also share your schematic diagram?
The image shows the beggining of the signals (SCL and SDA) when I issue a "i2cdetect -y 1" command from the
raspbpi. I send you the schematics directly by email, I could't attach a pdf :-(
In the schematics you have received, I've connected just the 3.3V (p3v3) AD0 and AD1 to gnd (address 0x54)
SCL and SDA to rasppi lines (internally pulled up). All other pins (but gnd) are NC.
The command you have shown is not sending the correct address for the AD5390, which is why you get a NACK.
Please send us a trace with the address field set to what your part is actually wired up to (10101(AD1)(AD0).
The i2cdetect -y -1 command goes through all the possible addresses and shows the ones that ACK the address byte. This should work for getting an initial response, but for actual communication with the DAC, you will need to meet its command format requirements.
Also, it is very difficult to see on the small screen shot, but some of your clock transitions look very close to the data transitions. Please make sure that you meet setup and hold times.
You will also need to connect +3.3V to the power supply pins. Also the digital pins need to be connected correctly, PD and SPI/I2C need to be connected to GND, CLR and RESET need to be connected to +3V. LDAC can be tied high or low depending on how you want the part to operate. You will also need to connect a reference unless you plan to use the internal one - which must be turned on with an I2C command.
First of all, thanks or your help and interest in my problem. I've tried and checked all signals, no answer.
So I've decided to switch back to SPI. Just a last image showing timings querying the DS1631 at address 0x48 (command: i2cdetect -y 1 72 72).
Regards and thanks again,
The timing you show is very marginal. The standard allows for data hold times of 0ns to 900ns and yours looks like it's right at 0.
It seems to be working for the DS1631, but maybe it's too close to the edge for the AD5390...
You're right. Though the data hold time is 200ns it's maybe too short for the AD5390, as the manual states (p13, table 7) that the master must provide at least 300ns.
Eventually I switched to bcm2835 C library, it works fine (350ns hold time) ! thanks for your help.
Retrieving data ...