Datasheet

www.ti.com
8
6
4
9
5
7
1
2
3
12
14
11
10
13
16
15
DAC8574
V
OUTA
V
OUTB
V
REFH
V
DD
V
REFL
GND
V
OUTC
V
OUTD
A3
A2
A1
A0
IOV
DD
SDA
SCL
L
DAC
GPIO-2
GPIO-1
IOV
DD
Microcontroller or
Microprocessor
NOTE: DAC8574 power and input/output connections are omitted for clarity, except I
C Inputs.
DAC8574
SLAS377B JANUARY 2003 REVISED DECEMBER 2004
APPLICATION INFORMATION (continued)
Figure 57. Using GPIO With a Single DAC8574
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 DAC8574 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 DAC8574 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.
30