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?
> 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
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.
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).
> 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
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!
> 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).
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.
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.
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.
> Hast du die Händler mal nach Schaltplan gefragt?
Ich habe nach dem Datenblatt des Displays gefragt, aber der ist noch
abwesend (Dragon Festival).
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.
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.
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.
> 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
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.
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
12,3V beim guten Modul, 3,9V beim schlechten Modul.
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.
Der Sherlock-Holmes-Preis geht an Helmi1 - nach dem Tauschen läuft das Modul einwandfrei :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.