Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfrage: I2C Atmega und Raspberry
Hallo
ich versuche zurzeit ein Raspberry Pi über I2c mit meinem Atmega 32 zu verbinden. Der Atmega ist auf dem sog. "Bobbyboard" der Firma qfix verbaut. Bei dem Controllerboard habe ich die Anschlüsse +12v, GND, SDA und SCL. SDA und SCL kann ich ja einfach mit den passenden Ports vom Rasp verbinden. Allerdings habe ich gelesen, dass der Rasp. mit einem Pegel von 3,3v arbeitet und viele Controllerboards mit 5v. Muss ich in dieser Hinsicht noch etwas beachten? Der Schaltplan vom Bobbyboard befindet sich im Anhang.
Eine vermutlich recht blöde Frage: Sind die Leitungen Vcc und GND beim I2c nur zum "durchschleifen" der Betriebsspannung gedacht, oder sind sie für die Funktion vom Datenbus wichtig? Wenn mein Rasp und mein Controllerboard ihre eigene Betriebsspannung haben, reicht es SDA und SCL miteinander zu verbinden?
mfg palermo
Zwischen die SDA-/SCL-Leitung must du je einen 3,3V-5V-Pegelwandler legen.
Das ist im einfachsten Fall ein geeigneter MosFet mit den Pullup-Widerständen auf der 3,3V- und 5V-Seite.
Für die I2C-Bus Funktion (und allgemein, wenn die beiden Platinen bei getrennter Stromversorgung zusammen arbeiten sollen) must du NUR GND verbinden.
Hallo Dirk
vielen Dank für die schnelle Antwort. Das hat mir schonmal viel weitergeholfen. Wenn ich das richtig verstanden habe, kommt der Atmega mit 3,3v klar aber der Rasp würde bei 5v beschädigt werden. Würde folgende Schaltung das Problem auch schon beheben?
23715
Statt dem bluetooth modul muss man sich dann natürlich den rasp. denken. Das andere Ende der beiden Widerstände dann einfach an den 3,3v GPIO pin vom Rasp anschließen. Würde das funktionieren?
Chypsylon
13.11.2012, 10:58
Würde folgende Schaltung das Problem auch schon beheben?
23715
Statt dem bluetooth modul muss man sich dann natürlich den rasp. denken. Das andere Ende der beiden Widerstände dann einfach an den 3,3v GPIO pin vom Rasp anschließen. Würde das funktionieren?
Die Pullup-Widerstände brauchst du bei I²C sowieso. Diese Methode würde nur funktionieren wenn die Pins vom RPI 5V-tolerant wären, was aber nicht der Fall ist.
Die einfachste Methode wird auf Seite 10 in folgender AppNote beschrieben: http://ics.nxp.com/support/documents/interface/pdf/an97055.pdf
Also so für beide I²C Leitungen:
23718
Edit: Du kannst dir natürlich auch ein fertiges Modul kaufen, die kosten auch nicht die Welt.
BastelWastel
13.11.2012, 11:55
Die I2C devices machen doch nur nen pull-down am Bus?
Insofern droht doch keine Beschaedigung wenn der Bus per pull-up nur an 3,3V liegt..?
Die Frage ist wie zuverlaessig der ATMEGA, der auf 5V arbeitet, die Pegel als high-low erkennt..
Die I2C devices machen doch nur nen pull-down am Bus?
Insofern droht doch keine Beschaedigung wenn der Bus per pull-up nur an 3,3V liegt..?
Die Frage ist wie zuverlaessig der ATMEGA, der auf 5V arbeitet, die Pegel als high-low erkennt..
Ja !
MfG Klebwax
Chypsylon
13.11.2012, 12:27
Die I2C devices machen doch nur nen pull-down am Bus?
Insofern droht doch keine Beschaedigung wenn der Bus per pull-up nur an 3,3V liegt..?
Die Frage ist wie zuverlaessig der ATMEGA, der auf 5V arbeitet, die Pegel als high-low erkennt..
Ja, so *könnte* es prinzipell funktionieren, aber das ist imho keine ordentliche Lösung sondern eher hingepfuscht.
Abgesehen davon ist laut Datenblatt, so weit ich weiss, die minimale "Input High Voltage" Vcc*0,7=5*0,7= 3,5V -> also zu hoch.
Man könnte natürlich den Pullup an 3.7V hängen, sodass die spannungen innerhalb beider limits liegen, aber die Erzeugung davon ist auch wieder komplizierter.
Ok vielen Dank.
Noch eine letzte Frage:
Kann man allgemein immer den Minuspol von verschiedenen Spannungen zusammenlegen? Bis jetzt habe ich bei dem Roboter 5v und 12v recht konsequent getrennt. Macht es Sinn eine gemeinsame Masse zu verwenden? Beim i2c werden die Massen ja scheinbar eh verbunden.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.