SSD1305 mit STM32

OP #7232819
Lesenswert?

Guten Abend

Ich habe ein Display mit SSD1305-Controller 
(https://www.waveshare.com/wiki/2.23inch_OLED_HAT) gekauft, und würde 
dieses gerne mit einem STM32-Mikrocontrollerboard (STM32L432KC) 
ansteuern.
Ich hatte ursprünglich gelesen, das dieser Controller kompatibel ist mit 
dem SSD1306-Controller, und sich die beiden bloss minim unterscheiden. 
Allerdings erhalte ich mit der Library 
(https://github.com/afiskon/stm32-ssd1306/tree/master/ssd1306) bloss 
Pixelsalat.

Weiss jemand von euch ob es für diesen Controller eine funktionierende 
Library gibt oder kann mir helfen die bestehende Library anzupassen?

Vielen Dank für eure Hilfe
David
OP #7233411
Lesenswert?

Das erste Bild (Display_after_Init.jpg) zeigt das Display, nachdem es 
mit der Initialisietungsfunktion der Library initialisiert wurde. Dabei 
wird der Befehl clear ausgerufen, das Display sollte also eigentlich 
schwarz bleiben.

Im zweiten Bild (Display_print_test.jpg) wurde mit dem Befehl put string 
eigentlich der Text "test" in der Schriftgrösse 7x11 ausgegeben. Wie man 
sieht bleiben immer noch dieselben Pixel aktiv wie nach der 
Initialisierung, eifach das weitere dazugekommen sind.

Zur Kommunikation mit dem Display benutze ich übrigens I2C.

Gruss
Angehängte Dateien:
#7233463
Lesenswert?

David S. schrieb:
> Ich hatte ursprünglich gelesen, das dieser Controller kompatibel ist mit
> dem SSD1306-Controller

Da es unterschiedliche Controller sind würde ich da mal nicht so 
blauäugig davon ausgehen. Wenn ich mir alleine die Command-Table in den 
Datenblättern ansehe möchte ich doch stark bezweifeln das die so ohne 
weiteres kompatibel sind.

https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
https://cdn-shop.adafruit.com/datasheets/SSD1305.pdf

Adafruit hat mit Sicherheit eine passende Lib, die wird aber vermutlich 
für Arduino sein. Da kannst du dir mit sicherheit einiges raus ziehen, 
der STM läuft aber auch mir C++ 😉. Die I2C Treiber wirst du anpassen 
müssen.
Gast #7233558
Lesenswert?

David S. schrieb:
> Das erste Bild (Display_after_Init.jpg) zeigt das Display, nachdem
> es mit der Initialisietungsfunktion der Library initialisiert wurde.
> Dabei wird der Befehl clear ausgerufen, das Display sollte also
> eigentlich schwarz bleiben.
> Im zweiten Bild (Display_print_test.jpg) wurde mit dem Befehl put string
> eigentlich der Text "test" in der Schriftgrösse 7x11 ausgegeben. Wie man
> sieht bleiben immer noch dieselben Pixel aktiv wie nach der
> Initialisierung, eifach das weitere dazugekommen sind.
> Zur Kommunikation mit dem Display benutze ich übrigens I2C.
> Gruss

Sieht seltsam aus. Hast du noch ein zweites Display zum testen? Display 
und Controller arbeiten eigentlich monochrom, aber ich sehe da 
Graustufen. Eventuell ist das Display kaputt, was bei dem dünnen Glas 
und den flexiblen Leiterbahnen leicht passieren kann.
OP #7233805
Lesenswert?

Sigma schrieb:
> Sieht seltsam aus. Hast du noch ein zweites Display zum testen? Display
> und Controller arbeiten eigentlich monochrom, aber ich sehe da
> Graustufen. Eventuell ist das Display kaputt, was bei dem dünnen Glas
> und den flexiblen Leiterbahnen leicht passieren kann.

Nein, ich habe leider kein zweites Display da..


J. S. schrieb:
> Hast du in dem conf.h die  Grösse angepasst?
>
> Also das ssd1306_conf_template.h nach ssd1306_conf.h kopieren und darin
> Höhe und Breite anpassen.
> Default ist sonst 128 x 64.

Ich habe im File SSD1306.h die Displaygrösse angepasst, in den Zeilen
1
/* SSD1306 settings */
2
/* SSD1306 width in pixels */
3
#ifndef SSD1306_WIDTH
4
#define SSD1306_WIDTH            128
5
#endif
6
/* SSD1306 LCD height in pixels */
7
#ifndef SSD1306_HEIGHT
8
#define SSD1306_HEIGHT           32
9
#endif

Welche Library verwendest du wo es ein ssd1306_conf_template.h File 
gibt?
OP #7233810
Lesenswert?

Kevin M. schrieb:
> David S. schrieb:
>> Ich hatte ursprünglich gelesen, das dieser Controller kompatibel ist mit
>> dem SSD1306-Controller
>
> Da es unterschiedliche Controller sind würde ich da mal nicht so
> blauäugig davon ausgehen. Wenn ich mir alleine die Command-Table in den
> Datenblättern ansehe möchte ich doch stark bezweifeln das die so ohne
> weiteres kompatibel sind.
>
> https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
> https://cdn-shop.adafruit.com/datasheets/SSD1305.pdf
>
> Adafruit hat mit Sicherheit eine passende Lib, die wird aber vermutlich
> für Arduino sein. Da kannst du dir mit sicherheit einiges raus ziehen,
> der STM läuft aber auch mir C++ 😉. Die I2C Treiber wirst du anpassen
> müssen.

Ja, ich war da wohl etwas blauäugig das ich geglaubt habe dass das 
Display einfach mit der Library kompatibel sein wird..

Was würde das konkret bedeuten, das anzupassen? Müsste ich dafür in 
Zeilen wie
1
SSD1306_WRITECOMMAND(0xAE); //display off
2
  SSD1306_WRITECOMMAND(0x20); //Set Memory Addressing Mode   
3
  SSD1306_WRITECOMMAND(0x10);
4
  SSD1306_WRITECOMMAND(0xB0);
Die Befehle (zB 0xAE) ersetzen gemäss den Tabelen "COMMAND TABLE" im 
Datenblatt ersetzen?
#7233812
Lesenswert?

Oder du hast das include für die conf auskommentiert, das war aber 
sicherlich nicht so gedacht.

Man baut ein repo so das der Quellcode nicht geändert werden muss und 
die config aus dem Projekt kommt. Sonst ist die Quelle bei einer 
Änderung dirty und ein git pull macht Ärger.
Gast #7233974
Lesenswert?

David S. schrieb:
> Sigma schrieb:
>
>> Sieht seltsam aus. Hast du noch ein zweites Display zum testen? Display
>> und Controller arbeiten eigentlich monochrom, aber ich sehe da
>> Graustufen. Eventuell ist das Display kaputt, was bei dem dünnen Glas
>> und den flexiblen Leiterbahnen leicht passieren kann.
>
> Nein, ich habe leider kein zweites Display da..


Dann bestell noch eins oder reklamier das. Ich hatte noch nicht exakt 
dieses OLED in der Hand, aber die verschiedenen Helligkeitsstufen deuten 
stark auf einen defekt hin.

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