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

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.

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.