I have some I2C sensors which are capable of running from low supply voltages. Host microcontroller has 3,3 or 5V supply, which is usually out of absolute maximum range, when I2C device is supplied with e.g. 1,8V. The sensor is usually very low power, which means simple emitter follower could do the low voltage supply.
The circuit schematic is shown in following drawing (click to enlarge):
The circuit translates from higher to lower voltage. The clock line is unidirectional, while data should be bidirectional. The diodes D1 and D2 must be schottky. When the line at P1 is pulled low, the voltage on the line at P2 is equal to voltage drop across diode. This should be lower than low rail for logic 0 on the bus. Usually this level is 0,3 × Ucc. For 1,8V this result in about 540mV. General purpose schottky diode has voltage drop of about 340mV, which should be good enough. With 1,2V supply, the level is same, which means the circuit may not operate properly below about 1,5V supply.
The data line SDA is bidirectional. So, the transistor Q2 is added to pull down the host side SDA_H when device pulls down SDA_L line. In some cases when the device requires clock stretching, the CLK line should be bidirectional, too.
Supply voltage for low-power I2C device is provided with simple NPN emitter follower made around Q2). With small signal diode (LL4148), the voltage was around 1,7V.
The circuit was tested in prototyping PCB produced with toner-transfer method.
The layout in 1:1 can be printed on A4 page (or any other), but keep 100% size to maintain proper size when making PCBs:
i2clevelshifter-TT – this artwork is already mirrored, just print on paper and laminate.
Here’s documentation for the prototyping PCB: i2clevelshifter-doc
I can send full altium project by email. Just ask via contact email: info(at)pavlin.si
Here’s finished prototype:
The oscillogram shows operation from the host side to the device side. Same result is when driving SDA low at the device side.
Written by Marko, 11.oct.2015