Forum: Mikrocontroller und Digitale Elektronik XE162FL I²C Schnittstelle implementieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hi, ich möchte eine I²C Schnittstelle auf dem Infineon XE162FL 
implementieren, um später einen EEprom zu füttern.
Nach dem ich mit dem Tool Dave rum experimentiert hab und nichts 
gebacken bekommen hab, hab ich dann händisch die Register mal angeguckt 
und was probiert. Leider ohne Erfolg. Ich hab ein Oszi dran um 
wenigstens mal irgendein Byte rauszuschieben, aber nix da, da will 
nichts kommen.
Im Anhang ein Bild von dem Code was ich bis jetzt probiert hab. 
Vielleicht kann mir ja jemand sagen was ich falsch mache.
Pull Ups hab ich extern drangehängt an SDA und SCL.

Vielen Dank

von Thomas (Gast)


Lesenswert?

Aso, debuggen kann ich auch und da steht auch im Transmit Buffer meine 
0xA6 aber auf der Leitung kommt nix an. Die Register beschreibt er so 
wie ich es ihm sage.

von Thomas F. (thomas_f50)


Lesenswert?

Ich hab die Lösung:

Ich hab die Startkondition im TDF(Bit 8 bis 10) im Transmitbuffer auf 
100 zu stellen. Nach der Einstellung gehts. Vg

von Robert H. (userx)


Lesenswert?

Hallo
Ärgere mich auch gerade mit dem I2C herum.Das Adressbyte wird zwar 
rausgeschoben und vom Slave acknowledged, aber danach steht die Kiste.

Kannst du eventuell mal deine Sende- und Empfangsfunkionen posten?
Hat sich bei der initialisierung noch was geändert?

von Thomas F. (thomas_f50)


Lesenswert?

Hab dir ne PN geschrieben.

Im Grunde muss es so aussehen:

ins Transmitbuffer Register musst du die ersten 11 Bits beschreiben:

Bit 11-9 TDF Code und Bit 8-1 deine Daten

TDF Codes sind:

zum Schreiben:
0x4hex = 100b Startet einen Zyklus
0x0hex = 000b bytes die du senden möchtest
0x6hex = 110b Beendet einen Zyklus

zum lesen:
0x4hex = 100b Startet einen Zyklus
0x2hex = 010b für 1...x-1 Bytes die du lesen möchtest (Receive mit ACK)
0x3hex = 011b für das x-te Byte, also das letzte Byte was du lesen 
möchtest (Receive ohne ACK)
0x6hex = 110b Beendet einen Zyklus

Hoffe ich konnte dir helfen

: Bearbeitet durch User

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]
  • [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.