I have connected an AD5752 to an SPI bus in which there are a number of devices, for example an EEPROM. When the DAC is not connected, everything works fine, but when I connect it, I just get 0s every time I read data from the EEPROM. I am keeping the AD5752 SYNC signal high, but its SDO line is always low, so I guess that is the reason why I am just reading 0s. I am not using a daisy chain by the way.
Is the AD5752 is sending data (zeros from its internal registers) because of the clock pulses even though SYNC is kept high?
Thanks in advance!
What are the states of the other digital lines? Are they sharing the same line as the SYNC signal? To be able to help you efficiently, would you be able to provide a schematic of your work?
Thanks for your prompt response. Unfortunatelly I am not allowed to provide the schematic... Anyway, the SYNC signal is not shared at all, it is just wired from the uC to the DAC. Actually every single chip has its own dedicated chip select signal . The MOSI, MISO and SCK signals are shared by all the devices.
Therefore whenever I try to read data from the EEPROM, the SCK and MOSI signals are switched and the uC reads the data from the MISO, which is always LOW if the DAC is connected (even though SYNC is HIGH).
I believe that the AD5752 does not send any data on the SDO pin when SYNC pin is held high. The device will hold the default value for that pin, in this case, the SDO will be always low if there is no valid communication to the part.
Would you be able to try disconnect only the SDO pin od AD5752 and try if the whole system will work, especially with the EEPROM? This is just to isolate if the AD5752's SDO pin is the one causing the ALL 0s.
Thank you again. I disconnected the SDO pin (keeping SDI and the clock connected) and everything works fine, I got the data from the EEPROM as expected. I double checked that SYNC was high, and at the very moment I connect the DAC SDO pin, I do not get the data properly, just 0s.
I am pretty sure that the SDO pin is keeping the MISO line low, but I do not know why.
I would recommend you to use a tri-state buffer between the SDO pin of the device and the SDO line. It's diagram is similar to the one shown below.
You may invert the SYNC line and let it be your control signal. This way, the SDO line will not be pulled down by the AD5752 and will let you read the EEPROM data without a problem.
In the meantime, I would verify the design of the part from our designers and will get back to you as soon as possible.
Please let me know if you have any other questions.