Close

IO Expansion

A project log for easy-alarm-clock

Improvements for the ubiquitous alarm clock

christoph-tackChristoph Tack 05/21/2020 at 14:250 Comments

There's more IO needed than the BluePill can handle.  The following user IO needs to be controlled :

So we need an IO expander.  The original setup used a MCP23017 to handle all of this.  It turned out to be not such a good idea.  See below.

Other options exist:

  1. Use 2 SX1509 boards
  2. 1x SX1509 for button inputs + 1x TLC59711 or TLC5940 for LEDs (expensive)
  3. GPIO for inputs ( 3 rows + 4 columns). 1 TLC59711 for LED output

16 channel SPI LED driver, non-dimmable : TLC5925 | STP16CPC26 | CAT4016 | MAX6969: 16 outputs, integrated current source, Digikey €1/pce.  Advantage of using these is that charlieplexing is no longer needed.

PCB Design

The I²C expansion board can control 8LED/switches.  The LED/switch-PCBs have four LED/switches.  If the I²C expander would be incorporated on the LED/switch PCB, effectively 50% of the I²C expander would be wasted.

All FFC connectors are the same to reduce BoM-cost and lead time.  For the 3V3/I²C-connector, this means that some pins are not really used.

Discussions