MCP23017 — i2c address & wiring
16 extra GPIO over i2c, with 8 selectable addresses.
Key facts
MCP23017 at a glance
| i2c address | 0x200x210x220x230x240x250x260x27 address-selectable via pins/jumpers |
|---|---|
| Logic voltage | 3.3–5 V |
| Type | expander |
| Part | Microchip MCP23017 |
| Ships with | Qwiic, STEMMA QT |
| Datasheet | Microchip MCP23017 — manufacturer documentation ↗ |
The chip
What the Microchip MCP23017 actually is
16-bit general-purpose input/output (GPIO) expander providing two independently configurable 8-bit ports over i2c. Supports programmable pull-up resistors, configurable pin direction, interrupt generation and polarity inversion for digital I/O expansion.
Wiring
How to connect the MCP23017
The MCP23017 talks i2c at address 0x20 (up to 8 selectable addresses, handy when you need more than one on the same bus). It runs at 3.3–5 V, so match your host's logic level — if your host is 5 V and a board on the bus is 3.3 V-only, add a level shifter. Use the compatibility checker to confirm the exact cable for your setup.
Because the address is selectable, you can run several MCP23017 boards on one bus by setting each to a different address — no extra wiring beyond the shared SDA/SCL.
Wiring is the usual four: power, ground, SDA and SCL, plus pull-up resistors — almost always already fitted on the breakout. Nothing showing up? Run an i2c scan first; if the bus is silent, the 7-step checklist finds it faster than guessing.
Ecosystems
Plug-together options for the MCP23017
MCP23017 breakouts ship with Qwiic and STEMMA QT — keyed 4-pin cables carrying power, ground, SDA and SCL, so there's nothing to solder and nothing to wire backwards. Chain it to the next board and keep going.
Running a mixed bench? Those ecosystems interoperate more than their marketing suggests — see every connector pairing for the cable or adapter you need, or the standards overview for how they compare.
Go deeper
Guides covering the MCP23017
Alternatives
Other gpio expander boards
Watch the bus
Boards that clash with the MCP23017
These want an address the MCP23017 also answers (0x23), so they can't share a bus with it untouched. If one is address-selectable, strap it elsewhere; if not, the conflict guide covers the multiplexer and second-bus routes, and the collision roundup explains why a scan won't warn you.
Get one
Questions
MCP23017 i2c FAQ
What is the MCP23017's i2c address?
The MCP23017 uses 0x20 or 0x21 or 0x22 or 0x23 or 0x24 or 0x25 or 0x26 or 0x27, selected with an address pin or solder jumper on the board. If a scan turns up something unexpected, our i2c address list names the usual suspect for every address.
What voltage does the MCP23017 run at?
3.3–5 V logic. That range covers both 3.3 V and 5 V hosts, so it drops onto a Pi, ESP32 or Arduino without a level shifter.
Can I use two MCP23017s on one i2c bus?
Yes — set each one to a different address (0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27) using its address pin or jumper, then wire both to the same SDA/SCL. That gives you up to 8 on a single bus before you need a multiplexer.
Does the MCP23017 work with Qwiic and STEMMA QT?
Yes — MCP23017 breakouts ship with Qwiic / STEMMA QT, so it plugs straight in with no soldering. Mixing ecosystems? The compatibility checker gives you the exact cable or adapter.