mikrocontroller.net

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


Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: D. W. (dave) Benutzerseite
Datum:

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

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian Mazur (izaseba)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thx ;)

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Claude Schwarz (claudeschwarz)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael,
Schau mal Beitrag "Re: Embedded Projects Journal verschickt"

Gruß Sebastian

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

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

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Claude Schwarz (claudeschwarz)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.