I2C Jeopardy : Bus length

Hey!
Having completed my first I2C based RTC module, I went through the general guidelines outlining the precautions while deploying the I2C bus.
Try to clear the following doubts I have regarding the bus :-

  1. Why are we told to restrict the length of the I2C bus to less than a meter?
  2. Why are we told to add pullup resistors while employing more than a single I2C device on the bus?

Expounding the solutions to the aforementioned questions in layman's terms would be highly beneficial to this soul.

I2C bus specification

Why are we told to restrict the length of the I2C bus to less than a meter?

The real limit on wire length has more to do with capacitance and bus speed than actual wire length. The faster the bus frequency The lower the total capacitance must be.

Why are we told to add pullup resistors while employing more than a single I2C device on the bus?

I don't know who told you that, but they are wrong. The pull up resistors are required for even a single device on the bus. The SDA and SCL signals are open collector. They must be pulled up so they are not floating, then a device on the bus can pull the line down for their signal.

Google "I2C bus length" for many pages of information.

groundfungus:
I don’t know who told you that, but they are wrong. The pull up resistors are required for even a single device on the bus. The SDA and SCL signals are open collector. They must be pulled up so they are not floating, then a device on the bus can pull the line down for their signal.

Google “I2C bus length” for many pages of information.

AFAIK Arduino has internal pull-ups on I2C lines. But they are weak and unable to drive large capacitance (long wires, too much devices) at high speeds.

  1. Why are we told to restrict the length of the I2C bus to less than a meter?

The laws physics.

Mark

The real limit on wire length has more to do with capacitance and bus speed than actual wire length. The faster the bus frequency The lower the total capacitance must be.

By capacitance, are you alluding to capacitive reactance?

The I2C lines are driven high by the pullup resistors only, so that you can determine the time constant of that RC low pass filter from the resistors and the combined capacitance of the line and all connected pins.

A bus should be terminated (with pullup resistors) at both ends, to reduce the chance for extinction and reflections.