Forum: Mikrocontroller und Digitale Elektronik Pollin 120 817 320x240 Farbdisplay mit Touch


von Ich (Gast)


Lesenswert?

Hallo zusammen,

hat jemand das Display MC28G03A (Pollin Nr. 120 817) schon mal 
ausprobiert?
Link: 
http://www.pollin.de/shop/dt/MjgxOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_mit_Touch_und_LED_Beleuchtung_MC28G03A.html
Datenblatt: http://www.pollin.de/shop/downloads/D120817D.PDF
- 320 x 240 Pixel, Farbe
- LED-Hintergrundbeleuchtung
- Touch-Panel

Sieht für 3,95 € ganz gut aus, oder gibt es irgendeinen Grund, warum man 
hier nichts dazu findet? Ist es noch so neu im Angebot von Pollin?

von holger (Gast)


Lesenswert?

>Sieht für 3,95 € ganz gut aus, oder gibt es irgendeinen Grund, warum man
>hier nichts dazu findet? Ist es noch so neu im Angebot von Pollin?

Ja, geil net.

Display ohne Controller is Müll. Deswegen will das keiner.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefan K. hat eine simple Ansteuerung für solche Displays gebaut, 
basierend auf Code von Benedikt:
Beitrag "Ultra-einfacher Lowcost LCD Controller 320x240 im Textmodus"

Grössere Controller wie der Dragonball von Freescale, der z.B. in 
älteren Palms verbaut ist (und auf dem uCSimm), haben Ansteuerung für 
solche LCDs oft onboard.

von Axel S. (a-za-z0-9)


Lesenswert?

Matthias Sch. schrieb:
> Stefan K. hat eine simple Ansteuerung für solche Displays gebaut,
> basierend auf Code von Benedikt:

Was nur leider für dieses LCD von Pollin gar nix bringt, weil das 
farbig ist und RGB-Daten erwartet. Da kommt bei einer Spar-Ansteuerung 
nur noch bunter Pixelbrei raus.


XL

von Sebastian (Gast)


Lesenswert?

Richtig, die RGB Codierung in drei aufeinanderfolgenden Bytes für ein 
Pixeltriplett ist das große Problem. Ich bin mir nicht sicher, wie man 
diesen Modus nennt, aber nach meinen bisherigen Recherchen ist dies ein 
selten unterstützter Modus - selbst Mikros mit integriertem 
Displaycontroller wie z.B. der i.Mx23 (Freescale) scheinen ihn nicht zu 
beherrschen. Ein ATMega ist wahrscheinlich zu schwach, wenn er auch noch 
diese Vorsortierung der Daten übernehmen soll.
Bleibt eigentlich nur noch ein FPGA, oder ein dedizierter 
Displaycontroller von Seiko Epson. Beide Lösungen machen das 
Gesamtsystem dann allerdings preislich unattraktiv.

von Sudo (Gast)


Lesenswert?

Hat jemand von euch Ahnung ob man das Ding an nem Raspberry zum Laufen 
kriegt?

von Stefan (Gast)


Lesenswert?

Mit dem Timing Diagramm kann ich nichts anfangen. Habe ich so noch nicht 
gesehen.

Nach einem kurzen Blick auf "Contrast Ratio" und "Brightness" habe ich 
den PDF-Betrachter dann auch wieder geschlossen. Blickwinkelabhängigkeit 
geht noch halbwegs aber CR=15 und Helligkeit von 45 cd/m^2 sind 
unterirdische Werte. Schade um die Rohstoffe.

von c-hater (Gast)


Lesenswert?

Sebastian schrieb:

> Richtig, die RGB Codierung in drei aufeinanderfolgenden Bytes für ein
> Pixeltriplett ist das große Problem.

Nein nein, es sind drei aufeinander folgende Bytes für ein Pixel-OKTETT. 
Das macht die Sache doch schonmal deutlich einfacher. ;o)

> Ich bin mir nicht sicher, wie man
> diesen Modus nennt

Vermutlich irgendwas mit "packed" im Namen.

> Ein ATMega ist wahrscheinlich zu schwach

Naja, das kommt natürlich darauf an, was man erreichen will und wie man 
es erreichen will. Grundsätzlich hilft Speicher, sowohl RAM als auch 
Flash, um möglichst viel Zeug in vorberechneten Tabellen halten zu 
können, desto weniger muß der eigentliche Framebuffer rechnen.

Nehmen wir mal an, wir wollen eine Textausgabe mit 8x8 Zeichensatz und 
jeweils Vorder- und Hintergrundfarbattribut pro Zeichenposition, wobei 
wir der Einfachheit halber mal die Farbattribute in einem Byte 
speichern, obwohl dabei zwei Bits unbenutzt bleiben, wir also insgesamt 
ein Achtel des Bildwiederholspeichers ungenutzt verschwenden. Macht für 
den Bildwiederholspeicher erstmal (320*240*2)/(8*8)=2400 Bytes RAM. Geht 
schonmal, ab Mega644 aufwärts.

Aus diesem Bildwiederholspeicher müssen wir also pro 8 Pixel erstmal 
zwei Bytes (mit 14 relevanten Bits) lesen, daraus dann irgendwie drei 
Bytes machen und die dann ausgeben. Wir brauchen für das "irgendwie" 
wohl zwei Tabellen, die erste ist der allseits beliebte 8x8 Zeichensatz 
mit 2048 Bytes, dazu kommt dann noch eine kleine Tabelle mit 
2^14*3=49152 Bytes Umfang, insgesamt also 51200 Bytes. Ja warte mal, das 
paßt ja auch ab Mega644 aufwärts, die 6 restlichen k sollten für den 
Code eines Framebuffers und eines einfachen Textterminals wohl reichen.

Also lohnt es, über das Timing nachzudenken. Also tun wir das mal, der 
Code für ein Pixeloktett muß nach obigem Ansatz mindestens folgendes 
machen:

loop:
mov ZH,CSLB  ; 1 untere drei Bits des Zeilenzählers+OffsetH Zeichensatz
ld ZL,X+     ; 2 Zeichencode aus Framebuffer holen
lpm ZL,Z     ; 3 Pixeldaten aus Zeichensatz holen
ld ZH,X+     ; 2 Farbattribute aus Framebuffer holen
lpm TMP,Z+   ; 3 erstes Byte zur Ausgabe aus der Tabelle holen
out PORT,TMP ; 1 ausgeben
lpm TMP,Z+   ; 3 dasselbe noch zweimal
out PORT,TMP ; 1
lpm TMP,Z+   ; 3
out PORT,TMP ; 1
dec CCNT     ; 1 Zeichenzähler behandeln
brne loop    ; 2 Schleife schließen
             ;--
             ;23

Unter 23 Takte für 8 Pixel geht also (ohne loop unrolling) garnix. Sagen 
wir mal, wir rollen die Schleife einmal aus und runden etwas auf, damit 
wir genug Spielraum für die restlichen Aufgaben haben (Alignment der 
Ausgabe zu CL2 aus einem Timer und das Handling von CL1,FLM und M), dann 
sind wir bei 48 Takte für 16 Pixel. Dazu kommt dann der Overhead für die 
Zeilengeschichte im Interrupt, sagen wir mal großzügige 150 Takte dafür.

Naja, der Rest ist Klippschulmathetik:
Eine Zeile sind (320*48)/16+150=1110 Takte, bei 20MHz Takt maximale 
Zeilenfrequenz also irgendwas bei 18kHz. 240 Zeilen sind auszugeben, 
kommen wir also etwa bei 75Hz maximale Framerate an.

Das ist weit unter der im Datenblatt angegebenen minimalen Framerate von 
120Hz. Allerdings bin ich nicht sicher, wie ernst man diese Angabe 
nehmen sollte, denn erstaunlicherweise gibt es keine adäquaten 
Untergrenzen für CL1, CL2 oder M. Meiner Meinung nach ist es sehr gut 
möglich, daß das Display auch mit 60Hz noch problemlos läuft.

Genau weiß man es aber natürlich erst, wenn man es ausprobiert hat. 
Irgendeinen Grund gab es vielleicht doch dafür, die Framerate derart 
nach unten zu begrenzen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sudo schrieb:
> Hat jemand von euch Ahnung ob man das Ding an nem Raspberry zum Laufen
> kriegt?

Ziemlich sicher nicht. Der Raspberry Pi hat eine HDMI- und eine 
Composite-Video-Schnittstelle, an die Displays mit entsprechender 
Signalaufbereitung angeschlossen werden können. Zusätzlich hat er eine 
MIPI DSI-Schnittstelle, aber dafür bräuchte man einen DSI-Controller, 
der DSI auf das Protokoll dieses Displays umsetzt (was nicht existieren 
dürfte).

I/O-Leitungen, um irgendwas per Bitgewackel zu machen, hat der Raspberry 
Pi praktisch keine, und damit ist er zur Ansteuerung so einer 
Displaygurke also komplett unbrauchbar.

Möglicherweise unterstützt der neue, gerade angekündigte 
Displaycontroller von FTDI das spezifische Protokoll des 
Pollin-Displays, aber über den ist noch nicht allzuviel bekannt, und die 
Serienproduktion wird auch erst irgendwann im Laufe des Jahres 
angefahren, so daß das Ding wahrscheinlich erst in einem Jahr oder so 
hierzulande erhältlich sein dürfte.

von Philipp (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> I/O-Leitungen, um irgendwas per Bitgewackel zu machen, hat der Raspberry
> Pi praktisch keine, und damit ist er zur Ansteuerung so einer
> Displaygurke also komplett unbrauchbar.

Hm, also er hat doch erstmal 8 GPIOs, dann noch 2 Pins für I2C und 5 für 
ISP, die man z.B. mit wiringPi 
(https://projects.drogon.net/raspberry-pi/wiringpi/) auch direkt 
ansteuern können soll. Die 15 könnten doch reichen. Habs aber nur 
gelesen und selber noch keine Erfahrungen damit gemacht.

von Sebastian (Gast)


Lesenswert?

Nach diesem Artikel: 
http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/
wird wiringPi wohl zu langsam sein. Wenn man mit direkter C 
Programmierung ungefähr 20 MHz Rechteck ausgeben kann, heißt das 
allerdings noch nicht, daß es möglich ist, ein ganzes Datenwort aus dem 
Speicher mit der gleichen Gewschwindigkeit auf mehrere Portleitungen zu 
schreiben.

Selbst wenn es klappt, alle benötigten Portleitungen auf einmal mit ca. 
20 MHz zu beschreiben, könnte mit höherer Prozessorauslastung das Timing 
leiden. Und man will mit dem Board ja eigentlich mehr tun, als bloß ein 
Display ansteuern.

Ein Versuch kann nicht schaden, Anwendbarkeit in der realen Welt ist 
nicht garantiert.

von Christian B. (casandro)


Lesenswert?

c-hater schrieb:
> Unter 23 Takte für 8 Pixel geht also (ohne loop unrolling) garnix...

Naja, wenn Du noch auf die LPMs verzichtest wird das schon noch 
schneller, Du hast ja 32 Register :)

Was ich auf Anhieb problematischer finde sind die vielen 
Versorgungsspannungen und das Flachbandkabeldings.

von 6A66 (Gast)


Lesenswert?

Philipp schrieb:
> Hm, also er hat doch erstmal 8 GPIOs, dann noch 2 Pins für I2C und 5 für
> ISP, die man z.B. mit wiringPi
> (https://projects.drogon.net/raspberry-pi/wiringpi/) auch direkt

Das Timing des Displays erwartet alle 66ns ein Datenwort das aus den 
Pixeln aus dem Speicher zusammengeschoben werden muss. Heißt 16MHz. Oder 
man baut den Pixelspeicher gleich richtig auf, dann muss man nur mit 
16MHz die Daten auf den Port zur Verfügung stellen und dann das Timing 
auch noch richtig erzeugen. Nicht unkomplex, in SW sollte da ein 
Vielfaches an 16MHz Instuktionszykluszeit zur Verfügung stehen.

rgds

von Groß- und Kleinschreibung (Gast)


Lesenswert?

Wenns etwas teurer sein darf, bekommst du für 10EUR und 10 Tage 
Wartezeit ein 320x240 LCD mit netten SPI Interface + touch + 3,3 V reg:

Beitrag "ili9320 spi tft 320x240"


Da kann auch ein kleiner mega8 noch andere, wichtigere Dinge nebenbei 
machen...

von W.S. (Gast)


Lesenswert?

und wozu?

Leute, das hier sind alles ziemlich winzige Displays, nicht mal 3 Zoll 
groß und dabei 320x240 Pixel. Nochwas: bei STN-Displays hat man nur 
jeweils 1 Pixel für R, G und B. Das sind nur 3 Bit, also 8 Farben und 
wenn man mehr haben will, muß man von Frame zu Frame quasi PWM machen.

Langer Rede kurzer Sinn: Solche Displays lohnen sich selbst für 
fanatische Bastler NICHT. Da ist es wesentlich besser, sich ein 4.3" TFT 
mit 480x272 zu kaufen (z.B. per ebay als Ersatzteil irgendwelcher 
Playstations o.ä) und dafür 18 Euro für's TFT und nochmal 2.50 für den 
Foliensteck zu blechen. Ansteuern kann man die dann mit nem LPC2478 o.ä. 
oder mit nem CPLD nebst RAM, eines mit 128 MC sollte gerade ausreichen. 
Ist ein besseres und lehrreicheres Bastelobjekt.

W.S.

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
Noch kein Account? Hier anmelden.