PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3,3V und 5V gemeinsam an einem I2C-Bus



darxon69
24.09.2010, 17:45
Hallo zusammen.

Ich habe einen Atmel Xmega, der mit 3,3V arbeitet. An dem hängen dann per I2C diverse Schaltkreise dran. Den RTC DS1307 (5V) könnte ich ja noch gegen einen DS1338 (3,3V) austauschen. Problemtisch wird es allerdings beim Luftdrucksensor HCA0811AR. Der ist zwar auch in 3,3V verfügbar, aber das nur in Stückzahlen, die meinen Bedarf weit übersteigen. Also kommt da nur die 5V Variante in Frage.
Kann man überhaupt 3,3V und 5V Komponenten am I2C-Bus betreiben? Wenn ja wie?
Hat da jemand schon mal erfahrungen gemacht?

kounst
24.09.2010, 17:55
Sind die für die i2c Schnittstelle verwendeten Pins des Xmega 5V tolerant? So weit ich weiß hat der sowas. Dann könntest du den Bus einfach mit 5V betreiben.

PICture
24.09.2010, 18:02
Hallo

@ darxon69

Wäre es nicht am einfachsten den AVR mit 5V zu betreiben, da diese Spannung schon angeblich vorhanden ist ?

MfG

iamwhatiam
24.09.2010, 18:19
Alternativ kannst du ja auch einen bidirektione treiber zur pegelanpassung benutzen, kann dir jetzt aber nicht genau sagen welcher dafür geeignet ist aber wenn wilst schau ich mal was es da so gibt aber ich brauch ein paar tage für den soviel zeit hab ich grad net

kounst
24.09.2010, 18:23
jetzt hab ich doch mal nachgelesen..
Der µC verträgt keine 5 V betriebsspannung noch hat er 5V tolerante I/Os.

Hier ist eine Lösung beschieben:
http://www.semiconductors.philips.com/acrobat_download/literature/9398/39340011.pdf Seite 42

darxon69
24.09.2010, 18:44
Danke kounst

Da hat nur der HCA Probleme macht, werde ich den den einfach mit den Mosfets entkoppeln. Alle anderen ICs gibt es ja auch in 3,3V.

kolisson
25.09.2010, 01:39
Da der i2c doch sowieso externe Pullups verwendet,
sollte man doch einfach den I2c gegen 3,3V Pullen.
Die 5 Volt Devices sollten das schon noch erkennen.

Gruss Klaus

Jaecko
25.09.2010, 09:20
Kann funktionieren, muss aber nicht, da "üblicherweise" bei 5V-Geräten ein "High"-Pegel erst ab 0,7*Vcc = 3,5V erkannt wird. Einfach testen.

kolisson
25.09.2010, 10:40
Jaecko,

wie kommst du denn da drauf ?
z.B lt datenblatt ATmega 88 ist H-Pegel ab ca. 0,7V garantiert.

Im Übrigen wird sowas ja ständig beim Betrieb von 3,3 V SD Karten an
5V Prozessoren gemacht.


Gruss K.

Jaecko
25.09.2010, 12:12
Von nem Mega88 sagt doch hier niemand was.
Ausserdem: Lies die Stelle mit der Spannung nochmal genau.
(s. 302, Tabelle 28.2: DC Characteristics, Zeile V_IH)
Da steht nicht "0,7V" sondern "0,7Vcc", also 0,7 * Versorgungsspannung, wobei wir bei 5V Vcc wieder bei den 3,5V wären.

Dass 3,3V erkannt werden, _kann_ sein, muss aber nicht.
Oder anders: Der Hersteller garantiert erst ab 3,5V eine sichere Erkennung.

Das Problem ist hier doch, dass der Sensor (5V) die 3,3V vom Bus noch erkennen muss. In dem Datenblatt, das ich dazu gefunden hab (http://www.sensortechnics.com/download/hca-baro-641.pdf)
ist der Wert - zumindest wenn man ihn so interpretieren kann - noch extremer angegeben: "Input high level: Min. 90% of Vs", also 0,9*5V = min. 4,5V.

Für solche Spannungsprobleme am I2C hab ich auch schon mehrfach die Schaltung mit den FETs verwendet (meine Standardtypen: BSS138); haut wunderbar hin; auch mit 400 kHz noch.

Jakob L.
25.09.2010, 12:19
Man kann den Pullup auch einfach nach 5V legen. Die internen Schutzdioden des AVRs sorgen dafür, dass die real anliegende Spannung im Bereich von ca 3.6 bis 3.8 Volt liegt (bei 3.3 V Betriebsspannung). Das sollte von den 5V Komponenten problemlos als High erkannt werden.

kolisson
25.09.2010, 12:28
@Jaecko

Okay ! .. da hab ich das wohl einfach überlesen und bin bisher
immer von falschen Tatsachen ausgegangen. Offenbar hatte ich Glück
und es hat immer geklappt.... sonst hätte ich es gemerkt.

Gruss Klaus

darxon69
25.09.2010, 16:09
Im Übrigen wird sowas ja ständig beim Betrieb von 3,3 V SD Karten an
5V Prozessoren gemacht.

Ja das geht aber auch leider oft genug schief. Hab da shcon leidige Erfahrungen sammeln müssen. Das ist wie Lottospielen.
Die Schaltung mit den 2 MOSFETS gefällt mir gut und ist auch sehr preiswert und einfach zu realisieren.
Mir ist immer wieder aufgefallen, daß im Netz Schaltungen kursieren nd zum teil auch in fertigen Geräten verkauft werden, wo einfach irgendwelche Pegel zusammengeschaltet werden. Wenn das immer so problemlos wäre, wie das die Urheber dann immer darstellen, dann bräuchte man nie einen Levelshifter. Irgedwas haben sich die Schreiber der I2C-Spezifikation ja sicher gedacht.

goara
26.09.2010, 14:45
einfach einen treiber nehmen von 5 auf 3v3 logic voltage translator heist sowas z.b der hier (http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=MAX3001EEUP%2B-ND)