MCP23017
Public Unreviewedby adom
Microchip 16-bit I2C I/O expander, SOIC-28. Two 8-bit ports, interrupts, configurable pull-ups, 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
markdownMCP23017
Microchip Technology · I2C 16-bit I/O expander · SOIC-28
Adds sixteen general-purpose I/O to a microcontroller over I2C, in a SOIC-28, the 16-bit big brother of the PCF8574. The pins are split into two 8-bit ports (GPA and GPB), each with per-pin direction, optional internal pull-ups, input polarity inversion, and interrupt-on-change that drives the INTA and INTB pins so the host need not poll. Three address pins (A0-A2) put up to eight of them on one bus for 128 I/O total. It speaks I2C up to 1.7 MHz (a sibling, the MCP23S17, uses SPI). Runs 1.8-5.5 V.
Pinout
| Pin | Name | Type | Function |
|---|---|---|---|
| 1 | GPB0 | bidirectional | PORTB bit 0 bidirectional I/O. Configurable per-pin as input or output; supports interrupt-on-change and internal ~75 µA weak pull-up to VDD. IOL up to 8.0 mA @ VDD=4.5V. |
| 2 | GPB1 | bidirectional | PORTB bit 1 bidirectional I/O. Same characteristics as GPB0 - configurable direction, interrupt-on-change, optional weak pull-up. |
| 3 | GPB2 | bidirectional | PORTB bit 2 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 4 | GPB3 | bidirectional | PORTB bit 3 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 5 | GPB4 | bidirectional | PORTB bit 4 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 6 | GPB5 | bidirectional | PORTB bit 5 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 7 | GPB6 | bidirectional | PORTB bit 6 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 8 | GPB7 | bidirectional | PORTB bit 7 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 9 | VDD | power_in | Positive supply. Operating range 1.8V-5.5V (industrial), 2.7V-5.5V and 4.5V-5.5V for wider temperature grades. Bypass with a 0.1 µF ceramic close to the pin. |
| 10 | VSS | power_in | Ground reference for supply and all I/O. |
| 11 | NC | unconnected | No connect on MCP23017 (this pin is Chip Select /CS on the SPI-variant MCP23S17). Leave floating or tie to ground. |
| 12 | SCL | input | I2C serial clock input (Schmitt-trigger). Standard 100 kHz, Fast 400 kHz, and Fast-mode Plus 1.7 MHz supported. Requires an external pull-up resistor to VDD. |
| 13 | SDA | bidirectional | I2C serial data (open-drain, Schmitt-trigger input). Requires an external pull-up resistor to VDD. VOL ≤ 0.6V @ 3 mA sink (VDD=1.8V), ≤ 0.8V @ 3 mA sink (VDD=4.5V). |
| 14 | NC | unconnected | No connect on MCP23017 (this pin is SPI Serial Out on MCP23S17). Leave floating or tie to ground. |
| 15 | A0 | input | Hardware slave address bit 0 (TTL buffer). Must be externally biased to VDD or VSS - do not leave floating. Sets bit A0 of the 7-bit I2C address 0100 A2 A1 A0. |
| 16 | A1 | input | Hardware slave address bit 1 (TTL buffer). Must be externally biased to VDD or VSS. |
| 17 | A2 | input | Hardware slave address bit 2 (TTL buffer). Must be externally biased to VDD or VSS. Combined with A1/A0 allows up to eight MCP23017 devices on one I2C bus. |
| 18 | RESET | input | Active-low hardware reset (Schmitt-trigger). Must be externally biased (tie to VDD directly or via a pull-up if unused). Minimum low pulse 1 µs; device is active 0 ns after RESET returns high; outputs go Hi-Z within 1 µs of RESET going low. |
| 19 | INTB | output | Interrupt output for PORTB. Configurable via IOCON as active-high, active-low, or open-drain. Can be mirrored with INTA when IOCON.MIRROR=1. VOL ≤ 0.6V @ 1.6 mA sink (VDD=4.5V). |
| 20 | INTA | output | Interrupt output for PORTA. Configurable via IOCON as active-high, active-low, or open-drain. Can be mirrored with INTB when IOCON.MIRROR=1. |
| 21 | GPA0 | bidirectional | PORTA bit 0 bidirectional I/O. Configurable per-pin as input or output; supports interrupt-on-change and internal ~75 µA weak pull-up to VDD. IOL up to 8.0 mA @ VDD=4.5V. |
| 22 | GPA1 | bidirectional | PORTA bit 1 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 23 | GPA2 | bidirectional | PORTA bit 2 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 24 | GPA3 | bidirectional | PORTA bit 3 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 25 | GPA4 | bidirectional | PORTA bit 4 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 26 | GPA5 | bidirectional | PORTA bit 5 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 27 | GPA6 | bidirectional | PORTA bit 6 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
| 28 | GPA7 | bidirectional | PORTA bit 7 bidirectional I/O with optional interrupt-on-change and weak pull-up. |
Key specifications
| Parameter | Value |
|---|---|
| Type | I2C 16-bit I/O expander |
| I/O lines | 16 (ports GPA0-7, GPB0-7) |
| Bus | I2C up to 1.7 MHz |
| Address pins | A0-A2 (8 per bus) |
| Per-pin features | direction, pull-up, polarity, interrupt |
| Interrupts | INTA + INTB (configurable) |
| Supply voltage | 1.8-5.5 V |
| Package | SOIC-28 |
Ordering variants
Same part, different packaging or reel option.
MCP23017-E/SO (SOIC-28)MCP23017-E/SP (SPDIP-28)
CAD (KiCad official)
- Symbol:
Interface_Expansion:MCP23017x-x-SO - Footprint:
Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm - 3D model: SOIC-28W (KiCad packages3D)
Provenance
Data extracted from the manufacturer datasheet, not a distributor listing:
- Datasheet: Microchip Technology datasheet (42 pp, sha256
14159c6f5655e943, 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).