Recently I was building some custom boards which had an 0.96″ OLED display that was remotely mounted. In my prototyping I noticed no ill effects from extending the 4 core cable to the OLED display.
The wiring comprised of GND, 3.3V, SCL and SDA signals. I had 4.7K pullups at the board side.
Then came the issue when I had replicate across the production units with the cables at 2.2m each.
I was perplexed since I had a working example at 2m.
The only difference was the prototype used 4 core screened audio cable (individual screens) vs the production version of single screened UTP.
Turns out, CAT6 is a poor choice for I2C even at lengths of a metre or so. Even with the following configuration:
- SDA on Orange
- GND on Orange/White
- SCL on Brown
- GND on Brown/White
- 3.3V on Green
- GND on Green/White
- 3.3V on Blue
- GND on Blue/White
I tried varying the clock speed from 700KHz to 400KHz to 100KHz to 10KHz and even 100Hz…no such luck.
I even tried adding a separate 3.3V power supply and additional pull ups at the OLED panel. No luck.
Turns out the solution was under my nose all along. The 4 core screened audio cable. Specifically from Jaycar, WB-1510, works flawlessly at lengths up to 3m (that I have tested). It could work with even longer lengths! Just make sure you ground all the screens at the board end to earth/chassis.
Hope this helps someone out there that is having issues with I2C beyond a metre….