Wednesday, 19 September 2018

communication - I2C on FFC or IDE cable - interference?


This is a follow-up question on this answer. I need to communicate with I2C over approximately 10cm and I'd like to use an FFC or IDE cable for that.


Earlier, I used an FFC cable to link a segment LCD screen to a 7106 IC. Some segments flashed a bit, and after some testing I found out that was because of interference between the wires. I used a standard flat IDE connector cable from an old computer for this.


I'd like to know if I2C could have problems with communicating over 10cm of a FFC or IDE cable, when data and clock line are directly next to each other. If so, is there a way to resolve this? Would placing a ground and 5V line in between help?



Answer



Use the tandem shielding approach. Ground in between each line...


Going across the cable: G, S1, G, S2, G, S3, ...


That's the easiest and it will definitely help, probably enough to solve your problem. If not, there are more exotic solutions like differential buffers, increasing the drive impedance to slow down the edge-rate, etc...



I should add, the you won't have problems with I2C over 10cm on FFC or Ribbon even without elaborate grounding/shielding mechanisms, but it can't hurt.


You can estimate/prove it this way... the line behaves like a lumped element if the line is less than 1/10 the wavelength. In copper (with insulation) the speed of light is about half that of vacuum (conservative since slower = shorter).


At 400kHz, the safe edge rate is 4MHz (10X). Ergo, the wavelength at 4MHz in insulated copper is >30 meters. So as long as your I2C drivers don't switch too quickly (they don't) you are safe for at least around 3 meters (30/10) of cable.


In practice, you'll have the other problem (the signal being too slow rather than too fast) at those longer cable lengths. You'll need more drive strength to go that far, but 10cm no problem.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...