Skip to the content
2 layers60 × 29 mm0015 TCA9554 GPIO rev01a, the printed circuit board in 3D

0015 TCA9554 GPIO rev01a

SP6GK/TCA9554_STM32_GPIO_Expander

STM32 HAL driver for TCA9554 GPIO expander + evaluation board.

Size
60 × 29 mm
Copper layers
2
Thickness
1.6 mm
Parts
38
Nets
30
Pads
108
Tracks, vias
159, 69
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
11 Oct 2026
Updated
11 Oct 2026

Overview

0015 TCA9554 GPIO rev01a is an open-source printed circuit board by SP6GK, from the SP6GK/TCA9554_STM32_GPIO_Expander repository on GitHub, published under the AGPL-3.0 licence. It is a 2-layer board of 60 × 29 mm with 38 parts on 30 nets, routed with 159 tracks and 69 vias.

It is built around the TCA9554DW. Its parts include 20 resistors, 8 diodes, 5 capacitors, 4 connectors and 1 IC.

Main components

1

README

README.md

TCA9554 STM32 GPIO Expander

Software

STM32 HAL driver for the TCA9554 8-bit I/O expander. This is a useful IC that I find more capable and easier to use than the common PCF8574.

The project includes:

  • HAL based driver
  • Demo project in CubeIDE targeting the STM32F411
  • KiCad project with eval PCB

Usage

Copy the .c and .h from demo project to your project:

  • TCA9554.c is in /Software/MCU/Src
  • TCA9554.h is in /Software/MCU/Inc

Configure the I2C peripheral in STM32CubeMX and initialize the driver:

c
#include "TCA9554.h"

TCA9554_HandleTypeDef GPIO_expander1 =
{
    .hi2c = &hi2c1,              // CubeMX I2C configuration
    .address = TCA9554_ADDRESS,  // Defined in header file
    .io_configuration = 0x00,    // 0 = Output, 1 = Input
    .io_states = 0x00,           // 0 = Low, 1 = High
    .pol_inversion = 0x00        // No polarity inversion
};

TCA9554_init(&GPIO_expander1);

By default, all pins are configured as inputs. Set io_configuration to configure individual pins: for example, 0b01010101 configures P0, P2, P4, and P6 as outputs, and P1, P3, P5, and P7 as inputs.

c
uint8_t read_status = 0;
bool pin_status[8] = {0};

//Write to specific pin
for(int i = 0; i < 8; i++){
		  TCA9554_set_pin(&GPIO_expander1, i, true);
		  HAL_Delay(100);
	  }


//Write state of all pins at once
for(uint8_t counter = 0; counter < UINT8_MAX; counter++){
  TCA9554_write(&GPIO_expander1, TCA9554_OUT_REG, counter);

  read_status = TCA9554_read(&GPIO_expander1, TCA9554_IN_REG);	//Read status of every pin
  for(uint8_t i = 0; i < 8; i++){
  pin_status[i] = TCA9554_read_pin(&GPIO_expander1, i); //Read status of single pin
}

Hardware

KiCad evaluation board design for the TCA9554 I/O expander.

The hardware project includes the schematic and PCB design files, organized under the ECAD/ directory. Documents/ includes interactive BOM and .pdf schematic. Image of eval board

Parts

38
QtyValueFootprintReferences
8750Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13, R14, R15, R16, R17, R18, R19, R20
8LED_SmallDiode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1, D2, D3, D4, D5, D6, D7, D8
6100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR7, R8, R9, R10, R11, R12
3100pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3, C4, C5
310kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R5, R6
33k9Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3
21uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2
2Conn_02x03_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x03_P2.54mm_Vertical_SMDJ1, J6
1Conn_01x10Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical_SMD_Pin1LeftJ2
1Conn_02x02_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x02_P2.54mm_Vertical_SMDJ3
1TCA9554DWPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmU1

Similar boards

  • 2 layers65 × 50 mmMecha Dev Expander, the printed circuit board in 3D

    Mecha Dev Expander

    SolidwareGit/Modular-GP2040-Dev-Board

    This is a development board for the RP2040 to enable creation of a modular GP2040-CE, using I2C, for fightsticks or other controller peripherals

    30 parts1CC0-1.0
  • 2 layers85 × 115 mmOSO BOOK C1, the printed circuit board in 3D

    OSO BOOK C1

    joeycastillo/The-Open-Book

    For details on how to build, test and use Open Book, I've made documentation available here.

    38 parts8.1kCC-BY-SA-4.0
  • 2 layers38.1 × 12.7 mmVrs io 1, the printed circuit board in 3D

    Vrs io 1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    38 parts1.2k
  • 2 layers136 × 84 mmMacropad, the printed circuit board in 3D

    Macropad

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    38 parts915
  • 2 layers126.4 × 15.2 mmV5ProbeTop, the printed circuit board in 3D

    V5ProbeTop

    Architeuthis-Flux/JumperlessV5

    The next generation jumperless breadboard

    38 parts332
  • 2 layers66 × 25.4 mmArdmover Empfangsspule Yann, the printed circuit board in 3D

    Ardmover Empfangsspule Yann

    Ardumower/ardumower

    Develop an open source robotic lawn mower (HW+SW reference platform)

    38 parts282
  • 2 layers17.8 × 17.8 mmAltmode friend, the printed circuit board in 3D

    Altmode friend

    CRImier/MyKiCad

    My KiCad boards. Can't be bothered uploading individually anymore, so here you go.

    38 parts253GPL-3.0
  • 2 layers51.4 × 61 mmWifi gb cart, the printed circuit board in 3D

    Wifi gb cart

    Staacks/wifi-game-boy-cartridge

    A WiFi cartridge for the original Game Boy.

    38 parts242

Questions

How big is the 0015 TCA9554 GPIO rev01a PCB?

It measures 60 × 29 mm and has 2 copper layers, 1.6 mm thick.

What parts does the 0015 TCA9554 GPIO rev01a use?

38 parts, built around the TCA9554DW. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the 0015 TCA9554 GPIO rev01a KiCad files?

From the SP6GK/TCA9554_STM32_GPIO_Expander repository on GitHub, at the commit this page was made from: the board is ECAD/KiCad_0015_TCA9554_GPIO_rev01a/0015_TCA9554_GPIO_rev01a.kicad_pcb and its schematic ECAD/KiCad_0015_TCA9554_GPIO_rev01a/0015_TCA9554_GPIO_rev01a.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the 0015 TCA9554 GPIO rev01a design in my own project?

Its repository publishes it under the AGPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).