Moin da draussen, Ich bin gerade dabei ein Grafikdisplay anzusteuern zu dem ich keine Daten habe und brauche etwas Inspritation weil mir gerade die Ideen ausgehen. :) Das Display hat 256x128pixel und ist aufgeteilt in zwei Controller. Es ist zweimal der S6B0741 von Samsung verbaut. Die Leitungen zur Ansteuerung der beiden Display sind komplett parallel geschaltet bis auf jeweils eine eigene /CS Leitung. Das Display wird im sogenannten 3Wire-SPI Mode angesprochen. Es gibt also keine Umschaltung zwischen Kommando und Daten. Ich habe den Schaltplan auf der Displayplatine grob aufgenommen und weiss daher in welchen Modis ich das Display ansteuern und konfigurieren muss. Ich intialisiere nun die beiden Controller und gebe am Ende ein Testkommando aus das alle Pixel anschaltet. Das funktioniert auch, aber nur bei einem Controller! Der andere stellt sich einfach tod. Das Display ist aber nicht defekt, ich habe 10Stk von den Teilen und jedes verhaelt sich gleich. Beim rum messen ist es bisher einmal passiert das die andere Seite auch etwas angezeigt hat. Das konnte ich aber nicht reproduzieren. Ich habe alle Leitungen bis an den Displaycontroller durchgemessen und kann kein Fehler finden. Ich habe natuerlich auch mal probiert jeweils nur einen der Controller anzusteuern, oder die Reihenfolge geaendert, aber es laeuft immer nur derselbe. Die Signale sehen gut aus und der funktionierende Controller laeuft reproduzierbar gut. Gibt es bei solchen LCDs mit zwei Controllern irgendwelche Besonderheiten? Muessen sie vielleicht unterschiedlich initialisiert werden? Mir ist aufgefallen das beide Controller sich die Stuetzkondensatoren an V1 bis V5 teilen, allerdings eigene Kondensatoren zur Spannungsvervielfachung haben. Olaf
Wie behandelst du denn die beiden CS/ Leitungen? Du musst ja beide Controller jeweils einzeln initialisieren, und dann auch nacheinander die Kommandos an jeweils einen der Controller zum aktivieren aller Pixel schicken.
> Wie behandelst du denn die beiden CS/ Leitungen? So: void usart0_CS_Low(unsigned char controller) { if ( 0 == controller ) GPIO->P[gpioPortE].DOUTCLR = (1<<8); //CS0 auf Lowpegel else GPIO->P[gpioPortE].DOUTCLR = (1<<13); //CS1 auf Lowpegel } > Du musst ja beide Controller jeweils einzeln initialisieren, Ja richtig. Nach meinem Verständnis sind das ja zwei vollkommen getrennte Displays die sich nur ein Glas teilen. Bis auf die Kleinigkeit das sie sich auch die fuenf Stuetzkondensatoren an ihrem Spannungsvervielfacher teilen. Allerdings nicht die Pumpkondensatoren, die hat jeder Controller fuer sich extra. Ich kann auf dem Oszi sehen das die jeweilige CS Leitung korrekt bedient wird. Ich glaube nicht das das Problem so einfach ist. :) Olaf
Hi
>Du musst ja beide Controller jeweils einzeln initialisieren,...
Warum einzeln, wenn beide Controller gleich initialisiert werden sollen?
MfG Spess
olaf schrieb: > Das Display wird im sogenannten 3Wire-SPI Mode angesprochen. Es gibt > also keine Umschaltung zwischen Kommando und Daten. So so .... ... und was steht da im Datenblatt? Eine deiner SPI Leitungen wird wohl das RS bzw C/D (Command/Data) Signal sein da es kein MISO Signal gibt.
Ohne zu wissen mit welchem uC du arbeitest bzw, wie die IOs konfiguriert sind, evtl. treiben deine IOs nicht aktiv high und du brauchst Pullups an den CS/ Leitungen oder musst die Ausgangstreiber auf push-pull konfigurieren...?! Du könntest auch testweise die CS/ Leitungen mal vertauschen und gucken, ob dann die andere Hälfte des Displays korrekt funktioniert.
> ... und was steht da im Datenblatt? > Eine deiner SPI Leitungen wird wohl das RS bzw C/D (Command/Data) > Signal sein da es kein MISO Signal gibt. Im Datenblatt steht das man RS auf einen festen Pegel legen soll. Und es nie verwendet wird. Wenn man Daten uebertragen will dann geschieht das ueber ein spezielles Kommando das fuer eine bestimmte Anzahl von Bytes in den Datenmode umschaltet. Das ist aber auf keinen Fall ein Problem weil ich derzeit noch garkeine Daten uebertrage sondern ausschliessliche Kommandos. Ich sehe nach der Initialisierung wild verstreute Pixel die halt den zufaelligem Inhalt des Datenrams entsprechen und dann kann ich mit einem speziellen Testbefehl alle Pixel unabhaengig vom Datenram einschalten. So kann ich sehen das halt ein Controller gut funktioniert und der andere garnicht. Es macht erst Sinn sich um die Datenausgabe zu kuemmern wenn beide Controller laufen. > an den CS/ Leitungen oder musst die Ausgangstreiber auf push-pull > konfigurieren...?! Ist alles richtig konfiguriert. Ich kann ja die Signale auf dem Oszi sehen. Das sieht erstmal gut aus. Ich hab auch schon mal alle SPI-Modi durchprobiert und die Übertragung langsam gemacht. > Du könntest auch testweise die CS/ Leitungen mal vertauschen und gucken, > ob dann die andere Hälfte des Displays korrekt funktioniert. Ich gebe zu, das habe ich noch nicht gemacht. Aber scheint mir nicht sinnvoll wenn ich am nicht laufenden Controllerchip, also direkt am Anschluss des COG sein Chipsselect sehe. Ich denke da muss es noch irgendeine Abhaengigkeit zwischen den beiden Controllern geben die ich uebersehe. Olaf
Olaf schrieb: > So kann ich sehen das halt ein Controller gut funktioniert und der > andere garnicht. Heisst: beim nicht-funktionierenden Controller bleibt das Zufallsmuster stehen? Ansonsten sind Kontrast-Einstellungen immer eine gute Quelle für erhöhte Suizid-Gefährung ;-)
:
Bearbeitet durch User
Vielleicht sind es gar nicht 2 CS-Leitungen, sondern 1 CS und eine Adressleitung?
> Heisst: beim nicht-funktionierenden Controller bleibt das Zufallsmuster > stehen? Nein, beim nicht funktionierenden Controller sieht das Display einfach immer wie ausgeschaltet aus. Die Ratte macht einfach garnix. > Ansonsten sind Kontrast-Einstellungen immer eine gute Quelle für erhöhte > Suizid-Gefährung ;-) Yoyo, wenn es nur einen Controller gaebe und man nicht recht wuesste. Aber bei zwei identischen? > Vielleicht sind es gar nicht 2 CS-Leitungen, sondern 1 CS und eine > Adressleitung? Es gibt keine Adressleitungen. Aber natuerlich, ich hab die Anschlussbelegung geraten, Spielraum fuer Fehler ist da sicher gegeben. Bloss wenn ich mich beim raten vertan haette dann duerfte der andere Controller ja nicht funktionieren. Ich glaub ich geb es erstmal auf.... Olaf
Olaf schrieb: > Nein, beim nicht funktionierenden Controller sieht das Display einfach > immer wie ausgeschaltet aus. Die Ratte macht einfach garnix. Dann ist es der Kontrast (oder die Kontrastspannung). Es ist immer er Kontrast. Immer. Believe me. Been there, seen that. :-) Vielleicht "teilen" sich die Controller irgendwas im Umfeld der Ladungspumpe.
> Vielleicht "teilen" sich die Controller irgendwas im Umfeld der > Ladungspumpe. Sie teilen sich nicht die Kondensatoren der Ladungspumpe selber. Diese Kondensatoren hat jeder Controller fuer sich alleine! Allerdings hat der Kontroller ja noch Kondensatoren an den erzeugten Spannungen gegen GND. Und die Kondensatoren teilen sich beide Controller, da sind also die Spannungsausgaenge der Controller verbunden. Das fand ich ja auch sehr erstaunlich. Ich habe auch schon mal probiert den einen Controller auf externe Spannung umzuprogrammieren, hat sich aber nichts geaendert. Olaf
Hast Du auch n Link zum Display selbst? ... evtl ist ja n CS invertiert?
So, Problem ist geloest. Display laeuft. :-) Das Problem war das die Hardware zwar grundsaetzlich SPI erlaubt, allerdings das Layout wohl nicht dafuer vorgesehen war. Ausserdem ist direkt am LCD auch ein 15cm langes Flexkabel angeloetet das ich so uebernommen habe. Wenn man nun das Display im SPI-Mode verwendet dann stoert SCK etwas auf die /CS Leitung des einen Controllers ein. Das ist erstaunlich und hab ich so empfindlich noch nie gesehen. Dadurch hat der zweite Controller keine gueltigen Kommandos empfangen. Ich hab jetzt alle Leitungen auf dem LCD mit 100R+47pF terminiert und die Treiberleistung im Controller runter programmiert. So funktioniert es dann und ich kann beide Controller zuverlaessig ansprechen. Olaf
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.