Datasheet

www.ti.com
1
2
3
6
8
7
10
9
DAC7574
V
OUT
A
V
OUT
B
V
DD
GND
V
OUT
C
V
OUT
D
A1
A0
SDA
SCL
GPIO-2
GPIO-1
V
DD
Microcontroller or
Microprocessor
NOTE: DAC7574 power and input/output connections are omitted for clarity, except I
C Inputs.
4
5
DAC7574
SLAS375JUNE 2003
APPLICATION INFORMATION (continued)
Figure 41. Using GPIO With a Single DAC7574
Bit-banging I
2
C with GPIO pins can be done by setting the GPIO line to zero and toggling it between input and
output modes to apply the proper bus states. To drive the line low, the pin is set to output a zero; to let the line
go high, the pin is set to input. When the pin is set to input, the state of the pin can be read; if another device is
pulling the line low, this reads as a zero in the port’s input register.
Note that no pullup resistor is shown on the SCL line. In this simple case the resistor is not needed. The
microcontroller can simply leave the line on output, and set it to one or zero as appropriate. It can do this
because the DAC7574 never drives its clock line low. This technique can also be used with multiple devices, and
has the advantage of lower current consumption due to the absence of a resistive pullup.
If there are any devices on the bus that may drive their clock lines low, the above method should not be used.
The SCL line should be high-Z or zero, and a pullup resistor provided as usual. Note also that this cannot be
done on the SDA line in any case, because the DAC7574 drives the SDA line low from time to time, as all I
2
C
devices do.
Some microcontrollers have selectable strong pullup circuits built in to their GPIO ports. In some cases, these
can be switched on and used in place of an external pullup resistor. Weak pullups are also provided on some
microcontrollers, but usually these are too weak for I
2
C communication. Test any circuit before committing it to
production.
27