PCA9555
Public Unreviewedby Ray
NXP 16-bit I2C I/O expander, SO-24. Two 8-bit ports, interrupt output, polarity inversion, 3 address pins. Datasheet-verified.
3D Model
Open in new tab ↗
Symbol & Footprint
Schematic Symbol
Open full view ↗PCB Footprint
Open full view ↗Datasheet
Open in new tab ↗README
markdownPCA9555
NXP Semiconductors · I2C 16-bit I/O expander · SO-24
A 16-bit general-purpose I/O expander with an I2C interface, in SO-24, NXP's take on the port-expander and a peer of the MCP23017. It gives a microcontroller sixteen more pins across two 8-bit ports (IO0 and IO1), each pin independently input or output, with a per-pin polarity-inversion register and an open-drain interrupt (INT) that fires on an input change so the host need not poll. Three address pins (A0-A2) put up to eight on one bus for 128 I/O. It runs I2C at up to 400 kHz over a 1.65-5.5 V supply, and unlike the PCF8574 it has real direction control per pin.
Pinout
| Pin | Name | Type | Function |
|---|---|---|---|
| 1 | INT | output | Active-LOW open-drain interrupt output. Asserts when any input port pin state differs from its input port register value; requires an external pull-up to VDD. |
| 2 | A1 | input | I2C-bus slave address input bit 1. Tie to VDD or VSS to set the programmable portion of the 7-bit slave address (0100 A2 A1 A0). |
| 3 | A2 | input | I2C-bus slave address input bit 2. Tie to VDD or VSS to set the programmable portion of the 7-bit slave address. |
| 4 | IO0_0 | bidirectional | Port 0 bit 0 general-purpose I/O. Configurable per bit as input (default, high-Z with weak 100 kΩ pull-up to VDD) or push-pull output. 5 V-tolerant input. |
| 5 | IO0_1 | bidirectional | Port 0 bit 1 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 6 | IO0_2 | bidirectional | Port 0 bit 2 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 7 | IO0_3 | bidirectional | Port 0 bit 3 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 8 | IO0_4 | bidirectional | Port 0 bit 4 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 9 | IO0_5 | bidirectional | Port 0 bit 5 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 10 | IO0_6 | bidirectional | Port 0 bit 6 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 11 | IO0_7 | bidirectional | Port 0 bit 7 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 12 | VSS | power_in | Supply ground (0 V) reference for the device. |
| 13 | IO1_0 | bidirectional | Port 1 bit 0 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 14 | IO1_1 | bidirectional | Port 1 bit 1 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 15 | IO1_2 | bidirectional | Port 1 bit 2 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 16 | IO1_3 | bidirectional | Port 1 bit 3 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 17 | IO1_4 | bidirectional | Port 1 bit 4 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 18 | IO1_5 | bidirectional | Port 1 bit 5 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 19 | IO1_6 | bidirectional | Port 1 bit 6 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 20 | IO1_7 | bidirectional | Port 1 bit 7 general-purpose I/O. Configurable per bit as input (default) or push-pull output. 5 V-tolerant input. |
| 21 | A0 | input | I2C-bus slave address input bit 0. Tie to VDD or VSS to set the programmable portion of the 7-bit slave address (0100 A2 A1 A0). |
| 22 | SCL | input | I2C-bus serial clock input line. 0 Hz to 400 kHz clock frequency; requires external pull-up to VDD. |
| 23 | SDA | bidirectional | I2C-bus serial data line (open-drain). Requires external pull-up to VDD. |
| 24 | VDD | power_in | Positive supply voltage input. Operating range 2.3 V to 5.5 V; bypass locally with a 100 nF ceramic capacitor to VSS. |
Key specifications
| Parameter | Value |
|---|---|
| Type | I2C 16-bit I/O expander |
| I/O lines | 16 (ports IO0, IO1) |
| Bus | I2C up to 400 kHz |
| Per-pin | direction + polarity inversion |
| Interrupt | open-drain INT on change |
| Address pins | A0-A2 (8 per bus) |
| Supply voltage | 1.65-5.5 V |
| Package | SO-24 |
Ordering variants
Same part, different packaging or reel option.
PCA9555D (SO-24)PCA9555PW (TSSOP-24)
CAD (KiCad official)
- Symbol:
Interface_Expansion:PCA9555D - Footprint:
Package_SO:SOIC-24W_7.5x15.4mm_P1.27mm - 3D model: SOIC-24W (KiCad packages3D)
Provenance
Data extracted from the manufacturer datasheet, not a distributor listing:
- Datasheet: NXP Semiconductors datasheet (34 pp, sha256
9f4f9c0ce4c461d7, retrieved 2026-08-17, tier: manufacturer) - Extractor:
ds2sf(Claude). Every pin and dimension is cited to a datasheet page; it refuses to fabricate. - CAD: KiCad official libraries (CC-BY-SA 4.0).