0,96 Oled mit STM32F407

Gast #4133153
Hello,

ich versuche gerade ein 0.96 Oled mit dem STM32F407 zum laufen zu 
kriegen. Es handelt sich um folgendes Display:
http://www.dx.com/p/bonatech-0-96-inch-display-screen-module-blue-display-black-blue-295842#overview

Verbunden wie folgt:
GND->GND
VCC->5V
D0->PB13 (CLK)
D1->PC3 (MOSI)
RST->PE4 (RST)
DC->PE2 (Data/Cmd)
CS->PE1 (Chipselect)

Anbei mein "Treiber". Die Befehle für die Initialisierung habe ich aus 
der adafruit-lib genommen, aber auch wenn ich nur ein "displayon" 
schicke, passiert nichts. Das Display bleibt einfach schwarz. Zumindest 
leuchten müsste es doch mal, oder?

Leider habe ich keinen Logic analyzer. Im Keil habe ich schon geschaut, 
ob hier alles gesetzt wird wie gewünscht - eigentlich ja...

Wäre super, wenn ihr euch das mal ansehen könntet. Ich sitze seit 2 Uhr 
Nachmittag (nun 10h mit Unterbrechungen...) an dem Ganzen und kriege 
kein Murren aus dem Display.

In der Main rufe ich dann die Funktionen spiInit & oledInit auf und 
erwarte eigentlich, dass das Ding zumindest mal leuchtet - oder sehe ich 
das falsch?

Danke!
Angehängte Dateien:
Gast
So, das ließ mir jetzt keine Ruhe. Ich hab jetzt mal nen Logic Analyzer 
besorgt und das Ganze getestet. SPI hatte einen kleinen Fehler, der ist 
jetzt raus (verbessert im Anhang -TI Mode war falsch und CPHA muss 
gesetzt sein.). Jetzt siehts so aus, wenn ich 0xAF (Display ON) schicke, 
siehe "8.jpg" im Anhang.

Eigentlich doch Mustergültig, wenn ich mit dem SSD1306 Datenblatt Seite 
18 Figure 8-5 vergleiche, oder irre ich?

Eigentlich müsste das dumme Ding doch zumindest mal leuchten, oder? :D

Die Initialisierung mit den vielen Commandos habe ich auch mal gemacht 
(siehe Anhang, "5.jpg" - die stimmen auch, der letzte übertragene 
command ist das besagte 0xAF, wo ich ja das display einschalte), aber da 
geht auch nix an.

Ich bin ABSOLUT ratlos und langsam auch echt am verzweifeln..

Grüße Hendrik
Angehängte Dateien:
Hallo,


Achtung!!

Das Display zeigt nach der Initialisierungsphase keine besonderen 
Merkmale.
Es leuchtet nicht und flackert nicht!

Erst ein gesendetes Pixel zeigt die eigentliche Display-Funktion an!

Hast du was an das Display gesendet?


Gruß G.G.
Gast
Habe das mal probiert. Heißt ja - so wie ich das verstehe - nur "Daten" 
schreiben, dann sollte ja mal irgendwas leuchten, oder?

oledSendData(0x55);
oledSendData(0xFF);
oledSendData(0x55);
oledSendData(0xFF);
oledSendData(0x55);
oledSendData(0xFF);

wird zu dem Bild im Anhang, sieht ja soweit gut aus. Display trotzdem 
dunkel.

Neue Tipps?

Die Initialisierung stimmt?
  oledSendCmd_enum(DisplayOff);
  oledSendCmd_enum(ClockDivide);
  oledSendCmd(0x80);
  oledSendCmd_enum(Multiplex);
  oledSendCmd(0x3F);
  oledSendCmd_enum(DisplayOffset);
  oledSendCmd(0x0);
  oledSendCmd_enum(StartLine0);
  oledSendCmd_enum(ChargePump);
  oledSendCmd(0x10); //externalVCC, otherwise 0x14
  oledSendCmd_enum(MemoryAddressing);
  oledSendCmd(0x0);
  oledSendCmd_enum(SegRemap127);
  oledSendCmd_enum(ComScanDec);
  oledSendCmd_enum(ComPins);
  oledSendCmd(0x12);
  oledSendCmd_enum(Contrast);
  oledSendCmd(0x9F); //externalVCC, otherwise 0xCF
  oledSendCmd_enum(PreCharge);
  oledSendCmd(0x22); //externalVCC, otherwise 0xF1
  oledSendCmd_enum(DeselectLevel);
  oledSendCmd(0x40);
  oledSendCmd_enum(EntireDisplayOnResume);
  oledSendCmd_enum(DisplayNormal);
  oledSendCmd_enum(DisplayOn);

wobei ja, auch wenn die falsch ist, das Ding doch irgendwas anzeigen 
müsste oder?

Grüße, der langsam verzweifelte hendrik.
Angehängte Dateien:
Hallo,


oledSendData(0x55);
oledSendData(0xFF);


sind zwar Daten die man per SPI senden kann, sie zeigen aber auf den 
Display wenig Wirkung!

Nochmals, das Display bleibt bei richtiger Initialisierung schwarz. Es 
wird nicht wie ein TFT-Display "blau", grün oder mit sonstiger Farbe 
angesteuert. Erst der richtig angesteuerte Font-Satz  erzeugt ein 
lesbares Schriftbild.

Als Anlage eine ATXMEGA-Anwendung zum Studieren. SPI- und 
Transfer-Protokolle sin ja nahezu  identisch!


Gruß G.G.
Angehängte Dateien:
Ich habe vor ein paar Jahren mal was mit dem Displaycontroller gemacht, 
und hatte immer Probleme, wenn ich das CS in Hardware gelassen habe. 
Dann funktionierte die Initialisierung nicht richtig, weil zwischen den 
einzelnen Argumenten der Befehle Wackler am CS waren.
Mit Software-CS gings dann einwandfrei.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 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.