I wanted to put some protection on my PI's pins and chose the zener voltage protection one, as described here. I used TZX3V3A zener diodes and 330 ohms resistors. Like this :


Then I tried to connect an external IC with I2C but it failed. However, when I remove the zener diodes it works perfectly.

I also tested my diodes separately with higher voltage and they seem to do their job nicely.

Any ideas why it won't work ? Or some more things I could try ?

2 Answers 2


The Zener diode will not provide the protection you think, for many reasons.

The real reason it doesn't work is the 330Ω resistor. This will form a voltage divider (330/(1800 + 300) or 1/7 and mean the absolute minimum the I2C circuit could pull the Pi is 3.3/7 or ~ 0.5v plus the drop across the driver.

The I2C interface uses a number of open collector/drain devices with pull-up to the supply (the Pi has on-board 1.8k pull-up), so there should be no need for "protection" as there should be no active pull-up involved. If you want to be sure check that the external circuits have no pull-up to 5V (or indeed any other supply). If you want to be extra secure use a Schottky diode to clamp the I2C pins to 3.3v

  • How did you work out the 1800+300 part?
    – php_nub_qq
    Apr 30, 2020 at 7:44

Zeners have some current leaking, even if voltage is below their rating. Since I2C uses pull-ups resistors (1.8K) and no direct 3.3V, this leakage will lower the voltage. I think this is what is happening in your case. Try measuring the voltage at the GPIO pin, using a multimeter.

Try removing the 330 resistor. Alternatively use a 3.6V zener instead.

I also found this question that is similar.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.