Forum: Mikrocontroller und Digitale Elektronik OLED-Display


von aabb (Gast)


Lesenswert?

Hallo zusammen,

Ich möchte ein OLED-Display EA OLEDL128-6 (SSD1309) über SPI (4 wires) 
mit einem µC tms320f28377d von TI steuern. Ich hab den SPI-Port 
konfiguriert, sodass ich eine Nachricht über den MOSI-Pin schicken kann. 
Danach habe ich versucht Commands für die Initialisierung des 
Displaymoduls zu senden. Ändert sich jedoch nichts beim Display (hat 
nicht geleuchtet). Hat jemand vielleicht Erfahrung mit diesem Modul?

Grüße

von Frank K. (fchk)


Lesenswert?

Hast Du auch mit einem Logicanalyzer geschaut, ob wirklich das rausgeht, 
was rausgehen soll?

Du hast kein Logicanalyzer? Lässt sich ändern:
https://www.amazon.de/KeeYees-Logic-Analyzer-Farben-Arduino/dp/B07K6G55WG/ref=sr_1_3

fchk

von Andreas S. (Gast)


Lesenswert?

Wenn es sich noch nicht bekannt sein sollte,OLEDS leuchten nicht.
Das machen nur Displays mit Backlight !
Also bitte die Grundlagen verstehen und lernen.

von kryxjht (Gast)


Lesenswert?

Andreas S. schrieb:
> OLEDS leuchten nicht

OLEDs leuchten doch

Andreas S. schrieb:
> Also bitte die Grundlagen verstehen und lernen.

von Der müde Joe (Gast)


Lesenswert?

Damit ist dem OT aber nicht geholfen.
Ich vermute, Du meinst so etwas wie "Display an". Damit sich überhaupt 
etwas tut.

Kommt am MISO vom Display etwas heraus? Bzw. empfängt der TI-Chip eine 
Bit-Sequenz? Was empfängt er?

von aabb (Gast)


Lesenswert?

Der müde Joe schrieb:
> Damit ist dem OT aber nicht geholfen.
> Ich vermute, Du meinst so etwas wie "Display an". Damit sich überhaupt
> etwas tut.
>
> Kommt am MISO vom Display etwas heraus? Bzw. empfängt der TI-Chip eine
> Bit-Sequenz? Was empfängt er?

TI-Chip sollte nichts empfangen oder ? er sendet nur über sein MOSI-Pin. 
Ich hab die folgenden Commands aus dem Datenblatt für die 
Initialisierung übernommen.
void init_OLEDL128(void)
{
send_command(0x40); //Set Display start line
send_command(0xA0); //Bottom View no Segment remap
send_command(0xC0); //Bottom View COM scan direction normal
send_command(0xA6); //Display normal (RAM)
send_command(0x81); send_command(0xFF); //Set contrast to maximum
send_command(0xD5); send_command(0x40); //Clock divider/Oscillator 
frequency
send_command(0xD9); send_command(0x44); //Pre‐charge Period
send_command(0xAF);    //Display on
}

"send_command" hab ich durch meine SPI-Write-Funktion ersetzt.

von aabb (Gast)


Lesenswert?

Frank K. schrieb:
> Hast Du auch mit einem Logicanalyzer geschaut, ob wirklich das
> rausgeht,
> was rausgehen soll?
>
> Du hast kein Logicanalyzer? Lässt sich ändern:
> 
https://www.amazon.de/KeeYees-Logic-Analyzer-Farben-Arduino/dp/B07K6G55WG/ref=sr_1_3
>
> fchk

mit einem einem Oszilloskop hab ich das gemach

von Viktor (Gast)


Lesenswert?

aabb schrieb:> Initialisierung übernommen.
> void init_OLEDL128(void)
> {
> send_command(0x40); //Set Display start line
> send_command(0xA0); //Bottom View no Segment remap
> send_command(0xC0); //Bottom View COM scan direction normal
> send_command(0xA6); //Display normal (RAM)
> send_command(0x81); send_command(0xFF); //Set contrast to maximum
> send_command(0xD5); send_command(0x40); //Clock divider/Oscillator
> frequency
> send_command(0xD9); send_command(0x44); //Pre‐charge Period
> send_command(0xAF);    //Display on
> }

Was erwartest du nach dieser Initialisierung? Daß das Display hell 
leuchtet?

Sende doch erst mal ein paar Daten zum Display, und wenn sich dann immer 
noch nichts tut, dann kannst du mit der Fehlersuche beginnen.

von aabb (Gast)


Lesenswert?

Viktor schrieb:
>
> Was erwartest du nach dieser Initialisierung? Daß das Display hell
> leuchtet?
>
> Sende doch erst mal ein paar Daten zum Display, und wenn sich dann immer
> noch nichts tut, dann kannst du mit der Fehlersuche beginnen.

Das hab ich auch gemacht

von Sven K. (quotschmacher)


Lesenswert?

aabb schrieb:
> Das hab ich auch gemacht

naja... nicht wirklich. wenn ein oled nichts anzeigen soll, ist es 
schwarz. hat keine hintergrundbeleuchtung. lass es doch ein zeichen 
darstellen oder setze einen pixel...

aabb schrieb:
> 
https://www.amazon.de/KeeYees-Logic-Analyzer-Farben-Arduino/dp/B07K6G55WG/ref=sr_1_3

15 € ist aber teuer. ich hab meinen vor ewigkeiten bei ebay für 8 € 
gekauft.

von Christian S. (roehrenvorheizer)


Lesenswert?

Kannst Du das Statusregister bereits lesen?


mfg

von Gerald K. (geku)


Lesenswert?

Reset und Chipselect werden richtig bedient?

von aabb (Gast)


Lesenswert?

Gerald K. schrieb:
> Reset und Chipselect werden richtig bedient?

Chipselect LOW und Reset High

von Display (Gast)


Lesenswert?

Display-Spannung angelegt/richtige Höhe?
Siehe Datenblatt "Vcc", hier 12.7V.
Ohne leuchtet gar nichts. Bei OLEDs ist der Kontrast so gut, dass man 
von der Ansteuerung wirklich nichts sieht, wenn diese Spannung 
fehlt/nicht hoch genug ist.

von Beo Bachta (Gast)


Lesenswert?

aabb schrieb:
> Chipselect LOW

Wenn CS dauernd low ist dann wird es nicht funktionieren.

von aabb (Gast)


Lesenswert?

Display schrieb:
> Display-Spannung angelegt/richtige Höhe?
> Siehe Datenblatt "Vcc", hier 12.7V.
> Ohne leuchtet gar nichts. Bei OLEDs ist der Kontrast so gut, dass man
> von der Ansteuerung wirklich nichts sieht, wenn diese Spannung
> fehlt/nicht hoch genug ist.

12.42V sollen normalerweise ausreichen.

von Gerald K. (geku)


Lesenswert?

Gibt es villeicht getrennte (Chip)select Leitungen für Daten und 
Konfiguration?

von aabb (Gast)


Lesenswert?

Beo Bachta schrieb:
> aabb schrieb:
>> Chipselect LOW
>
> Wenn CS dauernd low ist dann wird es nicht funktionieren.

meinst du dass ich wieder auf HIGH nach dem Senden der Commands stellen 
muss?

von Johnny B. (johnnyb)


Lesenswert?

Das Signal für Command oder Data musst jeweils auch noch richtig setzen.

von Beo Bachta (Gast)


Lesenswert?

aabb schrieb:
> meinst du dass ich wieder auf HIGH nach dem Senden der Commands stellen
> muss?

Schau ins Datenblatt deines SSD1309, da wird genau beschrieben
wie Schreib- und Lesezyklen auszusehen haben.

von nooo (Gast)


Lesenswert?


von Beo Bachta (Gast)


Lesenswert?

nooo schrieb:
> bitte so machen wie hier drinn steht:

Aber bitte gaaaaanz sicher nicht.

Das ist das mieseste an Protokoll-Beschreibung was ich seit
langem gesehen habe.

Zitat:

"For  more  details  please refer  to  the  controllers
data  sheet SSD1309. "

von Christian S. (roehrenvorheizer)


Lesenswert?

Hätte ich bloß nicht nach dem Stausregister gefragt.


MfG

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.