DI2C -The Differential Version of I2C

DI2C -The Differential Version of I2C

In serial interface world, there are differential and non-differential protocols. The most famous one of differential interfaces is USB besides HDMI and others, while I2C is a non-differential one.
Joshua Vasquez from Hackaday decided to use DI2C (differential version of I2C) to communicate with a string of BNO055 sensor boards (a smart 9-DOF sensor with I2C interface).

If you’re not familiar with differential communication, the method behind it is straightforward; the line has two channels (positive and negative), where each line has the same signal but with an opposite voltage. The receiver then will calculate the difference between them. Mathematically:

Vb = -Va, So:
Vout = Va – Vb = Va – (-Va)

Image Source: Hackaday

Now, what if there was a noise?. The noise will affect almost identically on both signals with the same voltage level. As a result the receiver can omit the noise in the output.

Image Source: Hackaday

Back to I2C; Joshua used PCA9615 chip from NXP which is a bridge between the normal 2-wire I2C-bus and the 4-wire DI2C-bus.

PCA9615 Block Diagram.
PCA9615 Block Diagram. DSCLP and DSCLM are the clock plus/minus input/output respectively. While DSDAP and DSDAM are the datat plus/minus input/output.

As an use case; Joshua used DI2C to build an IMU Noodle for modeling a piece of foam twisting and turning in a 3D space simulator using data comes from a string of cards contain the BNO055 sensor and PCA9615 bridge.

PCA9615 was used in each Joshua’s card to bridge the normal I2C signals to DI2C ones. By bridging I2C to DI2C, PCA9615 makes the capability of using longer cables and I2C more rugged in noisy environments.

(a) PCA9615 Application Diagram (b) Ribbon-cable Connectors. (c) BNO055 with PCA9615 Module.

The PCB design files (KiCAD) and firmware can be downloaded from Joshua’s repository on Github. Moreover, Joshua mentioned important tips to setup DI2C in your next design. You can see these tips in his blog post on Hackaday.

IMU Noodle in Action
Please follow and like us:
Pin Share

Embedded Hardware Engineer interested in open hardware and was born in the same year as Linux. Yahya is the editor-in-chief of Atadiat and believes in the importance of sharing free, practical, spam-free and high quality written content with others. His experience with Embedded Systems includes developing firmware with bare-metal C and Arduino, designing PCB&schematic and content creation.

view all posts by yahya
Notify of

Inline Feedbacks
View all comments
Get new posts by email:
Get new posts by email:

Join 97,426 other subscribers