Forum: Mikrocontroller und Digitale Elektronik Keystudio OLED 1.3" Initialisierung SPI ohne Library?


von Heinz M. (subi)


Lesenswert?

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?

von Harry L. (mysth)


Lesenswert?

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
von Michael U. (amiga)


Lesenswert?

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

von Hint Hint (Gast)


Lesenswert?

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)

von Heinz M. (subi)


Lesenswert?

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.

von Harry L. (mysth)


Lesenswert?

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!?

von Heinz M. (subi)


Lesenswert?

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"

von Harry L. (mysth)


Lesenswert?

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.

von Heinz M. (subi)


Lesenswert?

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
Noch kein Account? Hier anmelden.