Forum: Mikrocontroller und Digitale Elektronik Hat jemand auch meine Probleme mit 1.54" SPD0301 OLED?


von dw (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe bisher die linken Displays aus China bekommen - die laufen 
problemlos mit meinem Code. Es sollen SSD1309 sein. Den Code benutze ich 
seit Jahren unverändert auch mit den 0.96"-Displays (SSD1306). Die 
letzte Lieferung, rechts, sieht subtil anders aus und (nur) diese 
Displays bleiben dunkel. Es sind keine Schäden zu erkennen. Von zwei 
Händlern jeweils 2 Displays, was gegen Transportschaden spricht. Hat 
jemand mit den 1.54"-Displays so was schon mal erlebt? Der eine Händler 
sagt es sind nun SPD0301, der andere sagt immer noch SSD1309. Gibt es 
bei SPD0301 irgendeinen bekannten Haken im Vergleich zu SSD1309?

von Olaf (Gast)


Lesenswert?

> sagt es sind nun SPD0301, der andere sagt immer noch SSD1309. Gibt es
> bei SPD0301 irgendeinen bekannten Haken im Vergleich zu SSD1309?

Was erwartest du? Es sind halt zwei unterschiedliche Controller. Liess 
dir von beiden das Datenblatt durch und pass deinen Code an.

Olaf

von Klugscheißer (Gast)


Lesenswert?

Kannst ja auch mal hier schauen:
https://www.displaymodule.com/products/1-54-128x64-monochrome-graphic-oled-display-module-spi
Unter Resources findest Du auch den Hinweis auf die u8g2 Library:
U8G2_SSD1309_128X64_NONAME0_1_4W_SW_SPI u8g2
Ich würde es mal damit probieren.
Das Flexkabel sieht anders aus - die Panels kommen u.U. von einen
anderen Hersteller (schon etwas seltsam).
Dann bestelle Dir doch mal ein anderes Display auch mit 1,54" und teste 
damit die Library bzw. Deinen Code.
Vieleicht hast Du wirklich Pech und die Dinger sind tot.
Ich würde ein paar Euros investieren und mir ein Display mit den anderen 
Panel/Flexkabel zum Testen gönnen:
https://www.amazon.de/SSD1309-SPI-Schnittstelle-LED-Anzeige-Original-Bildschirm-Modul-Arduino/dp/B07ZZ2HSB9
Vom Typ/Design her habe ich das auch (direkt von China) und es läuft 
unter u8g2 einwandfrei.

von dw (Gast)


Lesenswert?

Meine Initalisierung ist etwas anders als u8g2 (s.u.), aber ich habe die 
von u8g2 ausprobiert und es hat nichts genutzt. Ich habe die neuen 
Displays in der Initialisierung testweise invers geschaltet, aber selbst 
das wird nicht umgesetzt. Ich habe die Timings langsamer gemacht 
(Hardware-SPI) - ohne Effekt.

Ich hatte die Displays mit 5V auf Versorgungs- und Datenleitungen 
angeschlossen. Diese Solomon-OLED-Chips sind eigentlich, laut 
Datenblatt, alle nicht 5V-tolerant (max. 4V). Aber alel mir bekannten 
OLED-Bastelprojekte machen es so und auf ebay werden die als 
"3,3V-5V"-Displays verkauft. Ich hatte mit den 0.96"-Displays und den 
bisherigen 1,54" deshalb auch nie Probleme (ich teste die 1.54"-Displays 
einmal mit 5V, bevor sie verlötet werden; in der Endanwendung ist ein 
Pegelwandler dabei).
1
void
2
hal_oled_init()
3
{
4
  hal_oled_reset();
5
6
  hal_oled_command(OLED_COMMAND_DISPLAYOFF);       // display off
7
8
  hal_oled_command(OLED_COMMAND_SETDISPLAYCLOCKDIV);
9
  hal_oled_command(0x80);                          // set display clock divider to suggested value
10
11
  hal_oled_command(OLED_COMMAND_SETMULTIPLEX);     // set multiplex ratio to suggested value
12
  hal_oled_command(0x3F);
13
14
  hal_oled_command(OLED_COMMAND_SETVCOMDETECT);    // set VCOMH deselect level
15
  hal_oled_command(0x20);              // ~0.77 x VCC (default)
16
17
  hal_oled_command(OLED_COMMAND_SETDISPLAYOFFSET); // set mapping of display start line to 0 (no offset)
18
  hal_oled_command(0);
19
20
  hal_oled_command(OLED_COMMAND_SETSTARTLINE);     // set display start line to 0
21
22
  hal_oled_command(OLED_COMMAND_MEMORYMODE);
23
  hal_oled_command(0);                             // choose horizontal addressing mode (only supported by SSD1306)
24
25
  if (DISPLAYRotated)                              // display rotated (upside down)?
26
  {
27
    hal_oled_command(OLED_COMMAND_SEGREMAP | 0); // set segment re-map: column address 0 is mapped to SEG0
28
29
    hal_oled_command(OLED_COMMAND_COMSCANINC);   // set COM output scan direction to normal mode: scan from COM0 to COM[N –1]
30
  }
31
  else
32
  {
33
    hal_oled_command(OLED_COMMAND_SEGREMAP | 1); // set segment re-map: column address 127 is mapped to SEG0
34
35
    hal_oled_command(OLED_COMMAND_COMSCANDEC);   // set COM output scan direction to remapped mode: scan from COM[N-1] to COM0
36
  }
37
38
  hal_oled_command(OLED_COMMAND_SETCOMPINS);       // set COM pins hardware configuration to alternative configuration; disable left/right remap
39
  hal_oled_command(0x12);
40
41
  hal_oled_command(OLED_COMMAND_SETCONTRAST);      // choose contrast
42
  hal_oled_command(OLEDContrast);
43
44
  hal_oled_command(OLED_COMMAND_DISPLAYALLON_RAM); // output follows RAM content
45
46
  hal_oled_command(OLED_COMMAND_NORMALDISPLAY);    // non-inverse display
47
48
  hal_oled_command(OLED_COMMAND_SETPRECHARGE);
49
50
  #ifdef OLED_EXTERNALVCC
51
    hal_oled_command(0x22);
52
  #else
53
    hal_oled_command(0xF1);
54
  #endif
55
56
  hal_oled_command(OLED_COMMAND_CHARGEPUMP);       // charge pump must be enabled by the following commands: 8Dh (charge pump setting), 14h (enable charge pump) and AFh (display ON)
57
58
  #ifdef OLED_EXTERNALVCC
59
    hal_oled_command(0x10);
60
  #else
61
    hal_oled_command(0x14);
62
  #endif
63
64
  hal_oled_command(OLED_COMMAND_DISPLAYON);        // turn on oled panel
65
66
  hal_spi_chipselect(SPI_CS_NONE);
67
}

> Was erwartest du? Es sind halt zwei unterschiedliche Controller. Liess
dir von beiden das Datenblatt durch

Idiot. Als ob ich das nicht selber wüsste. Aber der Befehlssatz ist 
gleich, der SPD031 wird von den ebay-Vekäufern kompatibel zum 1309 
genannt, es gibt anscheinend nur minimale Unterschied bei den 
Min-Timings (die keine Rolle spielen, da ich die nicht ausreize). Im 
Datenblatt des Chips fehlt eine Initialisierungssequenz. Die müsste 
wahrscheinlich sowieso im Datenblatt des OLED-Moduls stehen (unbekannt).

von Olaf (Gast)


Lesenswert?

> Idiot. Als ob ich das nicht selber wüsste. Aber der Befehlssatz ist
> gleich, der SPD031 wird von den ebay-Vekäufern kompatibel zum 1309

Also 15Jahre Erfahrung mit Grafik LCDs sagen mir das es kein "gleich" 
gibt. Irgendwas ist immer! .-)

Und selbst wenn man wirklich zwei gleiche Display mit gleichem 
Controller von unterschiedlichen Herstellern hat kann es noch 
Unterschiede geben wie die Pixel an den Controller angeschlossen sind. 
Oder noch schaerfer, es kann Unterschiede in den Timings geben die man 
bei der Initialierung einstellen kann. Einfach nur dummes kopieren von 
einem anderen Display verringert dann die Lebensdauer.

Deshalb sollte es eigentlich eine Initialisierungssequenz/Datenblatt vom 
Displayhersteller geben. Aber okay, bei dem Billigkram waer das wohl 
zuviel verlangt. LAenger wie 1Jahr halten die ja sowieso nicht.

Olaf

von Lasker (Gast)


Lesenswert?

dw schrieb:
> Ich hatte die Displays mit 5V auf Versorgungs- und Datenleitungen
> angeschlossen. Diese Solomon-OLED-Chips sind eigentlich, laut
> Datenblatt, alle nicht 5V-tolerant (max. 4V). Aber alel mir bekannten
> OLED-Bastelprojekte machen es so und auf ebay werden die als
> "3,3V-5V"-Displays verkauft. Ich hatte mit den 0.96"-Displays und den
> bisherigen 1,54" deshalb auch nie Probleme (ich teste die 1.54"-Displays
> einmal mit 5V, bevor sie verlötet werden; in der Endanwendung ist ein
> Pegelwandler dabei).

Alles klar! Wenn man zehn mal bei Rot über die Ampel fährt, muss es 
natürlich auch beim elften mal ohne Unfall abgehen, und außerdem machen 
das ja alle so!

von dw (Gast)


Lesenswert?

> Alles klar! Wenn man zehn mal bei Rot über die Ampel fährt, muss es
natürlich auch beim elften mal ohne Unfall abgehen

Diese OLED-Displays werden von den Verkäufern ausdrücklich als 
5V-kompatibel verkauft (wie die 0.96"-Displays). Und ich habe bisher 
nicht zehn OLED verbaut, sondern rund 200, über mehr als 7 Jahre. Wieso 
die Verkäufer die seit Jahren als 5V-Displays verkaufen, obwohl im 
Datenblatt max. 4V steht, kann ich auch nicht sagen. Die öffentlich 
verfügbaren Solomon-Datenblätter dieser Displays sind tyischerweise von 
2009/2010. Vieleicht sind die in dem Punkt nicht mehr anwendbar (weil 
die heutigen Chips Nachbauten chinesischer Firmen sind)? Sollte es aber 
wirklich an 3.3V/5V liegen, wird sich das noch klären, da weitere 
Displays auf dem Postweg sind und ich die dann mit 3.3V testen werde. 
Ausserdem habe ich jetzt lose 1.54-Zoll-Displays zum Austausch gefunden. 
Zum Glück sind die leicht tauschbar (FPC-Connectoren).

von Johannes S. (Gast)


Lesenswert?

das sind ja nicht die nackten Controller, sondern da ist noch noch ein 
Interfaceboard mit etwas Hühnerfütter dran. Und der U2 auf dem Bild 
sieht sehr nach Spannungsregler aus. Bliebe noch die Frage wie die 
Signale gewandelt werden.

von dw (Gast)


Lesenswert?

Der Spannungsregler versorgt das Display mit 3,3V - aber es gibt keine 
Pegelwandler für die Datenleitungen. Zumindet nicht für alle. So geht 
die Reset-Leitung direkt an das Display. Wie schon gesagt hat meine 
Endanwendung Pegelwandler (TXS0108E). Aber die eintreffenden Displays 
teste ich - zumindest bisher - immer kurz mit einem 7-poligen Kabel 
direkt an einer 5V-MCU.

von Johannes S. (Gast)


Lesenswert?

Wie es auf den Bildern aussieht gehen auch SCL und SDA direkt auf das 
Display und da dürfen dann lt. Datenblatt keine 5V drauf. Vielleicht war 
der SSD130x hier robuster.
Mit dem Spannungsregler ist dieses Board dann auch nicht so toll, weil 
es dann ja 5V Versorgung braucht und max die geregelte Spannung auf den 
Datenleitungen. Was kommt bei 3,3 V Versorgung aus dem Regler? Da können 
dann auch 3,3 V auf den Datenleitungen  zu viel sein wenn zB nur 2,5 V 
am Display anliegen.
Hast du die Händler mal nach Schaltplan gefragt? Auf Nachfrage bekommt 
man oft etwas.

von dw (Gast)


Lesenswert?

> Hast du die Händler mal nach Schaltplan gefragt?

Ich habe nach dem Datenblatt des Displays gefragt, aber der ist noch 
abwesend (Dragon Festival).

von Klugscheißer (Gast)


Lesenswert?

Meine Displays mit den Desing des linken Flexkabels laufen unter u8g2.
Eventuell doch Schrott aus China bekommen oder flasches Display
an PCB montiert (bzw. umgedreht).
Was steht dann auf den Flexkabel ?
Manchmal ist dort auch der Controllertyp abgedruckt.
Bei mit ist auf den COG auch noch der Typ aufgedruckt/aufgelasert.
Das sieht man aber nur mit guten Augen oder mit entsprechenden 
Hilfsmittel.

von dw (Gast)


Angehängte Dateien:

Lesenswert?

Weitere Displays angekommen, Gelegenheit zum Test mit 3,3V. Bleiben 
schwarz. 3,3V Versorgung und Logik. 5V Versorgung/3,3V Logik noch zu 
testen.

> Was steht dann auf den Flexkabel ?

Danke für den Tipp, das da was stehen könnte: GME12864-90. Spiegelnde 
Zahl vorne 2E1008A0. Gibt es anscheinend mit SP0301 oder SSD1309 
(www.goldenmorninglcd.com/productDetails?id=GME12864-90). Ich frage 
goldenmorninglcd, ob die den Typ am Foto erkennen.

> Meine Displays mit den Design des linken Flexkabels laufen unter u8g2

Die linken tun's bei mir auch. Wunderbare Displays. Bei denen steht auf 
dem Kabel E308847. Ich dachte, das wären SSD1309 (so wurden die 
verkauft), aber jetzt findet Google SSD1305.

von Klugscheißer (Gast)


Lesenswert?

Ich würde diese mal mit SSD1305 testen - Library gibt es im netz.
Schade zum weckschmeißen.
So viele OLED Chipsätze in der Auflösung gibt es auch nicht - einfach 
(durch)testen.
Wenn es doch dumm gelaufen ist - was solls - Lehrgeld zahlt man überall.
So wie ich das sehe ist die Stückzahl die Du in den "Sand" gesetzt hast
überschaubar.
Wenn Du zu einer Lösung gekommen ist,bitte auch mitteilen.
Eventuell hat ein anderer das selbse "Glück" wie Du.

von Olaf (Gast)


Lesenswert?

> So viele OLED Chipsätze in der Auflösung gibt es auch nicht - einfach
> (durch)testen.

Och, ich hab hier z.B eines mit SH1106. Da sind auch 1-2Befehle leicht 
anders.

Olaf

von dw (Gast)


Angehängte Dateien:

Lesenswert?

Es liegt wohl am PCB unter dem Display. Ich habe ein 1.54"-OLED aus 
meinem Bestand an dessen FPC-Connector angeschlossen und man konnte 
damit Output erahnen (schwach, mehr ein Schatten). Danach hatte ich den 
Verdacht, dass die Erzeugung der höheren Spannung auf den neuen Modulen 
nicht funktioniert und habe das OLED vom problematischen Modul auf eine 
gutes PCB gesetzt. Dort funktioniert es. Das Layout der Platinen 
erscheint 100% identisch. Bei der Bestückung sehe ich nur einen 
Unterschied: Die Induktivität L1 am LED Boost Driver (PHOI gelabelt, 
Step-Up-Wandler TPS61040DBVR?). Auf dem guten Modul hat die den Aufdruck 
220 und auf dem schlechten den Aufdruck 100. Leider kann ich die zum 
Test nicht umsetzen, da dann die Rückkabemöglichkeit enden dürfte.

von Olaf (Gast)


Lesenswert?

DAnn miss doch einfach mal die Spannung am Wandler. Dann siehst du doch
ob er geht. Der Unterschied zwischen 22uH und 10H ist jetzt nicht so 
extrem gross das ich da automatisch annehmen wuerde das es deshalb 
nicht, auch wenn das vielleicht moeglich ist wenn das Design sowieso 
schon grenzwertig ist.

Olaf

von dw (Gast)


Lesenswert?

12,3V beim guten Modul, 3,9V beim schlechten Modul.

von Helmut L. (helmi1)


Lesenswert?

dw schrieb:
> 12,3V beim guten Modul, 3,9V beim schlechten Modul.

Es sieht so aus als ob die beiden Widerstaende R1 und R2 vertauscht 
sind.
Das IC darueber ist ein Stepup Wandler.

https://www.ti.com/lit/ds/symlink/tps61040.pdf?ts=1624075852329&ref_url=https%253A%252F%252Fwww.google.com%252F

Der Spannungsteiler im Datenblatt scheint von den Bezeichnungen 
identisch mit denen auf der Platine zu sein.  Wenn die beiden 
Widerstaende vertauscht sind kommt da weniger Spannung raus was ja mit 
deiner Messung bestaetigt zu sein scheint. Wenn du auf der Platine 
schaust sind die Werte genau umgekehrt bestueckt.

von dw (Gast)


Lesenswert?

Der Sherlock-Holmes-Preis geht an Helmi1 - nach dem Tauschen läuft das 
Modul einwandfrei :)

von Helmut L. (helmi1)


Lesenswert?

dw schrieb:
> Der Sherlock-Holmes-Preis geht an Helmi1 - nach dem Tauschen läuft das
> Modul einwandfrei :)

Dann kann ich ja heute Nacht wieder gut schlafen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.