STM32G071G8 I2C schickt keine Bytes?

Gast #6414489
Lesenswert?

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:
Gast #6414733
Lesenswert?

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 #6414827
Lesenswert?

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 #6414830
Lesenswert?

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 #6414893
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren