Jumper pads for I2C addressing

Hi - I am trying to generate 3 jumper pads in KiCAD 4.0.7 to use for I2C addressing. The same as this Adafruit board:

I used the jumpers shown below in the schematic but don’t know what footprint to associate with it. At present I just have 1206 SMD pads there.

This is what I came up with, I used 0805 SMD resistor footprints but they are not the same as the ones in the Adafruit PCB:

Aren’t those solder bridgeable pads? You may have to design your own.

you may find this useful


Thanks for the reply - I’ll check that out.

I did some searching for ‘solder jumpers’ based on the above and found KiCAD has the GS? parts in the Conn library.

1 Like

Using solder bridgeable pads is fine if this just a one-off board but for production purposes it is more common to use shorting (0 ohm) resistors as these can be automatically assembled with a pick & place machine. So if your other components are 1206 then just use 1206 resistor footprints.

Also, it is more common to have pull-up resistors and use the jumpers to short to ground.


Ok - thanks for the advice.

Interesting. What is the reason for this?

I think I have these correct now however I am not sure why the GND via’s are closed on the bottom of the PCB. Shouldn’t these be open ie. drilled all the way through ?

Bottom layer has a copper fill on GND. Top layer is copper fill on +5VDC.

I have also noticed there is a piece of ‘copper corner’ sitting inside the GND ‘through hole’ from the terminal block.

in 3d viewer:
preferences->render options->show holes in zones


I use the 3D viewer as a quick sanity check but you want to check the gerbers for the ‘real answer’ on something like this. I’m using a nightly and just had a real WTF moment. 3D viewer showed things fine. Specifically the footprint for a barrel connector which is basically 3 slots. Turns out the drill file for the gerbers turned them into a single drill hole. I used the experimental gerber format included in the nightlies and got the gerber to come out right. I’m not sure if the board house will accept that though. I was going to take advantage of a cheap place offering free shipping thinking that for $5 it was worth the effort. Now I found an error in the schematic so I might just drop it again. :confused:

The op doesn’t say which IC he’s using but it looks like an I2C port expander so I’ll assume it’s the MCP23017. According to the datasheet the max Vil (low input voltage) is 0.15Vdd, assuming Vdd is 3.3V this is 495mV. Across a 10K resistor this amounts to about 50uA. While the min Vih (high input voltage) is 0.25Vdd + 0.8V, for Vdd = 3.3V this is 1.625V leaving 1.675V of drop across a pull-up resistor. For a 10K resistor this is about 168uA. While both of these currents are well below the input current of the IC, using pull-ups instead of pull-downs offers three times the noise immunity.

Also, with all three jumpers installed there are three 10K resistors in parallel, or 3.3K, between power and ground, not ideal in a power sensitive application. One solution to this is to increase the resistor sizes, perhaps to 100K. This would work as a pull-up but would be approaching the limits of a pull-down, not to mention the increase in noise sensitivity. Another solution would be to install only the pull-up or pull-down but not both. So where you install the jumper to ground remove the pull-up.


I don’t know what the OP’s use case is, but solder jumpers are common on boards by SparkFun and Adafruit because the jumpers are meant to be configured by the end user; the desired configuration is not known at the time of manufacture.

1 Like

Another issue is latch up. You never want to drive an input above the chips power rail or else your input pad turns into a SCR device and shorts the power rail to ground. Depending on your layout that power to the inputs can be on a lightly filtered path and arrive before before the heavily filtered power.

Never connect a input to power without a current limiting resistor.

John Eaton

1 Like

Hi - thanks for the detailed reply. It is the MCP23017 as you guessed ! I understand the comment about 3.3k to ground, this is why I had the pull downs on GND to start with (I have moved them to pullups now as you suggested). I am not sure if the MCP23017 has tri-state pins and what will happen if I just leave them floating ie. not put the pullup in at all. This is just a test PCB with one MCP23017so I can get the feel of working with KiCAD and OshPark. The final project will have 8 x MCP23017 on the one board for 128 I/O. This means each MCP23017 will have a different I2C address configuration that will be set at time of build, there is no requirement to change these jumpers after the board is produced. I just thought for the single MCP23017 board it might be handy to be able to change I2C address for testing purposes.

Yes, I overlooked that scenario.

Latch-up of the parasitic thyristor is less of an issue these days as semiconductor manufacturers use various techniques to attempt to mitigate latch-up sensitivity. Latch-up requires the voltage on a pin to exceed Vdd by a junction drop which usually requires a significant amount of current. This is not an issue if an input is connected with a low impedance path to the chips Vdd pin. Latch-up is more of a concern in applications with multiple power supplies, hot-swap applications or if exposed to radiation.

Just to be pedantic, the input pad doesn’t “turn into” an SCR, it is always part of an SCR formed by parasitic components. Under normal operating conditions the SCR is never triggered. Inputs aren’t the only pins affected by this.

1 Like

Conversation now way above my head :expressionless: !

Managed to get my first SMD test board finished in KiCad. I ended up making a 2 way jumper footprint based on the 0805 SMD resistor part.

Struggling to find an economical connector for the I2C pins - Molex stuff is incredibly expensive here in Australia.

1 Like

I see these “arrow” type solder bridges more often on production PCBs. Didn’t find anything like this in KiCAD footprint library, had to draw my own.

like these? https://github.com/KiCad/kicad-footprints/pull/282