Friday, 9 November 2007

3V to 5V I2C translation problem

Knowing the FoxBoard is running on 3V3, this means the levels of my I2C output are between 0V and 3V3.

However, I want to power my own devices with 5V, if possible. This is because most devices I'm going to use, are working just fine at 5V (some of them are also capable of working at lower voltages, but for simplicity I will stick to one supply of 5V).

Luckily, nowadays lots of IC's are available, which are able to do very nice things. Such IC is the PCA9518 from NXP (formerly known as Philips), an expandable 5-channel I2C hub.

This device is mainly developed to solve the capacitance load an I2C bus is allowed to have (max. 400pF). It has one "main" I2C input, while it can have up to 4 extra I2C outputs, completely isolated one from the other. So, the main I2C input doesn't see neither of the output loads. Each output load individually also doesn't "see" the capacitance load of the other outputs.
This way, you can have multiple I2C paths while adhering the max. bus capacitance of 400pF.

Next, this device has 5V tolerant I2C lines. That means, the device itself is powered with 3V3 (so, can be connected to the power supply of the FoxBoard), but the pins can "communicate" with I2C levels that go till 5V. Result: device can be used as a 3V3 to 5V translator, without having to have complex voltage levelling circuitry in between. This is a very important input for me, since that will solve my voltage level problem.

Another nice thing about the PCA9518 is that it can be "cascaded" with other PCA9518 chips, extending your I2C bus almost infinitely.

More information about the PCA9518 can be found here.

If you check the application note on page 10, then you will see that in the example given there are two PCA9518 devices, cascaded one to the other. Bpth PCA9518 devices are powered with 3V3, together with the I2C bus master.
But all the other I2C devices are powered with 5V, showing you it's simple doable to "convert" the levels from 3V3 to 5V.

No comments: