I2C Cable Length

Hi all

I am working on a game that involves 1 master box and then 5 external boxes (one for each player). Essentially, the player boxes each have a 16 bit I2C I/O expander running back to the main box to be controlled by the Arduino. My plan is to control all of this using short runs of cat 5 (2-2.5ft each) from the main box to each player (the extra wires used for power and interrupt detection). I just wanted to check with other people who might know better about the viability of this wiring setup.

Basically, my research shows that the i2c bus can have a max of 400pF on it, and that cat 5 tends to have 15-20pF/ft. At 2.5ft and 5 players, thats 2.5*5*20=250pF. This is in addition to one other chip on the control PCB with the arduino chip, and another elsewhere in the main box (a couple inches of wire tops). So, theoretically, everything should be just fine... but I've learned over the past year of embedded electronics projects that things that theoretically work don't tend to actually work.

So, to people with i2c experience: does this seem like it should work fine? Or, do you think I would be better off putting an i2c buffer (like the PCA9600) on the bus just to be safe?


Ok, so without any responses I think it might be a good idea to just put in a buffer. I’m leaning towards the P82B715, using the setup in figure 4 of this app note. I’m still definitely open to suggestions about all of this though.

2.5 ft I don`t I think you will have any problems with that.

I`ve tried running about 9 ft without problems

Cool, thanks.

One other question. Should I still only have the one pair of pullup resistors on the main board, or should I have a pair on each of the player boards too? Maybe smaller values than the 4.7k or something? I would assume the former, yes?

The former, unless you opt for the buffer.

Ok, thanks.