component
MCP23017
Public Made by Adomby adom
Microchip 16-bit I2C I/O expander, SOIC-28. Two 8-bit ports, interrupts, configurable pull-ups, 3 address pins. Datasheet-verified.
← Commit history
Targeted fixes, page content unchanged: mcp23017.lbr; models_3d
3 files changed
+134−74
mcp23017.lbr+89−69@@ -52,36 +52,48 @@ <library> <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</description> <packages>-<package name="MCP23017x-x-SO">- <description>MCP23017x-x-SO</description>- <smd name="1" x="-4.6500" y="8.2550" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="2" x="-4.6500" y="6.9850" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="3" x="-4.6500" y="5.7150" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="4" x="-4.6500" y="4.4450" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="5" x="-4.6500" y="3.1750" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="6" x="-4.6500" y="1.9050" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="7" x="-4.6500" y="0.6350" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="8" x="-4.6500" y="-0.6350" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="9" x="-4.6500" y="-1.9050" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="10" x="-4.6500" y="-3.1750" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="11" x="-4.6500" y="-4.4450" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="12" x="-4.6500" y="-5.7150" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="13" x="-4.6500" y="-6.9850" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="14" x="-4.6500" y="-8.2550" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="15" x="4.6500" y="-8.2550" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="16" x="4.6500" y="-6.9850" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="17" x="4.6500" y="-5.7150" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="18" x="4.6500" y="-4.4450" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="19" x="4.6500" y="-3.1750" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="20" x="4.6500" y="-1.9050" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="21" x="4.6500" y="-0.6350" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="22" x="4.6500" y="0.6350" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="23" x="4.6500" y="1.9050" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="24" x="4.6500" y="3.1750" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="25" x="4.6500" y="4.4450" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="26" x="4.6500" y="5.7150" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="27" x="4.6500" y="6.9850" dx="2.0500" dy="0.6000" layer="1"/>- <smd name="28" x="4.6500" y="8.2550" dx="2.0500" dy="0.6000" layer="1"/>+<package name="SOIC-28W_7.5x17.9mm_P1.27mm">+ <description>SOIC-28W, 7.5 x 17.9 mm, 1.27 mm pitch. SOIC, 28 Pin</description>+ <smd name="1" x="-4.6500" y="8.2550" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="2" x="-4.6500" y="6.9850" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="3" x="-4.6500" y="5.7150" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="4" x="-4.6500" y="4.4450" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="5" x="-4.6500" y="3.1750" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="6" x="-4.6500" y="1.9050" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="7" x="-4.6500" y="0.6350" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="8" x="-4.6500" y="-0.6350" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="9" x="-4.6500" y="-1.9050" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="10" x="-4.6500" y="-3.1750" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="11" x="-4.6500" y="-4.4450" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="12" x="-4.6500" y="-5.7150" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="13" x="-4.6500" y="-6.9850" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="14" x="-4.6500" y="-8.2550" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="15" x="4.6500" y="-8.2550" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="16" x="4.6500" y="-6.9850" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="17" x="4.6500" y="-5.7150" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="18" x="4.6500" y="-4.4450" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="19" x="4.6500" y="-3.1750" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="20" x="4.6500" y="-1.9050" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="21" x="4.6500" y="-0.6350" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="22" x="4.6500" y="0.6350" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="23" x="4.6500" y="1.9050" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="24" x="4.6500" y="3.1750" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="25" x="4.6500" y="4.4450" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="26" x="4.6500" y="5.7150" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="27" x="4.6500" y="6.9850" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <smd name="28" x="4.6500" y="8.2550" dx="2.0500" dy="0.6000" layer="1" roundness="50"/>+ <polygon width="0.1200" layer="21">+ <vertex x="-4.6500" y="8.8200"/>+ <vertex x="-4.9900" y="9.2900"/>+ <vertex x="-4.3100" y="9.2900"/>+ </polygon>+ <polygon width="0.1000" layer="51">+ <vertex x="-2.7500" y="8.9500"/>+ <vertex x="3.7500" y="8.9500"/>+ <vertex x="3.7500" y="-8.9500"/>+ <vertex x="-3.7500" y="-8.9500"/>+ <vertex x="-3.7500" y="7.9500"/>+ </polygon> <wire x1="-3.8600" y1="9.0600" x2="3.8600" y2="9.0600" width="0.1200" layer="21"/> <wire x1="-3.8600" y1="8.8150" x2="-3.8600" y2="9.0600" width="0.1200" layer="21"/> <wire x1="-3.8600" y1="-9.0600" x2="-3.8600" y2="-8.8150" width="0.1200" layer="21"/>@@ -94,40 +106,41 @@ </packages> <symbols> <symbol name="MCP23017x-x-SO">- <wire x1="-10.16" y1="22.86" x2="10.16" y2="22.86" width="0.254" layer="94"/>- <wire x1="10.16" y1="22.86" x2="10.16" y2="-22.86" width="0.254" layer="94"/>- <wire x1="10.16" y1="-22.86" x2="-10.16" y2="-22.86" width="0.254" layer="94"/>- <wire x1="-10.16" y1="-22.86" x2="-10.16" y2="22.86" width="0.254" layer="94"/>- <text x="0" y="25.4" size="1.27" layer="95" align="bottom-center">>NAME</text>- <text x="0" y="-25.4" size="1.27" layer="96" align="top-center">>VALUE</text>- <pin name="GPB0" x="12.7" y="-2.54" length="short" direction="io" rot="R180"/>- <pin name="GPB1" x="12.7" y="-5.08" length="short" direction="io" rot="R180"/>- <pin name="GPB2" x="12.7" y="-7.62" length="short" direction="io" rot="R180"/>- <pin name="GPB3" x="12.7" y="-10.16" length="short" direction="io" rot="R180"/>- <pin name="GPB4" x="12.7" y="-12.7" length="short" direction="io" rot="R180"/>- <pin name="GPB5" x="12.7" y="-15.24" length="short" direction="io" rot="R180"/>- <pin name="GPB6" x="12.7" y="-17.78" length="short" direction="io" rot="R180"/>- <pin name="GPB7" x="12.7" y="-20.32" length="short" direction="out" rot="R180"/>- <pin name="V_{DD}" x="0" y="25.4" length="short" direction="pwr" rot="R270"/>- <pin name="V_{SS}" x="0" y="-25.4" length="short" direction="pwr" rot="R90"/>- <pin name="NC" x="-10.16" y="15.24" length="short" direction="io"/>- <pin name="SCK" x="-12.7" y="20.32" length="short" direction="in"/>- <pin name="SDA" x="-12.7" y="17.78" length="short" direction="io"/>- <pin name="NC@2" x="-10.16" y="12.7" length="short" direction="io"/>- <pin name="A0" x="-12.7" y="-15.24" length="short" direction="in"/>- <pin name="A1" x="-12.7" y="-17.78" length="short" direction="in"/>- <pin name="A2" x="-12.7" y="-20.32" length="short" direction="in"/>- <pin name="~{RESET}" x="-12.7" y="-2.54" length="short" direction="in"/>- <pin name="INTB" x="-12.7" y="2.54" length="short" direction="hiz"/>- <pin name="INTA" x="-12.7" y="5.08" length="short" direction="hiz"/>- <pin name="GPA0" x="12.7" y="20.32" length="short" direction="io" rot="R180"/>- <pin name="GPA1" x="12.7" y="17.78" length="short" direction="io" rot="R180"/>- <pin name="GPA2" x="12.7" y="15.24" length="short" direction="io" rot="R180"/>- <pin name="GPA3" x="12.7" y="12.7" length="short" direction="io" rot="R180"/>- <pin name="GPA4" x="12.7" y="10.16" length="short" direction="io" rot="R180"/>- <pin name="GPA5" x="12.7" y="7.62" length="short" direction="io" rot="R180"/>- <pin name="GPA6" x="12.7" y="5.08" length="short" direction="io" rot="R180"/>- <pin name="GPA7" x="12.7" y="2.54" length="short" direction="out" rot="R180"/>+ <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</description>+ <wire x1="-12.7" y1="33.02" x2="12.7" y2="33.02" width="0.254" layer="94"/>+ <wire x1="12.7" y1="33.02" x2="12.7" y2="-33.02" width="0.254" layer="94"/>+ <wire x1="12.7" y1="-33.02" x2="-12.7" y2="-33.02" width="0.254" layer="94"/>+ <wire x1="-12.7" y1="-33.02" x2="-12.7" y2="33.02" width="0.254" layer="94"/>+ <text x="-9.3980" y="24.6380" size="1.27" layer="95" align="center">>NAME</text>+ <text x="11.1760" y="24.6380" size="1.27" layer="96" align="center">>VALUE</text>+ <pin name="GPB0" x="17.78" y="2.539999999999999" length="middle" direction="io" rot="R180"/>+ <pin name="GPB1" x="17.78" y="0" length="middle" direction="io" rot="R180"/>+ <pin name="GPB2" x="17.78" y="-2.5400000000000027" length="middle" direction="io" rot="R180"/>+ <pin name="GPB3" x="17.78" y="-5.080000000000002" length="middle" direction="io" rot="R180"/>+ <pin name="GPB4" x="17.78" y="-7.620000000000001" length="middle" direction="io" rot="R180"/>+ <pin name="GPB5" x="17.78" y="-10.16" length="middle" direction="io" rot="R180"/>+ <pin name="GPB6" x="17.78" y="-12.7" length="middle" direction="io" rot="R180"/>+ <pin name="GPB7" x="17.78" y="27.94" length="middle" direction="out" rot="R180"/>+ <pin name="V__DD" x="-17.78" y="15.24" length="middle" direction="pwr"/>+ <pin name="V__SS" x="-17.78" y="12.7" length="middle" direction="pwr"/>+ <pin name="NC" x="17.78" y="-27.94" length="middle" direction="nc" rot="R180"/>+ <pin name="SCK" x="-17.78" y="22.86" length="middle" direction="in"/>+ <pin name="SDA" x="17.78" y="-22.860000000000003" length="middle" direction="io" rot="R180"/>+ <pin name="NC@2" x="17.78" y="-30.48" length="middle" direction="nc" rot="R180"/>+ <pin name="A0" x="-17.78" y="30.48" length="middle" direction="in"/>+ <pin name="A1" x="-17.78" y="27.94" length="middle" direction="in"/>+ <pin name="A2" x="-17.78" y="25.4" length="middle" direction="in"/>+ <pin name="!RESET!" x="-17.78" y="20.32" length="middle" direction="in"/>+ <pin name="INTB" x="17.78" y="-20.319999999999997" length="middle" direction="hiz" rot="R180"/>+ <pin name="INTA" x="17.78" y="-17.779999999999998" length="middle" direction="hiz" rot="R180"/>+ <pin name="GPA0" x="17.78" y="22.86" length="middle" direction="io" rot="R180"/>+ <pin name="GPA1" x="17.78" y="20.32" length="middle" direction="io" rot="R180"/>+ <pin name="GPA2" x="17.78" y="17.78" length="middle" direction="io" rot="R180"/>+ <pin name="GPA3" x="17.78" y="15.24" length="middle" direction="io" rot="R180"/>+ <pin name="GPA4" x="17.78" y="12.7" length="middle" direction="io" rot="R180"/>+ <pin name="GPA5" x="17.78" y="10.16" length="middle" direction="io" rot="R180"/>+ <pin name="GPA6" x="17.78" y="7.620000000000001" length="middle" direction="io" rot="R180"/>+ <pin name="GPA7" x="17.78" y="30.48" length="middle" direction="out" rot="R180"/> </symbol> </symbols> <devicesets>@@ -137,7 +150,7 @@ <gate name="G$1" symbol="MCP23017x-x-SO" x="0" y="0"/> </gates> <devices>- <device name="" package="MCP23017x-x-SO">+ <device name="" package="SOIC-28W_7.5x17.9mm_P1.27mm"> <connects> <connect gate="G$1" pin="GPB0" pad="1"/> <connect gate="G$1" pin="GPB1" pad="2"/>@@ -147,8 +160,8 @@ <connect gate="G$1" pin="GPB5" pad="6"/> <connect gate="G$1" pin="GPB6" pad="7"/> <connect gate="G$1" pin="GPB7" pad="8"/>- <connect gate="G$1" pin="V_{DD}" pad="9"/>- <connect gate="G$1" pin="V_{SS}" pad="10"/>+ <connect gate="G$1" pin="V__DD" pad="9"/>+ <connect gate="G$1" pin="V__SS" pad="10"/> <connect gate="G$1" pin="NC" pad="11"/> <connect gate="G$1" pin="SCK" pad="12"/> <connect gate="G$1" pin="SDA" pad="13"/>@@ -156,7 +169,7 @@ <connect gate="G$1" pin="A0" pad="15"/> <connect gate="G$1" pin="A1" pad="16"/> <connect gate="G$1" pin="A2" pad="17"/>- <connect gate="G$1" pin="~{RESET}" pad="18"/>+ <connect gate="G$1" pin="!RESET!" pad="18"/> <connect gate="G$1" pin="INTB" pad="19"/> <connect gate="G$1" pin="INTA" pad="20"/> <connect gate="G$1" pin="GPA0" pad="21"/>@@ -168,7 +181,14 @@ <connect gate="G$1" pin="GPA6" pad="27"/> <connect gate="G$1" pin="GPA7" pad="28"/> </connects>- <technologies><technology name=""/></technologies>+ <technologies>+ <technology name="">+ <attribute name="MPN" value="MCP23017" constant="no"/>+ <attribute name="MANUFACTURER" value="Microchip Technology" constant="no"/>+ <attribute name="DATASHEET" value="https://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf" constant="no"/>+ <attribute name="ADOM_WIKI" value="https://wiki.adom.inc/adom/mcp23017" constant="no"/>+ </technology>+ </technologies> </device> </devices> </deviceset>
package.json+2−2@@ -1,6 +1,6 @@ { "slug": "mcp23017",- "version": "0.1.0",+ "version": "1.0.1", "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": [@@ -28,4 +28,4 @@ "viewers/symbol.html", "viewers/footprint.html" ]-}+}
page.json+43−3@@ -4,7 +4,7 @@ "slug": "mcp23017", "title": "MCP23017", "brief": "Microchip 16-bit I2C I/O expander, SOIC-28. Two 8-bit ports, interrupts, configurable pull-ups, 3 address pins. Datasheet-verified.",- "version": "0.1.0",+ "version": "1.0.1", "license": "CC-BY-SA-4.0", "tags": [ "component",@@ -222,7 +222,47 @@ "viewers": { "symbol": "viewers/symbol.html", "footprint": "viewers/footprint.html"- }+ },+ "models_3d": [+ {+ "file": "mcp23017.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.0,+ "centre_offset_mm": 0.0,+ "footprint_binding": "identity",+ "sha256": "b889a13dbe9ec59e79fa9f1b5118b00bfa54f9582392335ff3365b64afc264b1",+ "checked": "2026-11-10",+ "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"+ },+ {+ "file": "mcp23017-etched.step",+ "role": "plain",+ "up": "Z",+ "units": "mm",+ "origin": "footprint origin = pad-pattern centre",+ "seat": "z = 0",+ "extents_mm": [+ 10.3,+ 17.9,+ 2.78+ ],+ "zmin_mm": -0.0,+ "centre_offset_mm": 0.0,+ "footprint_binding": "identity",+ "sha256": "de169592cb98022b3efb96f8d1bea6c2f76dc541c330fe5cf6c1e7202d217dbe",+ "checked": "2026-11-10",+ "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"+ }+ ] }, "metadata": { "specs": {@@ -283,4 +323,4 @@ "kind": "packaging" } ]-}+}