Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Several questions about level translation for I2C

Status
Not open for further replies.

Sink0

Full Member level 6
Joined
Nov 25, 2009
Messages
390
Helped
37
Reputation
74
Reaction score
30
Trophy points
1,308
Location
Sao Paulo, Brazil
Activity points
4,186
Hi i have several questions about a cheap level translation for I2C. I was looking at this **broken link removed** and how they did the level translation to a 5V uC talk to the accelerometer. My first question is... is the I2C clock open drain? Will that translation with the Schottky diode work for the clock line? Can i use any Schottky diode (with something like 30V reverse voltage)? They do not make any kind of conversion for interrupt lines. Is 3.3V enough to set a TTL high level? Can i use a common emitter transistor with the colector connected to the uC Pin and a pull-up pin to 5V for 3.3->5V conversion for interrupt pins?

Thank you!!
 
Last edited:

Thats does not make much sense as idotn gto their module.. just using it as reference for my design... but anyway..
 

Answers are:
1-Yes
2-Yes but only if the module is an I2C slave (which is true in this case)
3-Yes but use a schottky diode with low reverse current (any small diode will work)
4-Yes, 3.3V is within TTL levels
5-Yes,you can use a bjt (place a resistor in series with the base for current limitting purposes) for level conversion but in this case the logic will be inverted. Probably your cpu can recognize a 3.3V signal (VIH, you´ll find this info in the datasheet)
 

One more question, if i use another I2C slave on the same bus (5V) and the MMA7455 with LVL conversion, am i going to have some problem?
 

When using the diode level shiftting circuit, the clock and data lines (I suppose you did the same conversion at both lines) are pulled up by a 2k2 resistor connected to the MMA7455´s Vcc (3.3V). The clock and data lines directly taken from the output of the cpu can see this voltage less about 0.3V (diode drop). If a high level of 3V is enough for the chip you want to use (I suppose the Vcc for this chip would be 5V) I see no problem. You can also use these signals from the inputs of the MMA7455. What you have to keep in mind is that the levels in the I2C bus are now 0.3 to 3V, these are the levels that must be recognized by any other chip connected to the bus. Also, using 2k2 as a pull-up will restrict the maximum clock frequency to less than 1MHz (depends on the bus capacitance) but you can´t decrease these resistors too much.
 

Hmm thank you! For the data line i wil be using a txs0101 so both lines will work with different level conversion. But ok, if i need another I2C device on the bus i will be using a Txs0102 so i wont have problem of the 3V being logic level 1. For the diode i will be using a B130. Is very "big" for the purpose, but as i will be using it on other part of the desgn is suitable for me. At the datasheet the reverse current looks ok.
Thank you for the help!! Valeu ;) !!
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top