Hi Leute, ich möchte für ein Projekt das ILI9341 Display einsetzen, möchte aber ein Videoplayback realisieren, brauche also zumindest mal > 30 fps mit dem Teil. Die Bibliotheken die im Netz rumschwirren sind ja alle nicht so performant, weil die relativ oft neu die Frambuffer Adresse neu setzen und so. Meine Idee war jetzt folgende... Ich habe das Datenblatt mal kurz überflogen und wollte mal fragen (bevor ich da jetzt viel Zeit investiere), ob das so funktioniert: Ich würde im Ram auf dem uC einen Framebuffer anlegen, also 320x240x16bpp. Das Display muss am Anfang einmal initialisiert werden, danach würde ich einmalig den Data-Writepointer(für das interne Grafikram) auf den Startpunkt 0,0 setzen. Danach halte ich konstant den D/C Pin auf Data-Mode und SPI-CS auf low und würde mittels einer selbst-loopenden DMA die ganze Zeit automatisiert den Framebuffer vom uC-RAM ins Display feuern. Anscheinend macht der Pointer im LCD-Ram einen auto-wrap, wenn man am Ende angekommen ist. Was meint ihr? Bei 50 MHz SPI-Clock würde ich da bei ca 40 fps rauskommen, wenn dann die SPI dauerhaft läuft.
Marco schrieb: > Bei 50 MHz SPI-Clock würde ich da bei ca 40 fps rauskommen, wenn dann > die SPI dauerhaft läuft. Laut Datenblatt ILI9341 soll ein Clock Cycle im SPI Modus min. 100 ns sein. Das entspräche einer Freq. von 10 MHz. Ob der ILI9341 mit 50 MHz läuft ist daher fraglich. Ich würde, wenn es geht, den 8 bit oder 16 bit Mode nehmen. Im 8 bit Modus würdest du mit deinem Verfahren theoretisch bei max zulässiger Freq.(15.15 MHz)auf 98 fps kommen. Im 16 bit Modus theoretisch doppelt so viel fps. Gruß Thomas
Marco schrieb: > Was meint ihr? Wenn du schnell sein willst und ein weitverbreitetes Display verwenden willst dann nimm das ILI9341 mit 16-Bit Parallelbus. Den selben Bus gibt es auch für das ILI9325, beide sind sich recht ähnlich. Den 16-Bit Bus kann man dann sehr eng an den Controller anbinden und ist damit deutlich schneller. 320 x 240 schauen schon etwas bescheiden aus, warum nicht ein Display mit ILI9486 / ILI9488 verwenden, das böte dann schon 640x480 Bildpunkte? Auch mit 16-Bit-Parallelbus erhältlich.
so ein STM32F407 schafft das locker, es gibt ein Chinaboard wo der ILI9341 Huckepack draufpasst und mit 16 Bit parallel angebunden ist: https://de.aliexpress.com/item/4000953664266.html Ausgabe über das FMC Interface, das braucht dann zum Pixel setzen nur einen Write auf eine Speicherzelle.
Thomas E. schrieb: > Ob der ILI9341 mit 50 MHz läuft ist daher fraglich. Üblich sind bei den RaspBerrys auch die ILI9488 Displays mit SPI, dort geht es wohl etwas schneller zur Sache, weiss aber gerade nicht wie schnell.
J. S. schrieb: > es gibt ein Chinaboard wo der > ILI9341 Huckepack draufpasst und mit 16 Bit parallel angebunden ist Bevor es die Huckepack-Version gab hatte ich es schon mit eigenverantwortlicher Verdrahtung für das ILI9325 und ILI9341 geübt: Beitrag "Re: STM32F407 Black und Arduino"
Was ist denn die Quelle für dein Video? Evtl ist ein kleiner HDMI Monitor da einfacher.
ILI9341 via SPI (10 MHz) und Video? Nimm was anderes. Einmal den Bildschirm komplett vollschreiben (320x240) dauerte bei mir mit Optimierungen ca. 150 ms. Das reicht nur für Daumenkino...
Bernd schrieb: > Das reicht nur für Daumenkino... Es ist auch ganz schnell ganz still geworden seitens des TO. Ein oft beobachtetes Phänomen hier: schnell mal eine "Idee" gepostet und schnell mal gemerkt dass man auf dem falschen Dampfer ist. Dann ganz leise werden, gar nichts mehr von sich geben und bloss nichts zugeben, antworten. Andere Version ist noch "geschickte(re)s Trollen". Hinweis dafür wäre "für ein Projekt". Das ist schon ein bisschen bedeutungslosschwanger. Marco schrieb: > ich möchte für ein Projekt ..... Wenn man Grosses vorhat und dafür das Nächstbeste nimmt was so herumliegt oder angeboten wird dann wird das halt nix. Die ganze Zeit mit DMA auf SPI ballern bringt wohl doch auch eine gewisse Performance-Einbusse des Gesamtsystems mit sich, abhängig natürlich vom verwendeten Controller (der geheim ist und den wir daher nicht kennen). Nicht jeder Controller hat soviel interne Busse dass alles gleichzeitig geht.
> Das entspräche einer Freq. von 10 MHz. Ob der ILI9341 mit 50 MHz > läuft ist daher fraglich. Das ist korrekt. Die Teile koennen laut Datenblatt wirklich nur 10Mhz und sind damit unbrauchbar. Ich hab hier aber eins mit 40Mhz laufen und das funktioniert. Erstaunlich, aber geht. Also nix das man produktiv einsetzen kann, fuer eine kleine private bastelaktion aber vermutlich einen Versuch wert. Man ist damit uebrigen in Bereichen wo man ueber einen vernuenftig verlegten Bus und ordentliche Terminierung nachdenken sollte. .-) Olaf
jo mei schrieb: > 320 x 240 schauen schon etwas bescheiden aus, warum nicht > ein Display mit ILI9486 / ILI9488 verwenden, das böte dann > schon 640x480 Bildpunkte? ähm, nein, die unterstützen maximal 480x320 und werdenen üblicherweise in größeren Displays verbaut. Ob sich das soo deutlich auf die Pixelgröße auswirkt, wage ich zu bezweifeln.
ILI9341 SPI max FPS performance liegt bei ca. 40 MHz und damit kommst du in etwa auf 23 Bilder pro Sekunde.
123 schrieb: > ähm, nein, die unterstützen maximal 480x320 Ja, sorry, natürlich 480x320, .... da war ich gerade in adventlicher Glühwein-Umnachtung .... Dabei hatte ich ja die Displays selbst schon bis zur Erschöpfung ausgetestet.
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.