Tips zur Displayansteuerung mit DualController gesucht

Gast #5279331
Lesenswert?

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
Gast #5279435
Lesenswert?

> 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
Gast #5279475
Lesenswert?

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.
Angehängte Dateien:
#5279612
Lesenswert?

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.
Gast #5279657
Lesenswert?

> ... 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
Gast #5279725
Lesenswert?

> 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
(Firma: Brainit GmbH) #5279778
Lesenswert?

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.
Gast #5279786
Lesenswert?

> 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
Gast #5280640
Lesenswert?

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

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