Forum: Mikrocontroller und Digitale Elektronik Display EA OLED L128-6


von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Versuche das Display EA OLED L128-6 an meinem I2C Bus zu betreiben. Das 
Display wird vom SSD1309 Prozessor gesteuert. Soll ja der Nachfolger vom 
SSD1306 sein.
Auf der Seite des Herstellers ist das Anschlussbild und ein kurzes 
Beispiel für das init angegeben. Als adresse habe ich 0x7a ausgelesen.
Leider kann das Display nichts anzeigen oder was wahrscheinlicher ist, 
verwende nicht die richtigen Anweisungen dazu.
Kann mir jemand dabei helfen, wenigsten eine Schrift oder was anderes 
drauf zu bekommen?
LG Paul

von erklehr behr (Gast)


Lesenswert?

Paul schrieb:
> oder was wahrscheinlicher ist,
> verwende nicht die richtigen Anweisungen dazu

Wenn du sie nicht zeigst dann können wir nicht beurteilen
ob es die richtigen sind. Auch der gesamte Programmcode
wäre hilfreich bei der Fehlersuche.

Bei Displays kann oft der Fehler auftreten dass man den
Controller mit 5V versorgt und das Display mit 3.3V. Das
vertragen manche Displays nicht, ist aber nicht generell so.
Veilleicht hast du auch einen ganz anderen Fehler in der
Hardware.

Grundsätzlich kann also alles (Hardware und Software) im
Argen liegen. Wenn du nicht zeigst was du in Hardware und
Software machst können wir auch nicht viel weiterhelfen.

von Spess53 (Gast)


Lesenswert?

Hi

>Als adresse habe ich 0x7a ausgelesen.

Teste mal 0x3C+SA also 0011110SA.

MfG spess

von Paul (Gast)


Lesenswert?

Bisher habe ich das
1
void lcd_init_oledL128()    // init EA Oled L128-6
2
    {
3
    i2c_start(LCD_I2C_ADR_1);
4
    i2c_write(0x40);  // Display-Startlinie einstellen
5
    i2c_write(0xA0);  // Ansicht von unten kein Segment-Remap
6
    i2c_write(0xC0);  // Ansicht von unten COM-Scanrichtung normal
7
    i2c_write(0xA6);  // Display normal (RAM)
8
    i2c_write(0x81);  // Kontrast auf Maximum einstellen
9
    i2c_write(0xFF);
10
    i2c_write(0xD5);  // Clock-Teiler Oszillatorfrequenz
11
    i2c_write(0x40);
12
    i2c_write(0xD9);  // Vorladung Zeitraum
13
    i2c_write(0x44);  // 
14
    i2c_write(0xAF);  // Anzeige ein
15
    i2c_stop();    
16
    }
dann noch das
1
int main(void)
2
{                            // Interrupts deaktiviert
3
  i2c_init();                        // Starte I2C Bus
4
  lcd_init_oledL128(); 
5
  ........
Das mit den 3,3V habe ich korekt aufgebaut. Habe einen TS1117 3,3 da 
vor.
Leider fehlt mir der Ansatz bei diesem Graphik display.

von erklehr behr (Gast)


Lesenswert?

Paul schrieb:
> Das mit den 3,3V habe ich korekt aufgebaut. Habe einen TS1117 3,3 da
> vor.

Das ist natürlich so klar wie Nebelsuppe. Wie soll man
das verstehen? Kopfschüttel.

erklehr behr schrieb:
> Bei Displays kann oft der Fehler auftreten dass man den
> Controller mit 5V versorgt und das Display mit 3.3V. Das
> vertragen manche Displays nicht

von Paul (Gast)


Lesenswert?

Auf der Platine mit dem Display ist ein Regler von 5V auf 3,3V drauf. 
Dazu sind zwei BSS138 als Pegelwandler zwischem dem 3,3V Bus und den 5V. 
Auf der Displayplatine ist kein eigener Prozessor, alles über den Bus.

von Achim H. (pluto25)


Lesenswert?

Hab ich das falsch im Gedächnis? Muß nicht vor jedem Comanndo ein 0x80?
Als Inint mal versuchsweise nur 7A,80,AF.
PS Mein 1306 hat 78 als Adresse

von Spess53 (Gast)


Lesenswert?

Hi

>PS Mein 1306 hat 78 als Adresse

Kommt immer darauf an was dein I²C-Treiber verlangt, entweder 
7-Bit-Adresse (->0x3C) oder 8-Bit Adresse (0x78).

MfG Spess

von Paul (Gast)


Lesenswert?

Es sind 2 Adressen möglich, 78 und 7a

von Veit D. (devil-elec)


Lesenswert?

Hallo,

bei EA gibts Application Notes und Bsp. Code. Unter anderem auch für 
Arduino. Das Bsp. darin ist zwar für SPI, aber den Code kannste dir ja 
rausziehen und das Display damit ausprobieren. Wenn das dann mit SPI 
klappt, stimmt was mit deinem I2C nicht. Wenn das mit dem SPI Bsp. nicht 
klappt, wird wohl die Beschaltung nicht stimmen. Fehler eingekreist. So 
viel zur Ferndiagnose.

von Paul (Gast)


Lesenswert?

Habe denn Hinweis hier gefolgt.
Der Pin 30 muss 3,3V haben. Ist im Schema des Herstellers nicht 
angegeben. Damit wird das Display durch den Scanner erkannt.
Bleibt nur noch die Frage nach einem Beispiel mit dem I2C Bus und dem 
Kontroller SSD1309.
Hat jemand ein Beispiel dazu?

von Veit D. (devil-elec)


Lesenswert?

Paul schrieb:

> Der Pin 30 muss 3,3V haben. Ist im Schema des Herstellers nicht
> angegeben.
Nö, ist angeben, steht /Reset dran. Das heißt Ruhepegel ist Ub. Kann man 
auch von Seite 9 entnehmen. Überprüfe nochmal die Beschaltung.

> Hat jemand ein Beispiel dazu?
Die Kommandos ans Display sind immer gleich, egal welcher Bus. Das 
kannste dir auch aus den EA SPI Bsp. rausziehen. Notfalls SPI probieren.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Paul schrieb:
> Bisher habe ich das

Und so einfach mit I2C Interface:
1
   i2c_write(0x40);  // Display-Startlinie einstellen
2
   ... 
3
   i2c_write(0xA0);  // Ansicht von unten kein Segment-Remap
funktioniert das nicht.

Du brauchst je nach Command noch Controlbytes dazwischen.
Schlage vor, du liest DaBla noch einmal genau.

: Bearbeitet durch User
von Paul (Gast)


Lesenswert?

Das Programm entstammt dem DB des Herstellers. Hat der schon was falsch?

von John Doe (Gast)


Lesenswert?

Paul schrieb:
> Das Programm entstammt dem DB des Herstellers. Hat der schon was falsch?

Nein, vergiss den Blödsinn, den Marc V. geschrieben hat.
Denn offensichtlich hat Marc V. Schwierigkeiten, ein Datenblatt zu 
lesen...

von Paul (Gast)


Lesenswert?

Bitte nicht streiten wer Recht hat. Brauche was konkretes um das Display 
in den Griff zu bekommen.
Der Kontroller ist doch der SSD1309.
Sind Programme für OLED des SSD1306 kompatibel?

von John Doe (Gast)


Lesenswert?

A. H. schrieb:
> Hab ich das falsch im Gedächnis? Muß nicht vor jedem Comanndo ein 0x80?
> Als Inint mal versuchsweise nur 7A,80,AF.

Wenn man I2C nutzt, muss vor jedem neuen Befehl ein Controlbyte 
geschrieben werden. Bit7 ist Control, daher hast Du Recht.

"After the transmission of the slave address, either the control byte or 
the data byte may be sent across
the SDA. A control byte mainly consists of Co and D/C# bits following by 
six “0” ‘s.
a. If the Co bit is set as logic “0”, the transmission of the following 
information will contain
data bytes only.
b. The D/C# bit determines the next data byte is acted as a command or a 
data. If the D/C# bit is
set to logic “0”, it defines the following data byte as a command. If 
the D/C# bit is set to logic
“1”, it defines the following data byte as a data which will be stored 
at the GDDRAM. The
GDDRAM column address pointer will be increased by one automatically 
after each data
write."

Seite 20 Datenblatt.

von John Doe (Gast)


Lesenswert?

Paul schrieb:
> Bitte nicht streiten wer Recht hat. Brauche was konkretes um das Display
> in den Griff zu bekommen.
> Der Kontroller ist doch der SSD1309.
> Sind Programme für OLED des SSD1306 kompatibel?

Wie geschrieben: Zuerst muss die Adresse auf den Bus, dann:
- wenn Kommando -> 0x80
- wenn Daten -> 0x40
dann ein oder mehrere Daten. Dann Stop.

von Marc V. (Firma: Vescomp) (logarithmus)


Angehängte Dateien:

Lesenswert?

John Doe schrieb:
> Nein, vergiss den Blödsinn, den Marc V. geschrieben hat.
> Denn offensichtlich hat Marc V. Schwierigkeiten, ein Datenblatt zu
> lesen...

Möglich, nur hat Marc V. keine Schwierigkeiten, ein OLED zum
laufen zu bringen - im Gegensatz zu dir, Besserwisser ohne Ahnung...

von John Doe (Gast)


Lesenswert?

Marc V. schrieb:
> John Doe schrieb:
>> Nein, vergiss den Blödsinn, den Marc V. geschrieben hat.
>> Denn offensichtlich hat Marc V. Schwierigkeiten, ein Datenblatt zu
>> lesen...
>
> Möglich, nur hat Marc V. keine Schwierigkeiten, ein OLED zum
> laufen zu bringen - im Gegensatz zu dir, Besserwisser ohne Ahnung...

Tja, wenn man kein Datenblatt lesen kann und einem die Argumente 
ausgehen, dann fällt man auf das asoziale Proleten-Niveau der Familie, 
der man entstammt zurück.
Traurig, traurig...

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.