This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DAC101C085 Pinchs Off I2C Bus

Other Parts Discussed in Thread: ADS1115, DAC101C085

We are right now migrating software which was written with the help of dev boards to the actual HW. While reading from another TI product, the ADS1115 an ADC, we experienced problems with the DAC101C085CIMM/NOPB. The DAC seems to wire the bus to GND. So we actually see, that the ADC is trying to drive data on SDA since small ripples are visible where we expect 1s. The reason for this behavior we do not understand. However one thing is clear to us: Removing the DAC from the bus helps to be able to communicate properly to the ADC. This has been observed.

Basically we are sending one byte (after the address byte) and then we are reading two bytes (after the address byte). The two bytes which are supposed to be read out fail to be transmit properly.

This is the expected behavior reading out the ADC (DAC not mounted on the PCB):

START|1001 0000(W)|ACK|0000 0001|ACK|STOP ... START|1001
0001(R)|ACK|1000 0101|ACK|1000 0011|NACK|STOP

This is the actual behavior of the bus (DAC mounted on the PCB):

START|1001 0000(W)|ACK|0000 0001|ACK|STOP ... START|1001
0001(R)|00000000|ACK|0000 0000|NACK|STOP

Both patterns were observed "by hand" with an oscilloscope after the SW failed as the data was nonsense. Ac. to the I2C standard everything is fine but the received data is false. The address of the ADC i s0x48 of the DAC it is 0x0C.

I was just asking myself if this issue is already known by TI and if there is anything to do about it except of conducting the DAC connected to a separate bus or switching to another product e.g. the MCP4725 from Microchip.

  • Hi Maximilian,
    Welcome to the e2e forums!

    I believe this issue is because you are using the broadcast address of the DAC to address the ADC (0x48,1001000). The DAC101C085 responds to the broadcast regardless of ADR1 and ADR0 setting. When you try to poll data from the ADC, the DAC is ACKing by pulling the data line low. This interrupts communication from the ADC. Try changing the address of the ADC and see if the problem persists.

    Regards,
    Garrett