Display EA OLED L128-6

Gast #6641376
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
Angehängte Dateien:
Gast #6641389
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.
Gast #6641424
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.
#6642181
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.
Gast #6642197
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?
#6642212
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.
Gast #6643321
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.
Gast #6643322
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.
Gast #6644930
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren