Forum: Mikrocontroller und Digitale Elektronik PIC32 4,3" TFT


von Anatol G. (tola511)


Angehängte Dateien:

Lesenswert?

Hey,
Ich versuche einen 4,3 Zoll 480x272 TFT über eine RGB-Schnittstelle 
16Bit(5-6-5) anzusteuern. Bis jetzt bekomme ich nur die 
Hintergrundbeleuchtung zum Laufen. Ich möchte es so einfach wie möglich 
aufbauen, um die Prozesse zu verstehen.
Auf der Platine hab ich einen PIC32MX795F512L

Das PDF ist von einem baugleichen TFT.

von DerEinzigeBernd (Gast)


Lesenswert?

Hast Du mal ein Oszilloskop an die verschiedenen Signale (CLK, DE, 
HSYNC/VSYNC) gehängt und Dir die erzeugten Frequenzen betrachtet?

Du setzt zu Beginn von main() das Reset-Signal auf Lowpegel, aber 
nirgends wieder auf Highpegel. Das Display in Deinem PDF hat einen 
Low-aktiven Reset-Eingang ...

von Anatol G. (tola511)


Lesenswert?

Morgen komme ich wieder an ein Oszi und hänge es mal dran.

von DerEinzigeBernd (Gast)


Lesenswert?

Bevor Du darauf wartest, leg' mal die Reset-Leitung in main() auf 
High-Pegel. Das kann durchaus Erhellung bringen.

von Frank K. (fchk)


Lesenswert?

Anatol G. schrieb:
> Hey,
> Ich versuche einen 4,3 Zoll 480x272 TFT über eine RGB-Schnittstelle
> 16Bit(5-6-5) anzusteuern. Bis jetzt bekomme ich nur die
> Hintergrundbeleuchtung zum Laufen. Ich möchte es so einfach wie möglich
> aufbauen, um die Prozesse zu verstehen.
> Auf der Platine hab ich einen PIC32MX795F512L

Dein PIC32 hat keinen integrierten Displaycontroller, der ein solches 
Display ansteuern könnte. Dein Display hat nämlich keinen internen 
Speicher, sondern der PIC muss ihm 60 mal pro Sekunde 480*272*3=393680 
Bytes in einem genau festgelegten Timing (!) schicken. Daher hat er (a) 
die erforderliche Controllereinheit nicht und (b) nicht genug RAM, um 
den Bildschirmspeicher irgendwo abzuspeichern (und ja, es muss RAM sein, 
Flash geht nicht).

Heißt also: Du hast verloren.

Dabei ist es nicht so, dass das prinzipiell nicht gehen würde - Du hast 
Dir nur nicht den richtigen PIC ausgesucht. Der hier könnte das z.B.:

https://www.microchip.com/en-us/product/PIC32MZ2064DAS176

fchk

von m.n. (Gast)


Lesenswert?

Anatol G. schrieb:
> Ich möchte es so einfach wie möglich
> aufbauen, um die Prozesse zu verstehen.

Von welche Prozessen redest Du?

Frank K. schrieb:
> Dein PIC32 hat keinen integrierten Displaycontroller, der ein solches
> Display ansteuern könnte.

Der ist nicht zwingend notwendig, wohl aber genug RAM. Ein Beispiel, wie 
man das mit einem µC per DMA machen kann: 
Beitrag "4,3" TFT-Controller STM32F730"
Wenn die Ansprüche nicht zu hoch sind und der µC beschaffbar sein soll, 
geht auch ein Pico-Board mit RP2040. Das RAM reicht als Bildspeicher und 
die Ansteuerung läuft per PIO-Modul. Mit 16-bit Farbtiefe ist man mit 
den IO-Leitungen aber leider schnell am Ende. Reduziert man sich auf 8 
prägnante oder 256 'bunte' Farben, sieht alles viel besser aus für die 
"Prozesse".

von ... (Gast)


Lesenswert?

Lesenswertes Buch zu dem Thema:

Lucio Di Jasio
Programming 32-bit Microcontrollers in C
Exploring the PIC32

Allerdings S/W und nicht RGB.

von W.S. (Gast)


Lesenswert?

m.n. schrieb:
> Von welche Prozessen redest Du?

m.n. schrieb:
> Frank K. schrieb:
>> Displaycontroller...
> Der ist nicht zwingend notwendig, wohl aber genug RAM.

Ich vermute, er denkt dabei an das Procedere der Ansteuerung so eines 
Displays.

Naja, ein Displaycontroller ist in jedem Falle nötig, entweder einer aus 
Hardware (eingebaut oder separat) oder eben einer in Software.

Gerade bei den PIC32 ist mir erinnerlich, daß die lange sowas nicht 
hatten, weswegen es Frickel-Lösungen dafür gab: mit DMA und 
Interrupthandlern. Sowas ist immer nicht optimal.

Ich selbst hatte früher sowas mit einem CPLD und noch früher mit einer 
Handvoll GAL's erledigt. War auch frickelig, denn es läuft immer darauf 
hinaus, daß 2 Akteure zugleich auf den RAM zugreifen wollen 
(Displaysteuerung und CPU) und man Probleme hat, diese zwei asynchron 
zueinander laufenden Zugriffe zu regeln.

Und wenn man heutzutage genug RAM im System haben will, kommt man an 
kleineren SDRAM nur schwer vorbei. Und dafür muß der µC ein passendes 
Interface haben und wenn es durchsatzmäßig kein Desaster werden soll, 
dann muß er auch breit zugreifen können, was wiederum einen integrierten 
Displaycontroller voraussetzt, der die Displaydaten blockweise aus dem 
RAM holt, zwischenspeichert und dann im Displaytakt ausgibt.

Wir reden hier von 20..40 MHz Pixeltakt. Ich hab das alles durch und 
wenn ich ein buntes Grafikdisplay am µC brauche, dann suche ich lieber 
mir den µC danach aus, daß er dafür einen Controller enthält, als daß 
ich sowas selber mache. Es geht ja, aber es gehört nicht zu meinen 
Lieblingsarbeiten.

W.S.

von m.n. (Gast)


Lesenswert?

W.S. schrieb:
> mit DMA und
> Interrupthandlern. Sowas ist immer nicht optimal.

Und Du entscheidest nun, was optimal sei? Nur weil Du Dich vielleicht 
mit Deinen Lösungen verzettelt hast, gilt das nicht für alles und jeden.

W.S. schrieb:
> denn es läuft immer darauf
> hinaus, daß 2 Akteure zugleich auf den RAM zugreifen wollen
> (Displaysteuerung und CPU) und man Probleme hat, diese zwei asynchron
> zueinander laufenden Zugriffe zu regeln.

Aktuelle Controller haben damit kein Problem und burst-Modus nebst FIFO 
bei DMA gibt es auch schon lange. Darum muß man sich doch garnicht 
kümmern.

W.S. schrieb:
> Wir reden hier von 20..40 MHz Pixeltakt. Ich hab das alles durch

QVGA braucht 6,4 MHz, der TO mit seinem WQVGA gerade mal 9 MHz und 
selbst VGA 'nur' 25 MHz. Letzteres habe ich gerade mit einem RP2040 
gemacht. Und c-hater könnte Dir verraten, wie er es mit 800x480 macht. 
Tut er aber nicht, weil er sich auch für oberschlau hält ;-)
Aber suche ruhig nach Deinem Traumcontroller und bete, daß er in zwei 
Jahren wieder lieferbar ist.

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.