Many devices require programming through a serial bus,
such as I2C. The programming can be done during final test,
after the circuit board has been assembled. In many cases, the
pins used for programming can then be utilized for something
else during normal operation. In fact, the bus itself can also be
used for another function.
A simple analog multiplexer circuit facilitates this dualfunction
operation (see the figure).
The multiplexer is a bidirectional
analog switch (MAX4525). During
normal operation, its input is pulled
to ground by R1, causing the serial
lines to connect to the rest of the circuit.
During programming mode, the
programming header asserts a logic
high on the pin connected to the multiplexer
input, causing the multiplexer
to switch over to the pins on the programming
header.
Because of the I2C bus, pullup resistors are provided for other
circuitry on the board. The device programmer that connects to
the programming header must have its own pullup resistors. The
series resistance added by the multiplexer should be accounted
for by other circuitry on the board. To avoid forward-biasing the
electrostatic discharge diodes, the serial data lines should not go
below ground or above the VCC voltage of the MAX4525.