Hallo Ich versuche das Keystudio 1.3" OLED Display zum Laufen zu bekommen. https://drive.google.com/file/d/1Qf4irpqFFezV-_FvN6uVU6Yt6FqpDs9I/view Das Datenblatt ist absolut fürn A.... Allgemeines Blabla und Beispielcode für Arduino mit Library. Im PDF wurde SH1106 hervorgehoben. Ich kann jetzt nur raten, dass damit gemeint ist, dass dieser Controller verbaut ist. Das Datenblatt des SH1106 hat zwar mehr Informationen, ist aber ebenfalls nicht vollständig. Es steht nur die Ansteuerung über I²C beschrieben, nicht aber über SPI. Die Initialisierung ist selbstverständlich allgemein geschrieben, je nach dem welches Display hinten dran hängt. Version 0.1: https://www.elecrow.com/download/SH1106%20datasheet.pdf Version 2.3: https://www.mikrocontroller.net/attachment/335860/SH1106.pdf Hat jemand das Display am laufen (nicht über Arduino)? Wie initialisiere ich das Display? Gibt es neben den EA DOG Grafikdisplays andere die gut dokumentiert sind?
Heinz M. schrieb: > Es steht nur die Ansteuerung über I²C > beschrieben, nicht aber über SPI. Dann hast du nicht richtig gelesen. Ein flüchtiger Blick in das Datenblatt, Heinz M. schrieb: > Version 2.3: > https://www.mikrocontroller.net/attachment/335860/SH1106.pdf und natürlich werden auch die diversen SPI-Modi beschrieben. Heinz M. schrieb: > Die Initialisierung ist > selbstverständlich allgemein geschrieben, je nach dem welches Display > hinten dran hängt. Was erwartest du denn? Fertigen Code auf dem Silbertablett? Da steht alles drin, was man benötigt um das zu initialisieren und das Display-RAM mit Daten zu füllen. Ausserdem bist du nicht der Erste hier im Forum, der sich mit dem Controller beschäftigt. Nutz die Suchfunktion!
:
Bearbeitet durch User
Hallo, ich habe nur aus Interesse reingeschaut, aber im Datenblatt ist doch alles zur Ansteurung drin? 6800/8080/4-wire-SPI/3-wire-SPI/I2C. Incl. der nötigen Diagramme usw. Wenn Du das Fahrrad nicht komplett neu erfinden willst, hindert Dich doch niemand Init, nasteuerung usw. aus der Arduino-Lib "auszuleihen". Ist doch auch nur C/C++. Gruß aus Berlin Michael
Mann kann ja auch einfach das hier fast unverändert verwenden: Beitrag "SSD1306/1309 Library zum Darstellen von Text auf OLED Displays" (funktioniert auch für SH1106)
Ich habe mich unsauber ausgedrückt. Es steht drin, wie man SPI anschließt, es steht auch drin, wie das Signal von SPI aussieht. Wie jedoch die zu übertragenden Datenblöcke aussehen, steht nur für I²C drin (Seite 14). Oder wie übertrage ich per SPI eine Slave Adresse? Keystudio verbaut ein Display und einen Controller. Den Controller kann man durch die Hervorhebung vermuten. Von den Displaywerten keine Spur. Ohne Displaywerte kann ich den Controller nicht richtig initialisieren. Nach dem Controller habe ich im Forum gesucht. A) Habe ich keine Antwort auf die Frage der SPI Datenblöcke gefunden. B) Kein einziges Suchergebnis zum Keystudio Display Mit der Library würde ich vielleicht Punkt A hinbekommen. Punkt B steht da auch nicht drin. Ich habe gerade festgestellt, dass es das Keystudio Display nicht mehr gibt...fragt mich nur warum (Achtung Ironie). Damit ist für mich der Aufwand zu hoch das eine Display zum Laufen zu bekommen. AZDelivery bietet ein identisches Display an. Jedoch mit besserer Dokumentation. Ich überlege, ob ich mir so eins hole.
Heinz M. schrieb: > Oder wie übertrage ich per SPI eine Slave Adresse? Gar nicht - ist unnötig. Heinz M. schrieb: > A) Habe ich keine Antwort auf die Frage der SPI Datenblöcke gefunden. Warum auch? Die reinen Daten sind identisch mit der I²C-Variante. Heinz M. schrieb: > Damit ist für mich der > Aufwand zu hoch das eine Display zum Laufen zu bekommen. Welcher Aufwand? Oben war doch bereits der Link zu dem SSD1306-Library. Das läuft auch mit deinem Controller und deinem Display. Ich versteh ehrlich gesagt nicht, wo du jetzt noch Probleme siehst!?
Läuft die auch auf einem STM32? Ich habe mit Absicht keinen µC geschrieben, weil ich das Diplay selbst ansteuern möchte, um unabhängig zu sein. In erster Linie möchte ich grafische Funktionen darstellen, wo eine textbasierte Library nachteilig ist. Bei Version 0.1 auf Seite 31 Anweisung 5 (Version 2.3 Seite 32 Anweisung 4) wird der Controller parametriert. Was trage ich da ein, ohne die Displaywerte zu kennen? Hier ein Beitrag der das Problem schön beschreibt: "Spannender finde ich übrigens die Befehle 0x0d9 (charge) und 0x0db (vcomh deselect). Für diese Werte braucht man eigentlich zwingend das Datenblatt des OLED Herstellers. Ok, das gilt natürlich auch für viele andere Befehle der Fall (beispielsweise wie das OLED am SH1106 angeschlossen ist). All dieses Wissen fließt ja gerade in die init sequenz rein. Es nützt also nichts nur das SH1106 Datenblatt zu lesen. Hier noch ein interessantes Beispiel: Der SH1106 besitzt einen Buffer mit 132x64 Pixel. Meistens ist aber ein 128x64 Pixel OLED am SH1106 angeschlossen. Aber: Wie ist das 128x64 Fenster des OLEDs in den 132x64 Buffer des SH1106 hineingemapped?" Beitrag "Re: SH1106 Init-Sequenz"
Wenn du das nicht selber abstrahieren kannst, such dir besser nen anderes Hobby! Im selben Thread aus dem dein Zitat stammt gibts auch genug Leute, die das problemlos zum Laufen bekommen haben. Dazu ist es nicht einmal nötig, jeden Parameter der Init-Sequenz genau zu verstehen... Und wenn du nicht in der Lage bist, so einen trivialen Code auf einen STM32 zu portieren... Sorry, aber da fällt mir langsam nix mehr zu ein. In der Zeit, wo du hier herum lamentierst, könnte das Ding schon lange laufen.
Ich habe mir jetzt gedacht: Was soll das Display rumliegen. Wenns kaputt geht durch fehlende Parameter, dann ist es halt so. Hier ein Teil was ich im Keyestudio Datenblatten erwarten würde: 1. Display zurücksetzen 1a "Res" low Pegel 1b ggf. Verzögerung 2 ms 1c "Res" high Pegel 1d ggf. Verzögerung 2 ms 2. Display einschalten 2a "CS" low Pegel (Display empfangsbereit) 2b "DC" low Pegel (Anweisung) 2c Über SPI "0xaf" senden 2d "CS" high Pegel (Display nicht empfangsbereit) 3. Koordinaten anwählen 3a "CS" low Pegel (Display empfangsbereit) 3b "DC" low Pegel (Anweisung) 3c Über SPI "0xb*" (* = Wert zwischen 0 und 7) senden (Seite = immer 8 Zeilen) 3d Über SPI "0x0*" (* = Wert zwischen 0 und f) senden (Spalte niederwertige 4 Bit) 3e Über SPI "0x1*" (* = Wert zwischen 0 und 8) senden (Spalte höherwertige 4 Bit) 3f "CS" high Pegel (Display nicht empfangsbereit) 4. Daten senden 4a "CS" low Pegel (Display empfangsbereit) 4b "DC" high Pegel (Anzeigewerte senden) 4c Über SPI "0x**" (** = Wert zwischen 00 und ff) senden 4d "CS" high Pegel (Display nicht empfangsbereit) - SPI 8 Bit @ 4 MHz - CS kann entfallen, wenn direkt danach weiter gesendet wird. Z.B: Adresse und gleich die Daten. - Beim senden mehrerer Daten wird automatisch die nächste Spalte addressiert. Automatischen Zeilenumbruch gibt es nicht. - Die ersten zwei und die letzten zwei Zeilen werden nicht dargestellt. - 3,0 bis 3,5V Signale und Stromversorgung. - Mit Resetwerten funktioniert es (Da ich keine Displaydaten habe kann ich nicht sagen, ob das die empfohlenen Einstellungen sind). Dazu die Displaydaten. Was ich in Erfahrung bringen konnte: Kontrast steht bei mir auf dem Standard "0x80". Wie lange es damit hält oder ob es sogar die "oxff" verträgt, keine Ahnung. Gibt keine Angaben und habe ich nicht probiert. Charge Pump muss ein sein, ist sie auch nach dem Reset. Die Abschaltprozedur im Datenblatt des SH1106 kann man ignorieren. Die Pins sind eh nicht nach Außen geführt.
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.