Forum: Mikrocontroller und Digitale Elektronik I2C am Grasshopper mit 5V


von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hi Forum,

ist es moeglich, durch die 5V-toleranten Eingaenge des AP7000 am 
Grasshopper ein I2C-Device mit 5V anzuschliessen? Ist die Rueckrichtung 
3V3->5V dann ein Problem? Auf dem 5V-System kommt ein Mega8 zum Einsatz.

Wie wuerde man am besten zwischen einem 3V3 und einem 5V-System fuer das 
I2C einen level shifter entwerfen? Vielleicht existiert hierzu irgendwo 
eine Beispielschaltung?

Danke fuer Eure Antworten.

Michael

von D. W. (dave) Benutzerseite


Lesenswert?

Diese "Beispielschaltung" ist in der I2C-Spezifikation von Philips drin: 
zwei Mosfets. Geht ziemlich einfach.

von Sebastian M. (izaseba)


Lesenswert?

Hallo Michael,

Ich habe den Grasshopper mit einem Tiny24 per I2C verbunden und zwar 
so,daß der Tiny zwar mit 5 V versorgt war, aber die Pullup Widerstände 
an 3,3V lagen.

Was soll ich sagen, läuft ohne Probleme.
Es ist zwar keine sehr gute Lösung, funktioniert aber.

Gruß Sebastian

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Huhu Sebastian,

bist Du so gut evt. den Code fuer mich zu posten (Grasshopper)? Das 
wuerde mir einiges ersparen, wenn ich ein Anwendungsbeispiel habe.

lg,
Michael

von Sebastian M. (izaseba)


Angehängte Dateien:

Lesenswert?

Hallo Michael,
Im Anhang befindet sich mein I2C Versuch ;-)

Ich habe es mit i2c-dev gelöst.
Ist nichts großes, es wird die Prozessorauslastung ausgelesen und auf ei 
I2C Display geschickt.

Die I2C Geschichte hab ich fest im Kernel drin.

Gruß Sebastian

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

thx ;)

von Sebastian M. (izaseba)


Lesenswert?

Daß Du Dir noch ein /dev/i2c-0 erstellen mußt, brauch ich wohl nicht 
sagen, oder ?
Sonst guck mal in der toolchaindoku dev-interface, da ist alles gut 
dokumentiert.

Andere Frage, hast Du schon MMC am laufen ?
Ich hab mir irgendwie eingebildet, daß ein Artikel in Embedded Projects 
Journal darüber erscheinen sollte und hab wie blöd darauf gewartet :-(

Gruß Sebastian

von Claude S. (claudeschwarz)


Lesenswert?

Hallo Sebastian ,
MMC ist ziemlich einfach. Nur die Pins des Sockels 1:1 mit den MCI Pins 
des Grasshopper verbinden, an D0 bis D3 und CMD einen Pullup von ca. 15k 
nach VCC 3.3V . Du musst aber noch im icnova_base.c ein Platform Device 
für das MCI anlegen ( Copy Paste aus dem NGW100 setup.c ) und natürlich 
im Kernel Config das Atmel MCI Interface anschalten.
Ich würde aber mir einen neuen Kernel holen, am besten direkt aus 
Haavard Skinnemoens Git. Bei älternen Kernel gibt es ein Problem mit dem 
DMA Controller.

PS: Würdest Du deinen Tiny24 Code teilen? Bastel gerade an einem NiMh 
Ladecontroller auf Basis Tiny261 rum der mal als Teil eines Grasshopper 
Handhelds dienen soll. Und der USI treibt mich in den Wahnsinn ;-)

von Sebastian M. (izaseba)


Lesenswert?

Hallo Claude,

Danke für die Tips, es ist nicht so, daß ich nichts probiert hätte ;-)

Ich habe die MMC Slot Verdrahtung 1:1 von NGW100 übernommen, inklusive 
Pullups.
Nur Carddetect und Writeprotect Pins konnte ich so nicht von NGW100 
abkupfern, weil die wohl beim Grasshopper nicht ausgeführt sind :-(
Frage, sind die denn nötig ?
Und wenn ja, in welcher Datei muß ich das ändern ?
Ich hab mir eigentlich alles im Kernels MMC Ordner angeschaut, richtig 
schlau bin ich da nicht geworden.

Mit dem Platformdevice hört sich das gut an, das muß ich mal probieren.
Beim Kernel hab ich den Atmeldevice aktiviert, da sollte es eigentlich 
keine Probleme geben.

Tja, USI I2C habe ich eigentlich von einer Atmel Appnote abgeguckt, es 
ist im Assembler, hilft Dir das ? Wenn ja kann ich Dir gerne was Posten.
 Peter Dannegger hat vor kurzem einen I2C Sniffler gepostet, schau mal 
hier
Beitrag "I2C (TWI) Sniffer" hab selber noch nicht 
geguckt, aber man kennt nur erstklasige Projekte von ihm .

Gruß Sebastian

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Claude, gibt es zu MMC irgendwo eine ausfuehrlichere Doku?
Eine wichtige Frage: Welche Geschwindigkeit ist damit moeglich? Mit ein 
paar Kilo rumknorpsen ist fuer meine Anwendung leider nicht ausreichend!
Heisst es im Magazin (falls es denn jetzt erschienen ist) gibt es keine 
Doku?

Gruss,
Michael

von Sebastian M. (izaseba)


Lesenswert?

@Michael,
Schau mal Beitrag "Re: Embedded Projects Journal verschickt"

Gruß Sebastian

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Also was Du damit sagen wolltest ist "nein", richtig?
Das macht Mut...

von Sebastian M. (izaseba)


Lesenswert?

Michael G. wrote:
> Also was Du damit sagen wolltest ist "nein", richtig?
Ich will Dir den Downloadlink zeigen.
> Das macht Mut...
Jep, Mut die Ärmel hochzukrämpeln ;-)

Gruß Sebastian

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Naja ich will das nich komplett selber implementieren wenn sich jemand 
schonmal die Arbeit gemacht hat. Wichtig ist halt dass die 
Geschwindigkeit passt. So SPI-Loesungen usw. kommen nicht in Frage.

von Claude S. (claudeschwarz)


Lesenswert?

Das Interface läuft mit bis zu 25MHz und 4bit Parallel. Sollte einiges 
an Datendurchsatz schaffen. Bei mir konnte ich locker MPEG2 Files mit 
dem Mplayer auf dem Grasshopper anschauen. Das Interface unterstüzt auch 
SD-HC und SDIO Karten (WLAN etc), wobei letzteres noch relativ jung im 
Kernel ist und mit dem Atmel_MCI noch nicht richtig laufen soll.
Wichtige Files liegen in :
/build_avr32/linux-XXXX/arch/avr32/boards/icnova .
Das C File icnova_base.c ist für den Grasshopper, Platform Device für 
MCI(SD Interface) kann man sich aus icnova.c rauskopieren. Die Detect 
und Write Protect Pins kann man auf beliebige GPIOs legen , hab sie bei 
mir aber nicht angeschlossen und und im struct deswegen GPIO_PIN_NONE 
zugewiesen.
In der Init Funktion muss natürlich noch at32_add_device_mci rein.
Siehe Docu zu Platform Devices :
linux-XXX/Documentation/driver-model/platform.txt

Hoffe hab jetzt nicht zuviel schwachsinn geschrieben, hab mein Notebook 
mit der Grasshopper Toolchain gerade nicht da und daher alles aus dem , 
morgens um 8 suboptimal funktionierenden, Kopf geschrieben.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Danke soweit.
Nochmal kurz zurueck zu meinem Originalanliegen.

Man sollte den hopper doch an I2C direkt mit 5V betreiben koennen, oder? 
Der AP7000 sollte doch 5V-resistent sein? Oder gibt es da anderweitig 
Probleme?

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Ich hab mal bissel gesucht auch im Datenblatt aber was konkretes findet 
man nicht :(

Och da isses ich hab's gefunden:
Input High-level Voltage 2.0 VVDDIO+0.3 V

So ein Mist aber auch...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.