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
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.
Hi
>Als adresse habe ich 0x7a ausgelesen.
Teste mal 0x3C+SA also 0011110SA.
MfG spess
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.
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
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.
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
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
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.
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?
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
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
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...
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?
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.
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.