component
MCP23S17 SPI GPIO Expander
Public Made by Adomby adom
16-bit general-purpose I/O expander with an SPI interface and interrupt outputs.
main
Ray
mcp23s17: component.models_3d pose record per STEP (Z-up, seated z=0, pad-centre origin, identity binding)
5f505de
1mo ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
{
"schema_version": 1,
"type": "component",
"slug": "mcp23s17",
"title": "MCP23S17 SPI GPIO Expander",
"brief": "16-bit general-purpose I/O expander with an SPI interface and interrupt outputs.",
"version": "0.1.0",
"license": "CC-BY-SA-4.0",
"tags": [
"gpio-expander",
"spi",
"io-expander",
"interrupt",
"microchip",
"soic-28"
],
"component": {
"mpn": "MCP23S17",
"manufacturer": "Microchip",
"package": "SOIC-28",
"pin_count": 28,
"category": "Interface",
"subcategory": "I/O Expander",
"datasheet": "https://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf",
"parts": {
"symbol": "mcp23s17.kicad_sym",
"footprint": "mcp23s17.kicad_mod",
"model_3d": "mcp23s17-etched.glb",
"model_3d_plain": "mcp23s17.glb",
"lbr": "mcp23s17.lbr",
"model_3d_step": "mcp23s17-etched.step",
"model_3d_step_plain": "mcp23s17.step"
},
"distributor_links": {},
"pins": [
{
"number": "1",
"name": "GPB0",
"type": "bidirectional",
"description": "PORTB bit 0 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up. Max sink/source 25 mA per pin."
},
{
"number": "2",
"name": "GPB1",
"type": "bidirectional",
"description": "PORTB bit 1 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "3",
"name": "GPB2",
"type": "bidirectional",
"description": "PORTB bit 2 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "4",
"name": "GPB3",
"type": "bidirectional",
"description": "PORTB bit 3 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "5",
"name": "GPB4",
"type": "bidirectional",
"description": "PORTB bit 4 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "6",
"name": "GPB5",
"type": "bidirectional",
"description": "PORTB bit 5 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "7",
"name": "GPB6",
"type": "bidirectional",
"description": "PORTB bit 6 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "8",
"name": "GPB7",
"type": "bidirectional",
"description": "PORTB bit 7 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "9",
"name": "VDD",
"type": "power_in",
"description": "Positive supply. Operating range 1.8 V to 5.5 V (-40 to +85 C), 2.7 V to 5.5 V (-40 to +85 C), or 4.5 V to 5.5 V (-40 to +125 C). Decouple to VSS with a local bypass capacitor."
},
{
"number": "10",
"name": "VSS",
"type": "power_in",
"description": "Ground reference. Return for all device currents; connect to system ground plane."
},
{
"number": "11",
"name": "CS",
"type": "input",
"description": "SPI chip select input (active-low). Frames each SPI transaction; must be driven low to enable serial communication with this device."
},
{
"number": "12",
"name": "SCK",
"type": "input",
"description": "SPI serial clock input. Maximum 10 MHz. Clocks data into SI on the master-configured edge and out on SO."
},
{
"number": "13",
"name": "SI",
"type": "input",
"description": "SPI serial data input (MOSI). Receives command, address and write-data bytes from the SPI master."
},
{
"number": "14",
"name": "SO",
"type": "output",
"description": "SPI serial data output (MISO). Drives read-data back to the SPI master; high-impedance while CS is high."
},
{
"number": "15",
"name": "A0",
"type": "input",
"description": "Hardware address bit 0. Sets the least-significant bit of the 3-bit chip address matched during SPI transactions. Must be externally biased (tied to VDD or VSS); do not leave floating."
},
{
"number": "16",
"name": "A1",
"type": "input",
"description": "Hardware address bit 1. Must be externally biased (tied to VDD or VSS)."
},
{
"number": "17",
"name": "A2",
"type": "input",
"description": "Hardware address bit 2. Must be externally biased (tied to VDD or VSS). Combined with A0/A1 allows up to eight MCP23S17 devices to share one SPI bus."
},
{
"number": "18",
"name": "RESET",
"type": "input",
"description": "Active-low hardware reset input. Forces all registers to their POR defaults while asserted. Must be externally biased (tie to VDD through a pull-up if unused); do not leave floating."
},
{
"number": "19",
"name": "INTB",
"type": "output",
"description": "Interrupt output for PORTB. Polarity and drive configurable as active-high, active-low, or open-drain via IOCON.INTPOL/ODR. Can be OR'd with INTA when IOCON.MIRROR = 1."
},
{
"number": "20",
"name": "INTA",
"type": "output",
"description": "Interrupt output for PORTA. Polarity and drive configurable as active-high, active-low, or open-drain via IOCON.INTPOL/ODR. Can be OR'd with INTB when IOCON.MIRROR = 1."
},
{
"number": "21",
"name": "GPA0",
"type": "bidirectional",
"description": "PORTA bit 0 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "22",
"name": "GPA1",
"type": "bidirectional",
"description": "PORTA bit 1 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "23",
"name": "GPA2",
"type": "bidirectional",
"description": "PORTA bit 2 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "24",
"name": "GPA3",
"type": "bidirectional",
"description": "PORTA bit 3 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "25",
"name": "GPA4",
"type": "bidirectional",
"description": "PORTA bit 4 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "26",
"name": "GPA5",
"type": "bidirectional",
"description": "PORTA bit 5 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "27",
"name": "GPA6",
"type": "bidirectional",
"description": "PORTA bit 6 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
},
{
"number": "28",
"name": "GPA7",
"type": "bidirectional",
"description": "PORTA bit 7 bidirectional I/O. Can be enabled for interrupt-on-change and/or internal weak pull-up. Defaults to input at power-up."
}
],
"provenance": {
"extractor": "ds2sf",
"datasheet": {
"url": "https://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf",
"pages": 42,
"sha256": "14159c6f5655e943",
"source_tier": "mfr"
},
"cad": "KiCad official (CC-BY-SA 4.0)",
"pins": {
"total": 28,
"described": 28,
"cites_pages": true,
"refuses_to_fabricate": true
}
},
"viewers": {
"symbol": "viewers/symbol.html",
"footprint": "viewers/footprint.html"
},
"models_3d": [
{
"file": "mcp23s17.step",
"role": "plain",
"up": "Z",
"units": "mm",
"origin": "footprint origin = pad-pattern centre",
"seat": "z = 0",
"extents_mm": [
10.3,
17.9,
2.75
],
"zmin_mm": 0,
"centre_offset_mm": 0,
"footprint_binding": "identity",
"sha256": "b889a13dbe9ec59e79fa9f1b5118b00bfa54f9582392335ff3365b64afc264b1",
"checked": "2026-10-07",
"checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"
},
{
"file": "mcp23s17-etched.step",
"role": "eda",
"up": "Z",
"units": "mm",
"origin": "footprint origin = pad-pattern centre",
"seat": "z = 0",
"extents_mm": [
10.3,
17.9,
2.75
],
"zmin_mm": 0,
"centre_offset_mm": 0,
"footprint_binding": "identity",
"sha256": "11383e07d04533f5a48ded829719caa2be467ad0298454760b99ecf753f2fc28",
"checked": "2026-10-07",
"checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"
}
]
},
"metadata": {
"specs": {
"Type": "16-bit I/O expander",
"Interface": "SPI (up to 10 MHz)",
"I/O": "16, two 8-bit ports (GPA/GPB)",
"Per-pin features": "Direction, pull-up, polarity, interrupt-on-change",
"Addressing": "3 hardware address pins (up to 8 on a bus)",
"Supply voltage": "1.8 V to 5.5 V",
"Operating temperature": "-40 C to 85 C"
}
},
"sections": [
"hero",
"viewers",
"readme",
"breadcrumbs",
"info"
],
"discovery_triggers": [
"SPI GPIO expander",
"add more I/O",
"port expander",
"16-bit I/O over SPI"
],
"discovery_pitch": "Add 16 interrupt-capable GPIOs to an MCU over SPI, with up to 8 devices on one bus via hardware address pins.",
"author": {
"name": "Ray"
},
"dependencies": {},
"hero": {
"type": "image",
"path": "docs/hero.png"
},
"files": [
"page.json",
"README.md",
"mcp23s17.kicad_sym",
"mcp23s17.kicad_mod",
"mcp23s17.glb",
"mcp23s17.lbr",
"docs/hero.png",
"docs/mcp23s17-datasheet.pdf",
"viewers/symbol.html",
"viewers/footprint.html",
"mcp23s17-etched.step"
],
"variants": [
{
"mpn": "MCP23S17SP",
"kind": "unknown"
},
{
"mpn": "MCP23S17E/SP",
"kind": "unknown"
},
{
"mpn": "MCP23S17SO",
"kind": "unknown"
},
{
"mpn": "MCP23S17E/SO",
"kind": "unknown"
},
{
"mpn": "MCP23S17T-E/SO",
"kind": "unknown"
},
{
"mpn": "MCP23S17SS",
"kind": "unknown"
},
{
"mpn": "MCP23S17E/SS",
"kind": "unknown"
},
{
"mpn": "MCP23S17T-E/SS",
"kind": "unknown"
},
{
"mpn": "MCP23S17ML",
"kind": "unknown"
},
{
"mpn": "MCP23S17E/ML",
"kind": "unknown"
},
{
"mpn": "MCP23S17T-E/ML",
"kind": "unknown"
}
]
}