Question
I have a question about the I²C interface of the AD5671R. Do I have to readbackthe Acknowledge-bit? In the datasheet is written:"The slave device with the transmitted address responds by pulling SDA low during the ninth clock pulse (this is called the acknowledge bit, or ACK).At this stage, all other devices on the bus remain idle while the selected device waits for data to be written to or read from its input shiftregister."I only have a one direction comminication. And I am not able to set my output to tristate. Is it possible to drive the SDA signal low by the masterat the 9th bit?
Answer
Please find the answer below.
It’s not possible to disable the ACK bit in I2C, it’s an integral part of the protocol that all compliant parts are required to support. There’s twoapproaches to take with thisFirst – I would recommended you to use the I2C bus as intended. If you have already checked with the FPGA manufacturer, then I’d suggest checking tosee how the pins on the FPGA can be made Hi-Z so that the pin can be used in the open-drain configuration. Based on few FPGAs which were used, it wasobserved that this a very common almost standard feature. Please note that the ACK serves a very useful purpose in helping to debug the connectionto the device. If there are timing/addressing issues, you want to be able to see if the device is actually ACK’ing the bus traffic you’re sending.If the FPGA is holding SDA low for the ACK, then that information is lost.From a development point of view, it can help to debug the I2C master in the FPGA and show if the DAC is receiving the message correctly. Ignoringor blanking out ACKs, or other error indications is generally a bad idea, particularly in the longer term if you need to do other things with thepart, or you’re trying to debug unexpected behaviour.Second – If you are just write to the part, then holding the SDA line low during the ACK period should work, the DAC slave should be driving the SDAline low at the same time, the I2C master will have to ensure it meets the timing requirements per the data sheet.I would only recommend the first solution here, the other is a hack/work around that may give a quicker solution in the short term, but experiencehas shown that ignoring ACKs over the long term is a bad thing to do.