STM32G071G8 I2C schickt keine Bytes?

Gast #6414489
Hallo Zusammen,

ich habe folgendes Problem:
Ich möchte ein ST7032 Displaymodul über I2C ansteuern. Grundsätzlich 
soweit so einfach. Leider verschickt der uC die Bytes nicht so per I2C 
wie er es sollte. Genauer gesagt geht nur das Adressbyte raus welches 
vom Display-Controller auch aknowledged wird. Anschließend ist aber tote 
Hose.

im Code erzeuge ich zum Testen einfach erstmal nur ein Datenarry mit 
zwei Einträgen. Dieses versuche ich dann mit HAL_I2C_Master_Transmit() 
zu verschicken.

Hier der Code-Schnipsel:
1
 buffer[0] = 0x40;
2
 buffer[1] = 0x06;
3
 HAL_I2C_Master_Transmit(&hi2c1, 0x7C<<1, buffer, sizeof(buffer), 1)

Im Anhang ist zu sehen wie das ganze dann auf der Leitung aussieht.

Weiß jemand eventuell weiter und hat eine Idee was schieflaufen könnte? 
Das Versenden über I2C mit der HAL-Funktion hat schonmal bei einem 
anderen Projekt bei einem ADC funktioniert.

Vielen Dank schonmal.
Angehängte Dateien:
RH schrieb:
> Genauer gesagt geht nur das Adressbyte raus welches
> vom Display-Controller auch aknowledged wird.

Nö, wird es nicht. Jedenfalls ist da im Bild ein NAK. Der Dekoder 
markiert das sogar rot.

Versuche das mal ohne den Linksshift, im Datenblatt steht was von 
0111110 als binäre Adresse drin.
Gast
Im Prinzip nicht mehr ganz dem Thementitel entsprechend aber vielleicht 
ist es ja doch in Ordnung nicht direkt einen neuen Thread zu eröffnen. 
(?)

Über I2C gelingt es mir nun das Displaymodul anzusprechen und wohl auch 
zu Initieren. Den Kontrast kann ich variieren und sehe so, dass ich 
grundsätzlich schonmal mit dem Display kommunizieren kann.

Leider ist es nicht möglich irgendwelche Daten an das Display zu senden, 
bzw. Text anzeigen zu lassen und ich komme einfach nicht darauf wieso 
nicht.

In der While Schleife versuche ich zum Testen ein Zeichen zu Schreiben 
und setze jeweils mit einer Sekunde Delay dazwischen den Kontrast auf 
unterschiedliche Werte.

Meine Funktion ST7032_SetCursor() soll das Schreiben in die richtige 
DDRAM-Stelle ermöglichen. Geschrieben wird dann über 
ST7032_TransmitData().

Eigentlich sollte alles bei der Initalisierung passen, wenn ich mich 
nicht an irgendeiner Stelle schon wieder im Datenblatt vertan habe.

Im Anhang mal der Code vielleicht weiß ja einer von euch weiter...

vielen Dank :)
Angehängte Dateien:
Gast
Tatsächlich ist es das nicht. 0x82 für zu einem é auf dem Display. Nun 
ist es aber so, dass einige Zeichen nicht anerkannt werden, obwohl doch 
eigentlich laut dem Datenblatt alle Werte zugeordnet sein müssten oder? 
Auch 0x06 zum Beipiel. Im Anhang habe ich die Tabelle aus dem Datenblatt 
mal beigefügt.
Angehängte Dateien:
Gast
RH schrieb:
> Tatsächlich ist es das nicht. 0x82 für zu einem é auf dem Display.
> Nun
> ist es aber so, dass einige Zeichen nicht anerkannt werden, obwohl doch
> eigentlich laut dem Datenblatt alle Werte zugeordnet sein müssten oder?
> Auch 0x06 zum Beipiel. Im Anhang habe ich die Tabelle aus dem Datenblatt
> mal beigefügt.

Dann probiere doch mal alle 256 Werte durch. Dann siehst du, welche 
zeichen nicht implementiert sind oder ob da ein bestimmtes Muster im 
Fehler erkennbar ist.
Gast
Hi

>obwohl doch
>eigentlich laut dem Datenblatt alle Werte zugeordnet sein müssten oder?
>Auch 0x06 zum Beipiel. Im Anhang habe ich die Tabelle aus dem Datenblatt
>mal beigefügt.

Die gilt aber nur für OPR1=1 und OPR2=1. Weißt du wie diese Anschlüsse 
verschaltet sind? Der Code für 0x06 kann bei anderer Beschaltung genauso 
gut im CG-Ram liegen (siehe Zeichensätze unterhalb der Tabelle).

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.