I2C Level Converter

$3.00 each
$2.70 per unit for buying at least 10
$2.55 per unit for buying at least 25
$2.40 per unit for buying at least 75



29 items in stock
+

DESCRIPTION

Have you ever had to connect a 3.3 volt I2C device to a 5 volt microcontroller before? Have you ever tried to figure out what the correct pullup resistor size you need for the converter? 

Well here is a very simple board that performs the conversation and removes the need for external pullup resistors.  That's right you don't need external pullup resistors on the lines. As with other I2C conversion methods you need to select proper pullup resistors to match the amount of devices you have on the communications lines and also what speed you are running the buss at plays a large part. See HERE for a detailed explaination. Since the TXS-0102 uses one-shots instead of standard MOSFETS it's effects due to larger buss capacitances is minimized.

As an example, here is a device with a relatively large input capacitance that is using the standard MOSFET level translation circuit running at 100 kHz buss speed.  As you can see the signal on the SCL is usuable with the default pullup resistors in the circuit.  As more and more devices are added to the buss though the signal quality will begin to degrade and the pullup resistors will once again need to be resized. 

LS_Standard

Switching the same circuit to 400 kHz high speed mode, as you can see below, only worsens the quality of the signal and reduces the speed of the buss.  Again you'll need to resize the pullup resistors accordingly.

HS_Standard

Now using the I2C Level Translator in place of the MOSFET and external pullup resistors shows a vastly improved improved signal for both standard speed and high speed communication. 

LS_TXS

HS_TXS

And as a bonus the boards can also be used for your average UART (Push Pull) communications also!

 

Board includes 0.1" headers.

FEATURES

  • I2C/SMBus (Open Drain) up to 2 Mhz
  • UART/GPIO (Push Pull) up to 24 Mhz
  • Voltage levels from 1.65 - 3.6v (VccL) to 2.3 - 5.5v (VccH)
  • Fully bidrectional 2 channels with no direction control pin needed
  • Output Enable pin
  • No need for external pullup resistors
  • 0.1" headers included

DOCUMENTATION

Copyright © 2014 DSSCircuits.com. All rights reserved. 

Comments   

# Raider 2011-10-18 13:57
Would it be possible to make this board with a 3.3V LDO regulator on board, to power the sensor from the 5V Arduino, and convert I2C signals?
# Wayne Truchsess 2011-10-18 14:03
Quoting Raider:
Would it be possible to make this board with a 3.3V LDO regulator on board, to power the sensor from the 5V Arduino, and convert I2C signals?

Sorry I don't understand the question. If you're using the Arduino it already has a 3.3v pin that can be used for the board.
# Raider 2011-10-18 14:22
http://store.diydrones.com/I2C_SMBus_Voltage_Traslator_I2C_Level_Shifter_p/br-0009-01.htm

Would make a cleaner package: four wires in, four wires out, for remote sensors.
# Wayne Truchsess 2011-10-18 15:02
Quoting Raider:
http://store.diydrones.com/I2C_SMBus_Voltage_Traslator_I2C_Level_Shifter_p/br-0009-01.htm

Would make a cleaner package: four wires in, four wires out, for remote sensors.

Ok I understand what you're asking now. I've thought about adding regulators to some of my breakout boards but it's a tough call. On the one hand it can make it easier for some people (people that just use 3.3v logic for example) but then it restricts the use from others that use say, for example, 1.8v logic or 2.85v logic. It's always a difficult decision when laying out boards.
# Bigman73 2012-01-15 17:30
Do I need to get a level converter for each I2C 3.3V sensor?
Or, can I use one level converter and connect two or more 3.3V sensors to a single level converter?
Thanks
# Wayne Truchsess 2012-01-15 18:25
Quoting Bigman73:
Do I need to get a level converter for each I2C 3.3V sensor?
Or, can I use one level converter and connect two or more 3.3V sensors to a single level converter?
Thanks

You only need one converter for multiple 3.3v devices.
# Bigman73 2012-01-15 18:28
Quoting Wayne Truchsess:
Quoting Bigman73:
Do I need to get a level converter for each I2C 3.3V sensor?
Or, can I use one level converter and connect two or more 3.3V sensors to a single level converter?
Thanks

You only need one converter for multiple 3.3v devices.

Thanks - I figured so but wanted confirmation.

So if I may ask - what is the big advantage in using the I2C Mux (sold on this site)? I could connect multiple devices the I2C Level Converter just as well.
# Wayne Truchsess 2012-01-15 18:32
Quoting Bigman73:
Quoting Wayne Truchsess:
Quoting Bigman73:
Do I need to get a level converter for each I2C 3.3V sensor?
Or, can I use one level converter and connect two or more 3.3V sensors to a single level converter?
Thanks

You only need one converter for multiple 3.3v devices.

Thanks - I figured so but wanted confirmation.

So if I may ask - what is the big advantage in using the I2C Mux (sold on this site)? I could connect multiple devices the I2C Level Converter just as well.

I2C devices have an address number they respond too. Some I2C devices can only be set to a single address which means you can't have multiples of that device on the same bus. The MUX connects only one of those devices at a time to the bus. You tell the MUX chip which one you want to talk too.
# David 2012-04-04 06:01
Can i used this I2C level converter with my microcontroller which runs at 3.3v and my LCD module which runs at 5v? i think so. my last question, where should I connect OE to vcc from the microcrontrolle r or the LCD?

thanks
# Wayne Truchsess 2012-04-04 10:57
Quoting David:
Can i used this I2C level converter with my microcontroller which runs at 3.3v and my LCD module which runs at 5v? i think so. my last question, where should I connect OE to vcc from the microcrontroller or the LCD?

thanks

Yes. Just connect the VccL to your 3.3v supply and VccH to your 5v supply for power and unless you have a need to shut off communication between the two just connect output enable (OE) to 5v.
# Ross Hall 2012-11-19 02:47
Can this be used to interface a Beaglebone (1.8v ). To Arduino(s). Via I2C? Like if I wanted to use 3 Arduinos on one side and the beaglebone as master on the other side?

I think the answer is yes, but never hurts to ask those with more experience . :lol:
+1 # Wayne Truchsess 2012-11-19 02:50
Quoting Ross Hall:
Can this be used to interface a Beaglebone (1.8v ). To Arduino(s). Via I2C? Like if I wanted to use 3 Arduinos on one side and the beaglebone as master on the other side?

I think the answer is yes, but never hurts to ask those with more experience . :lol:

Correct, you won't have any problems. Just make sure the lower voltage device is on the VccL side and the higher voltage devices are on the VccH side.
# McNamara 2014-12-15 02:12
I am having the worst time getting this adapter to work. Or to be more precise, trouble getting i2c to work through the adapter. It is translating the levels properly, but it breaks i2c communications. I have a Dangerous Prototypes Bus Pirate configured in i2c mode on the low voltage side, driving the bus. I have a i2c capacative touch keypad on the low voltage side as well. On the high voltage side, I have a DS1307 RTC module and an i2c LCD "backpack".

With OE low, I can find the keypad when I do an address scan. When I pull OE high, not only do I not see the devices on the other side of the translator, I loose the ability to talk to the keypad. I have everything working with a FET based translator, just not this one and I can't for the life of me figure out why.

This is what the low voltage bus looks like with the FET translator.


This is what the low voltage bus looks like with this translator.


Notice the noise spikes when either signal changes polarity.
# Wayne Truchsess 2014-12-15 03:07
Wow... that is one noisy circuit. How long are the wires running in this circuit?

One thing I do notice that is very strange is the voltage level difference between the SCL and SDA signals on both the FET and translator. Just a guess but I'd say you have a power supply problem. Can you probe the power supply on channel two in parallel with the SCL line to see if it's noisy?
# McNamara 2014-12-15 04:07
Well, the voltage level difference was my own fault. I had one of the scope probes at x1 and one at x10. After correcting that, SDA and SCL show the same high/low levels. I also shortened the lengths as much as I could. Admittedly the long (36") cable on the Bus Pirate likely wasn't helping things. So much for convienence.... ;-)

Here is what the LV SDA and VCC traces look like.


And here is what the LV SDA and SCL look like after shortening wires.


Definitely cleaner transitions. At this point, I can see the LCD backpack on the HV side of the bus, but not the DS1307, or the keypad on the LV side.

Thanks for the help. Sometimes we just need someone to point out the obvious.
# McNamara 2014-12-15 04:20
As a follow up, I got it to work. I actually doubled the length of the wires to the DS1307 and everything came alive. The HV bus is 24" with the level translator at the mid point. The LV bus is 12" with the level translator at the mid point. Still a bit of noise at the transitions, but it is on a breadboard with jumper wires for connections right now so its not the cleanest hookup in the world...

Login

Go to top