I have an I2C sensor that has a some 89kΩ pull-up resistors on the SDA and SCL lines. The controller I'm using has 2.2kΩ internal resistors on these lines as well. I'm worried that the sensor won't be able to handle the vastly decreased pull-up resistance induced by joining up the sensor to the controller.

Is there some way that I can couple the two together so that the resistance of the bus is the intended 89K?

  • 1
    \$\begingroup\$ 2.2k pull up doesn't seem out of line - however, you might end up having to operate at a slower data rate due to increased RC time constant. Check your datasheet. \$\endgroup\$
    – Toybuilder
    Commented Jun 1, 2011 at 15:09
  • \$\begingroup\$ What is the sensor? \$\endgroup\$ Commented Jun 1, 2011 at 15:16
  • 2
    \$\begingroup\$ @Toybuilder Lower R means lower RC time constant, so speed is not the issue. The question is whether the sensor is strong enough to pull down the signals. \$\endgroup\$
    – starblue
    Commented Jun 1, 2011 at 16:00
  • \$\begingroup\$ @Leon: It's a HiTechnic Compass Sensor, designed to work with the Lego Mindstorms kit. Rather than buy a new compass, we figured we'd cut open a wire, and interface it to our FEZ Panda II. \$\endgroup\$
    – Eric
    Commented Jun 1, 2011 at 18:32
  • \$\begingroup\$ I would guess the sensor doesn't require 89k; the sensor manufacturer has put in a weak pullup so that if the pins become unconnected, they will go high and no bad things happen. Any system you'd put that into would have a much smaller pullup as well. \$\endgroup\$
    – greggo
    Commented Apr 13, 2013 at 18:49

3 Answers 3


You can use an I2C bus extender which can act as a buffer in between the two devices.


These devices may have other names as well, like I2C bus "line buffer". They're made by a variety of manufacturers (TI and NXP come to mind). Pick one that fits your needs.


At 5V a pull-up of 2.2kΩ would mean a current of less than 3mA, which is within the limits of the I²C specification.

So I suppose it would just work.

Edit: The I/O ports of the LEGO Mindstorms NXT parts have a pull-up of 82KΩ and a series resistor in the output of 4.7kΩ, which is different from standard I²C. Together with diodes against the power rails the series resistor protects the I/O port against overvoltage, to make it more robust as a toy.

Due to the series resistor it won't be able to pull down a line with a pull-up of 2.2kΩ, so I think it won't work without some extra component.

  • \$\begingroup\$ You'd be surprised. I was using Benchmarq SMBus (=I2C essentially) chips about 10 years ago that had really wimpy V_OL specs. Basically the voltage they could sink to at high pullup currents was barely low enough to produce a valid I2C logic low, and if there was any voltage drop between grounds, or noise, there were tons of data errors. \$\endgroup\$
    – Jason S
    Commented Jun 2, 2011 at 2:32

I don't know what type of µC you are using. But some give you the option to turn the pull-up resistors on or off.


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.