EEPROM memory/Two wires/05. The pull-up jumper
Two wires · 05 of 10

The pull-up jumper

The two pull-ups reach VCC through a copper strip on the back, marked I2C PULL-UP. It ships joined, and with one or two I2C blocks on a short bus it should stay joined: every block's pull-ups in parallel make the bus faster, not slower. Cut it only when the bus already has strong pull-ups, and never when it has none.

What the strip does

The pull-ups on SDA and SCL do not go straight to VCC. They meet at one pad on the back of the board, and a strip of copper about half a millimetre wide joins that pad to VCC. With the strip, both pull-ups are connected. Cut it, and both come off together.

Every I2C bus needs pull-ups somewhere, and only somewhere: one pair would do for the whole bus. Blocks bring their own so that each works alone. The jumper is for when several are on one bus and there are more than you want.

How many is too many

The pull-up jumper
Other I2C blocks on the bus
The TK31's I2C PULL-UP
VCC
Wiring capacitance100 pF
Pull-up on the bus
10 kΩ
Rise time
847 ns
Sink current
0.33 mA
Fine at 100 kHz, the default in every sketch here, and too slow for 400 kHz, which needs the line up in 300 ns. Shorter wires bring it in: one board's 10 kΩ rises inside 300 ns below about 35 pF.

Add blocks and watch the rise time. Each block's pair of 10 kΩ joins the others in parallel, so the resistance falls and the lines rise faster. That is the opposite of what most people expect from adding something to a bus.

The cost is current. Whoever pulls a line low has to sink everything the pull-ups supply, and I2C only promises 3 mA. At 5 V that is 1.7 kΩ, which is six of these boards in parallel. Short of that there is nothing to gain by cutting.

So: one to five blocks, leave it joined. Cut it when your bus already has strong pull-ups of its own, a few kilohms on another module, and you are adding the TK31 beside them. Never cut it when the TK31 is the only thing on the bus that has any.

If you cut it

Score across the strip with a craft knife and check with a multimeter that the two pads no longer beep. It is reversible: a blob of solder across the pads joins them again.

The rise-time numbers above are worked out from a formula, not measured, and the capacitance is a guess you move with the slider. A breadboard and a few jumper wires come to something like 100 pF.

When it does not work

I cut the jumper and now nothing answers.

Nothing else on the bus had pull-ups, so SDA and SCL float. Bridge the two pads again with a blob of solder, or add a 4.7 kΩ to 10 kΩ resistor from each line to VCC somewhere on the bus.

How do I cut it without damaging the board?

Score across the thin copper strip between the two pads, two or three times, with a sharp craft knife, then check with a multimeter's continuity setting that the pads are no longer joined. Do not dig into the board around it.

Does adding a second I2C block overload the bus?

Not with two or three of these. Each adds 10 kΩ in parallel, so two make 5 kΩ and three make about 3.3 kΩ, and the current a device must sink stays well under the 3 mA I2C allows. Around six boards on 5 V is where cutting some starts to matter.

Why does my bus fail at 400 kHz but work at 100 kHz?

The line cannot rise fast enough: 10 kΩ into the capacitance of long jumper wires. Shorten the wires, and leave the other blocks' pull-ups connected: each pair in parallel helps. Every sketch in this book runs at the default 100 kHz, which does not have this problem.

Where this goes next

Four wires and a number that survives the power going off.

The first byte

Edit this page — content/books/eeprom-memory/the-pull-up-jumper.mdx

Community

Questions about this product

See what other owners have asked, and read their solutions.

Ask a question ↗

EEPROM Memory

Loading discussions…

Discuss this article

Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.

Browse Modules and blocks on the forum