MCP23017 i2c 16gpio

made another part, the gpio expansion chip with i2c bus. very useful
MCP23017.fzpz (12.4 KB)

1 Like

Not bad, but it has a few problems:


references to the TLC5940 this was cloned from, family sparkfun led driver rather than I2C IO Expander

pcb svg:

missing the copper1 group, some of the connectors in root rather than copper0, some bad or duplicate pads


All the connector terminal definitions are groups (which won’t work) rather than rectangles, and pin 11 (CS) is missing entirely. The terminal problem causes the schematic part to not be aligned on the .1 grid and the pin connections to terminate in the middle of the pin rather than the end (visible in schematic in the fzz file below). The numbering of the terminals is so disjoint that I started again by using a generic IC from core, setting it to 28 pins 300mil and exporting it. I then copied the metadata from your part’s fpz file in to the new one from the generic part, left the breadboard and pcb svgs as is (because they are correct for what we needed) and then copied your schematic svg over top of the generic one and fixed up the flaws in it. Then I did my usual tests in the new part and then tried to do the same (without success) with your original part. Both are visible in the fzz file below. You can export the new part (varient2 in inspector where the original part is varient1) from the temp parts bin the fzz file will create to recover a usable fzpz file. Of note in the fzz, breadboard is pretty much the same except note no connection (a red dot rather than green) on pin 11 (because the connection doesn’t exist in the fpz file and the same on pin 14 (which is NC anyway so doesn’t matter, but the chip won’t work without a low connection on pin 11!). There is also an unrouted rats nest line because of problems in pcb view. Switching to schematic again pretty much the same except note the lines connecting to the middle of the pin (which is why they are routed at an angle) due to the lack of a correctly defined terminal connection and the 2 connectors with no connection because pins 11 and 14 don’t have connections. In PCB view we see a variety of problems, the original part has a bunch of connections (pin1 and 28 through 21) that have no green dot (due to no connector) on the pcb and traces will only route on the bottom layer (due to the lack of a copper1 group) and a bunch of the traces route to the center of the IC rather than the pads as they should because the pad definitions are incorrect. The new part routes all connections correctly. Hope this helps (it helps me because I have some of these chips, and hadn’t gotten around to making this part yet …).

MCP23017.fzz (46.8 KB)


1 Like

i’m new of this…i spent very long time to figure it out using inkscape and see font. i viw the difference and i admit that your part is better.
i can just copy/paste the same group copper0 and rename it as copper1? is that sufficient? sorry for my bad english

Your english is understandable which is all thats important :slight_smile: , look at my answer in the RS 485 part and if that doesn’t help feel free to ask again. Parts creation is a complex process and you are doing fairly well already but it takes experience and asking lots of questions (I certainly did when I started :slight_smile: ) to figure it out. One thing that helps is to start your part from a generic IC from the core parts bin. Use inspector to set the number of pins your final part needs and then use parts editor to create a new part and export it then change the resulting svgs. The correct groups and connectors in all the files will be created by the export process which helps a lot until you learn what all the various groups need to look like. I usually start that way even though I now know what the group need to look like and could do it from scratch if I needed to.