Even though there are questions about ESD protection for i2c bus already in this forum, I wanted to ask how to suppress the clamping voltage of a TVS diode to a safe level. As an example, the following plot shows the clamping voltage of RClamp0582BQ. enter image description here

Let's say a microcontroller's SCL, SDA pins are connected to a sensor over wires. Then one wants to protect the chips against an ESD strike caused by human contact. In the circuit below, the TVS diodes clamp the fast transient. The 100 ohm resistors slow down the short current and dissipate power to reduce the stress on the TVS diodes. However, How does one suppress the clamping voltage further ? enter image description here (1) an additional ~1k ohm series resistor (as in the image above)
If the device is powered off the impedance of the SCL and SDA pins should be already high, so 1k ohm would not help that much, right?

(2) a ~20pF capacitor
Would it be good to place such small bypass capacitor next to the I/O pins? Since the capacitance should not exceed 400pF, it might be difficult to use a higher value, when there are many slave devices. But I'm not sure if 20pF or something similar is useful.

  • 2
    \$\begingroup\$ You most certainly cannot have 400pF with a 10K pullup resistor, even at 100kHz. You need to run the numbers on the bus capacitance and include the TVS capacitance. Protection is all fine and good, but I imagine you also want it to work reliably. \$\endgroup\$ Commented Jul 24, 2018 at 14:31
  • \$\begingroup\$ @SpehroPefhany Thank you for the comment. I can change the pullup resistor value. I was more concerned about the clamping voltage. Honestly I don't understand how the energy is absorbed past the TVS diode. Could you please explain how the series resistor will do the job? \$\endgroup\$
    – Nownuri
    Commented Jul 24, 2018 at 15:51
  • 1
    \$\begingroup\$ Why do you need to reduce the clamping voltage further? Most ICs including microcontrollers can withstand up to 2,000V ESD. The only reason to reduce it further would be to prevent corruption of I2C signals and then you would have to reduce it almost to zero. \$\endgroup\$
    – EE_socal
    Commented Jul 24, 2018 at 16:23
  • \$\begingroup\$ @EE_socal You're right! I completely overlooked the fact that many ICs have internal ESD protection circuit.... \$\endgroup\$
    – Nownuri
    Commented Jul 24, 2018 at 16:52
  • \$\begingroup\$ You can't just reduce the pullup without decreasing the series resistors. Already they are reducing noise margin. \$\endgroup\$ Commented Jul 24, 2018 at 17:53

1 Answer 1


I've got a couple of comments.

Series resistance. When the master drives an I²C line low, the series resistors and the pull-up resistors form a voltage divider. As a result, the logic low voltage which the slave sees will be higher. You need to make sure that this actual logic low is below the logic low threshold for each slave device. (Similar rationale applies when slave is driving an I²C line and master is receiving information.)

Bus capacitance. TVS diodes have their own parasitic capacitance. TVS with capacitance on the order of few pF are available. Look for TVS intended for protecting USB 2.0 ports.

The tradeoff is between series resistance, pull-up resistance, bus capacitance, and bus speed. If this were my design, I would definitely remove the 1 kΩ resistors, and 100 Ω maybe too (maybe leave pads for the 100 Ω).

Because of bus capacitance and weak pull-up, you you may have to reduce the bit rate on the I²C bus.

Are you overextending the I²C beyond its intended application? You are running the I²C through wires to multiple board. That's not something I²C is intended for. You may end-up like me that time.

  • \$\begingroup\$ Thank you for the comments! I was planning to do what you expected ... I have a master on a board and 6 slaves. Two slaves are very close to the master(5~10cm), but the distances to other 4 slaves are from 50cm to 100cm. The master(MCU) needs to monitor the temperatures of five spots, this is the reason why I have so many slaves. \$\endgroup\$
    – Nownuri
    Commented Jul 24, 2018 at 15:40
  • \$\begingroup\$ I will check again the pull up resistors and the bus capacitance in my circuit. Also it should be fine to change the 1k to 100. But is the 100ohm large enough to absorb the residual transient with the clamping voltage of ~10V ? \$\endgroup\$
    – Nownuri
    Commented Jul 24, 2018 at 15:47
  • \$\begingroup\$ I think I can use a i2c buffer/repeater like this product. ti.com/lit/ds/symlink/p82b96.pdf \$\endgroup\$
    – Nownuri
    Commented Jul 24, 2018 at 16:09

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.