Quasi-Bidirectional Ports Can Cause Confusion

I had another run-in with “quasi-bidirectional” ports today.  As on the last project where I encountered them, they caused confusion.  Today’s encounter was with the PCA9501 I/O port chip.

They should be called “open-drain outputs with moderate pulls connected to an input”.


They are open-drain outputs and can only be used as input ports by writing a logic high and then reading.

The thing that makes them tricky is the built-in pullup in moderately strong.  In the circuit I encountered today uses a quasi-bidirectional port as an output to drive the base of a ‘3904.  The moderately 100uA pullup is enough to drive the transistor, but I would have to crunch some numbers to know if will work in this circuit over the entire range (the low end) of beta values for a ‘3904.


Adding exteranl pullup is an easy solution in this case because this board’s power budget is not tight.

The tricky part is that quasi-directional ports have a read/write bit, giving the user the impression that it functions as either a push-pull output or a standard input.  The port’s ability to source some current furthers this misconception.

Leave a Reply