Display EA OLED L128-6

Gast #6641376
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
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
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.
Gast #6641428
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
Gast #6641452
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.
Gast #6641526
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
#6642181
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
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
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.
(Firma: Vescomp) #6642280
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.
Gast #6643301
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...
Gast #6643321
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
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
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

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.