← Commit history
README.md+69−2
@@ -1,5 +1,72 @@ # MCP23017 -16-bit I2C I/O expander, DIP-28+**Microchip Technology** · I2C 16-bit I/O expander · SOIC-28 -The MCP23017 is a 16-bit I/O expander with I2C interface from Microchip. Provides 16 additional GPIO pins configurable as input or output with interrupt capability. Up to 8 devices on one bus (128 extra GPIOs).\ No newline at end of file+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++- `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](https://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf) (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).++[Datasheet PDF](docs/mcp23017-datasheet.pdf)
docs/hero.pngadded
⋯ 1 unchanged line ⋯
docs/mcp23017-datasheet.pdfadded
⋯ 1 unchanged line ⋯
mcp23017.glbadded
⋯ 1 unchanged line ⋯
mcp23017.kicad_modadded+420
@@ -0,0 +1,420 @@+(footprint "SOIC-28W_7.5x17.9mm_P1.27mm"+	(version 20260206)+	(generator "kicad-footprint-generator")+	(layer "F.Cu")+	(descr "SOIC, 28 Pin (JEDEC MS-013AE, https://www.analog.com/media/en/package-pcb-resources/package/35833120341221rw_28.pdf)")+	(tags "SOIC SO")+	(property "Reference" "REF**"+		(at 0 -9.9 0)+		(layer "F.SilkS")+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(property "Value" "SOIC-28W_7.5x17.9mm_P1.27mm"+		(at 0 9.9 0)+		(layer "F.Fab")+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(property "KiLib_Generator" "package/gullwing"+		(at 0 0 0)+		(layer "F.SilkS")+		(hide yes)+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(attr smd)+	(duplicate_pad_numbers_are_jumpers no)+	(fp_line+		(start -3.86 -9.06)+		(end 3.86 -9.06)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_line+		(start -3.86 -8.815)+		(end -3.86 -9.06)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_line+		(start -3.86 9.06)+		(end -3.86 8.815)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_line+		(start 3.86 -9.06)+		(end 3.86 -8.815)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_line+		(start 3.86 8.815)+		(end 3.86 9.06)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_line+		(start 3.86 9.06)+		(end -3.86 9.06)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_poly+		(pts+			(xy -4.65 -8.82)+			(xy -4.99 -9.29)+			(xy -4.31 -9.29)+		)+		(stroke+			(width 0.12)+			(type solid)+		)+		(fill yes)+		(layer "F.SilkS")+	)+	(fp_line+		(start -5.93 -8.81)+		(end -4 -8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start -5.93 8.81)+		(end -5.93 -8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start -4 -9.2)+		(end 4 -9.2)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start -4 -8.81)+		(end -4 -9.2)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start -4 8.81)+		(end -5.93 8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start -4 9.2)+		(end -4 8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start 4 -9.2)+		(end 4 -8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start 4 -8.81)+		(end 5.93 -8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start 4 8.81)+		(end 4 9.2)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start 4 9.2)+		(end -4 9.2)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start 5.93 -8.81)+		(end 5.93 8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_line+		(start 5.93 8.81)+		(end 4 8.81)+		(stroke+			(width 0.05)+			(type solid)+		)+		(layer "F.CrtYd")+	)+	(fp_poly+		(pts+			(xy -2.75 -8.95)+			(xy 3.75 -8.95)+			(xy 3.75 8.95)+			(xy -3.75 8.95)+			(xy -3.75 -7.95)+		)+		(stroke+			(width 0.1)+			(type solid)+		)+		(fill no)+		(layer "F.Fab")+	)+	(fp_text user "${REFERENCE}"+		(at 0 0 0)+		(layer "F.Fab")+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(pad "1" smd roundrect+		(at -4.65 -8.255)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "2" smd roundrect+		(at -4.65 -6.985)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "3" smd roundrect+		(at -4.65 -5.715)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "4" smd roundrect+		(at -4.65 -4.445)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "5" smd roundrect+		(at -4.65 -3.175)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "6" smd roundrect+		(at -4.65 -1.905)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "7" smd roundrect+		(at -4.65 -0.635)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "8" smd roundrect+		(at -4.65 0.635)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "9" smd roundrect+		(at -4.65 1.905)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "10" smd roundrect+		(at -4.65 3.175)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "11" smd roundrect+		(at -4.65 4.445)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "12" smd roundrect+		(at -4.65 5.715)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "13" smd roundrect+		(at -4.65 6.985)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "14" smd roundrect+		(at -4.65 8.255)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "15" smd roundrect+		(at 4.65 8.255)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "16" smd roundrect+		(at 4.65 6.985)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "17" smd roundrect+		(at 4.65 5.715)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "18" smd roundrect+		(at 4.65 4.445)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "19" smd roundrect+		(at 4.65 3.175)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "20" smd roundrect+		(at 4.65 1.905)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "21" smd roundrect+		(at 4.65 0.635)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "22" smd roundrect+		(at 4.65 -0.635)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "23" smd roundrect+		(at 4.65 -1.905)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "24" smd roundrect+		(at 4.65 -3.175)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "25" smd roundrect+		(at 4.65 -4.445)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "26" smd roundrect+		(at 4.65 -5.715)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "27" smd roundrect+		(at 4.65 -6.985)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "28" smd roundrect+		(at 4.65 -8.255)+		(size 2.05 0.6)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(embedded_fonts no)+	(model "${KICAD10_3DMODEL_DIR}/Package_SO.3dshapes/SOIC-28W_7.5x17.9mm_P1.27mm.step"+		(offset+			(xyz 0 0 0)+		)+		(scale+			(xyz 1 1 1)+		)+		(rotate+			(xyz 0 0 0)+		)+	)+)
mcp23017.kicad_symadded+611
@@ -0,0 +1,611 @@+(kicad_symbol_lib+	(version 20251024)+	(generator "kicad_symbol_editor")+	(generator_version "10.0")+(symbol "MCP23017x-x-SO"+		(exclude_from_sim no)+		(in_bom yes)+		(on_board yes)+		(in_pos_files yes)+		(duplicate_pin_numbers_are_jumpers no)+		(property "Reference" "U"+			(at -9.398 24.638 0)+			(show_name no)+			(do_not_autoplace no)+			(effects+				(font+					(size 1.27 1.27)+				)+			)+		)+		(property "Value" "MCP23017x-x-SO"+			(at 11.176 24.638 0)+			(show_name no)+			(do_not_autoplace no)+			(effects+				(font+					(size 1.27 1.27)+				)+			)+		)+		(property "Footprint" "Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm"+			(at 5.08 -25.4 0)+			(show_name no)+			(do_not_autoplace no)+			(hide yes)+			(effects+				(font+					(size 1.27 1.27)+				)+				(justify left)+			)+		)+		(property "Datasheet" "https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP23017-Data-Sheet-DS20001952.pdf"+			(at 5.08 -27.94 0)+			(show_name no)+			(do_not_autoplace no)+			(hide yes)+			(effects+				(font+					(size 1.27 1.27)+				)+				(justify left)+			)+		)+		(property "Description" "16-bit I/O expander, I2C, interrupts, w pull-ups, GPA7/GPB7 output only (https://microchip.my.site.com/s/article/GPA7---GPB7-Cannot-Be-Used-as-Inputs-In-MCP23017),  SOIC-28"+			(at 0 0 0)+			(show_name no)+			(do_not_autoplace no)+			(hide yes)+			(effects+				(font+					(size 1.27 1.27)+				)+			)+		)+		(property "ki_keywords" "Microchip port-expander GPIO"+			(at 0 0 0)+			(show_name no)+			(do_not_autoplace no)+			(hide yes)+			(effects+				(font+					(size 1.27 1.27)+				)+			)+		)+		(property "ki_fp_filters" "SOIC*7.5x17.9mm*P1.27mm*"+			(at 0 0 0)+			(show_name no)+			(do_not_autoplace no)+			(hide yes)+			(effects+				(font+					(size 1.27 1.27)+				)+			)+		)+		(symbol "MCP23017x-x-SO_0_1"+			(rectangle+				(start -10.16 22.86)+				(end 10.16 -22.86)+				(stroke+					(width 0.254)+					(type default)+				)+				(fill+					(type background)+				)+			)+		)+		(symbol "MCP23017x-x-SO_1_1"+			(pin bidirectional line+				(at 12.7 -2.54 180)+				(length 2.54)+				(name "GPB0"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "1"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 -5.08 180)+				(length 2.54)+				(name "GPB1"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "2"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 -7.62 180)+				(length 2.54)+				(name "GPB2"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "3"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 -10.16 180)+				(length 2.54)+				(name "GPB3"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "4"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 -12.7 180)+				(length 2.54)+				(name "GPB4"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "5"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 -15.24 180)+				(length 2.54)+				(name "GPB5"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "6"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 -17.78 180)+				(length 2.54)+				(name "GPB6"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "7"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin output line+				(at 12.7 -20.32 180)+				(length 2.54)+				(name "GPB7"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "8"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin power_in line+				(at 0 25.4 270)+				(length 2.54)+				(name "V_{DD}"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "9"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin power_in line+				(at 0 -25.4 90)+				(length 2.54)+				(name "V_{SS}"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "10"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin no_connect line+				(at -10.16 15.24 0)+				(length 2.54)+				(hide yes)+				(name "NC"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "11"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin input line+				(at -12.7 20.32 0)+				(length 2.54)+				(name "SCK"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "12"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at -12.7 17.78 0)+				(length 2.54)+				(name "SDA"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "13"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin no_connect line+				(at -10.16 12.7 0)+				(length 2.54)+				(hide yes)+				(name "NC"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "14"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin input line+				(at -12.7 -15.24 0)+				(length 2.54)+				(name "A0"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "15"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin input line+				(at -12.7 -17.78 0)+				(length 2.54)+				(name "A1"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "16"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin input line+				(at -12.7 -20.32 0)+				(length 2.54)+				(name "A2"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "17"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin input line+				(at -12.7 -2.54 0)+				(length 2.54)+				(name "~{RESET}"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "18"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin tri_state line+				(at -12.7 2.54 0)+				(length 2.54)+				(name "INTB"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "19"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin tri_state line+				(at -12.7 5.08 0)+				(length 2.54)+				(name "INTA"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "20"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 20.32 180)+				(length 2.54)+				(name "GPA0"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "21"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 17.78 180)+				(length 2.54)+				(name "GPA1"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "22"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 15.24 180)+				(length 2.54)+				(name "GPA2"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "23"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 12.7 180)+				(length 2.54)+				(name "GPA3"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "24"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 10.16 180)+				(length 2.54)+				(name "GPA4"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "25"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 7.62 180)+				(length 2.54)+				(name "GPA5"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "26"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin bidirectional line+				(at 12.7 5.08 180)+				(length 2.54)+				(name "GPA6"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "27"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+			(pin output line+				(at 12.7 2.54 180)+				(length 2.54)+				(name "GPA7"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+				(number "28"+					(effects+						(font+							(size 1.27 1.27)+						)+					)+				)+			)+		)+		(embedded_fonts no)+	)+)
package.jsonadded+31
@@ -0,0 +1,31 @@+{+  "slug": "mcp23017",+  "version": "0.1.0",+  "type": "component",+  "description": "Microchip 16-bit I2C I/O expander, SOIC-28. Two 8-bit ports, interrupts, configurable pull-ups, 3 address pins. Datasheet-verified.",+  "tags": [+    "component",+    "interface",+    "io-expander",+    "i2c",+    "gpio",+    "soic-28",+    "microchip"+  ],+  "dependencies": {},+  "hero": {+    "type": "image",+    "path": "docs/hero.png"+  },+  "files": [+    "page.json",+    "README.md",+    "mcp23017.kicad_sym",+    "mcp23017.kicad_mod",+    "mcp23017.glb",+    "docs/hero.png",+    "docs/mcp23017-datasheet.pdf",+    "viewers/symbol.html",+    "viewers/footprint.html"+  ]+}\ No newline at end of file
page.json+28−7
@@ -4,8 +4,16 @@   "slug": "mcp23017",   "title": "MCP23017",   "brief": "16-bit I2C I/O expander, DIP-28",-  "version": "1.0.0",-  "tags": [],+  "version": "0.1.0",+  "tags": [+    "component",+    "interface",+    "io-expander",+    "i2c",+    "gpio",+    "soic-28",+    "microchip"+  ],   "license": "MIT",   "component": {     "mpn": "MCP23017",@@ -20,18 +28,31 @@   },   "readme": "# MCP23017\n\n16-bit I2C I/O expander, DIP-28\n\nThe MCP23017 is a 16-bit I/O expander with I2C interface from Microchip. Provides 16 additional GPIO pins configurable as input or output with interrupt capability. Up to 8 devices on one bus (128 extra GPIOs).",   "author": {-    "id": "695820315b5f1e4db2fcf602",     "name": "Kyle Bergstedt",     "email": "[email protected]"   },-  "visibility": {-    "public": true+  "visibility": "public",+  "hero": {+    "type": "image",+    "path": "docs/hero.png"   },-  "hero": null,   "sample_prompts": [],   "discovery_triggers": [],   "discovery_pitch": null,   "metadata": {},   "created_at": "2026-05-28T05:33:57.303Z",-  "updated_at": "2026-05-28T05:33:57.303Z"+  "updated_at": "2026-05-28T05:33:57.303Z",+  "description": "Microchip 16-bit I2C I/O expander, SOIC-28. Two 8-bit ports, interrupts, configurable pull-ups, 3 address pins. Datasheet-verified.",+  "dependencies": {},+  "files": [+    "page.json",+    "README.md",+    "mcp23017.kicad_sym",+    "mcp23017.kicad_mod",+    "mcp23017.glb",+    "docs/hero.png",+    "docs/mcp23017-datasheet.pdf",+    "viewers/symbol.html",+    "viewers/footprint.html"+  ] }\ No newline at end of file