A project log for QGPIO

Qwiic GPIO expander based on PCF8574

greggreg 07/09/2020 at 03:570 Comments

Seems like the first thing I test on just about every board I design is I2C.  This is probably why I am such a fan of the SparkFun Qwiic connector, since it save me time trying to remember the order of SCL/SDA on a header. 

Now that all my boards are using Qwiic connectors, I'm always looking for a Qwiic peripheral board to check out the hardware/tools/libraries.  The closest one is usually one of my Qwiic NFCEEPROMs or badges.  That is not quite ideal, because I don't have that register map committed to memory.  What I a really want is a simple device that can provide some quick feedback. 

That is why I  chose the PCF8574, it is just about the simplest I2C device you will find.  There is no secondary addressing,  A read always returns the physical state of the pins, and a write always updates the open drain outputs.  As long as you don't force the pins high, you don't even need to worry about contention since the outputs are open drain. 

So now we have a simple way to read and write digital I/O, all that is left is to convert that to a more human friendly interface.  An LED on each pin makes the output visible, and the dual row 100mil pitch header performs double duty as an input jumper and connectivity to the rest of the world. 

The board is only as large as it needs to be.  All the resistors, caps and LEDs are 0603, and I opted for an old school through hole SIP resistor network since it was easier to solder and greatly simplified the routing.

If you think it is too small or wish there were mounting holes, go ahead an modify to your hearts content.  All the KiCad files are on github.