There’s often some confusion about how the Bus Pirate’s on-board pull-up resistors work. It doesn’t help that the implementation changes drastically from one hardware revision to the next, a lot of the original device tutorials are difficult to follow if you have a Bus Pirate v2go.

The figure outlines the basic parts of the Bus Pirate v2go on-board pull-up resistors. A pull-up (or pull-down) voltage supplied through the Vpullup (Vpu) pin is fed into a  CD4066 analog switch (IC3). The 4066 distributes the pull-up voltage to four 10K resistors (R20-23) that connect to the MOSI, CLOCK, MISO, and CS bus pins.

Continue reading our practical guide to the Bus Pirate v2go’s pull-up resistors after the break.

I2C>v <<< voltage monitor report
VOLTAGE MONITOR: 5V: 5.0 | 3.3V: 3.3 | VPULLUP: 5.0 |

You must connect the Vpullup pin to a voltage. The pull-up resistors aren’t hard-wired to a power supply, you can apply any voltage level that’s needed (from ground to +5volts). Type ‘V’ in the Bus Pirate terminal to see the current voltage on the Vpullup pin.

When the main microcontroller (IC1) holds the 4066 enable pin at 0volts the pull-up voltage is blocked and nothing goes through the resistors. When the enable pin is high, the pull-up voltage is allowed through the 4066 and the resistors hold the bus pins at the level of the Vpullup pin.

I2C>p <<< pull-up resistor menu
1. Pullup off
2. Pullup on
(1) >2 <<< enable pull-up resistors

Use the ‘p’ menu in the Bus Pirate terminal to configure the pull-up resistors. Option 2 enables the 4066, and the voltage on the Vpullup pin is applied to the 10K pull-up resistors.

Read more about pull-up resistors and the Bus Pirate’s open collector output mode (HiZ) at Hack a Day: Mixed voltage interfacing with the Bus Pirate.