I2C cable problem (!?)


This situation is driving me crazy.

I have an accelerometer which communicates with the arduino through I2C.

I put together some jumper wires in a total of 1.40m, and I had no problem at all in the I2C communication with the arduino.

However, if I use one single cable (with 4 wires), with approximately 1m, to connect the accelelometer to the arduino, there is no communication.

I have tried everything, replace the single cable, replace the headers, solder the cable directly to the accelelometer, check if the solder is done properly, etc.

What is wrong?

Thanks, AMagro

Which accelerometer is it (which module) ? Which Arduino board ? Do you use pullup resistors ? What value ? Is there a level shifter ? What cable are you using ?

The SDA and SCL of I2C can't handle crosstalk. When one of those signals causes a peak in the other wire, the I2C is no longer working. The official specification for the capacitance (capacitance as in capacitor) of SDA and SCL is very limiting.

That means that when you have separate wires, you don't have a problem. As soon as you tie the wires together, you have big problems.

Hi , I agree that crosstalk is your problem. When you had 1.4m of wire, each wire was separated. So the signal in one would not get induced in the other due to capacitance between the wires being low.

In a cable the wires are side by side and so the capacitance between them is now higher, this means that signals from one wire can be induced into another.

In your case it is causing corruption of the data being transmitted.

Try google I2C communication cable.

Tom .. :)


The problem has been solved separating the cables, due to problems related with capacitance, although it isn’t a practical solution, but for now it will do.

In the future, I will have to learn more about I2C, in order to be able to use a single cable.

Thank you anyway, AMagro

The I2C bus was not designed to be used with a cable. It is ment to be used on the same pcb board.