Hallo zusammen, ich habe eine Bitte, da ich nicht so firm bin beim Thema ESP32 Hardwarenahe Programmierung, komme aus der PIC und Atmega Ecke, C und Assembler. Ich möchte gern das Demoprojekt welches hier https://www.waveshare.com/wiki/RGB-Matrix-P3-64x64 unter "Working With ESP32" https://files.waveshare.com/upload/6/6d/RGB-Matrix-P4-64x32-Demo.zip vorgestellt wird, modifiziert nutzen. Soweit ich gesehen habe ist es ausgelegt für eine Matrix 64x64 Pixel, wobei die Displaymodelle in einem gewissen Rahmen wählbar sind. Die Farbtiefe ist dabei zwischen 24 Bit oder 48 Bit wählbar, was dem Prozessor alles abverlangen dürfte. Die Daten werden mittels DMA unter Nutzung der parallel I²C Hardware des ESP auf sechs (2x rot, 2x grün, 2x blau) Datenlines mit 64 Bit länge "rausgeschaufelt". Die eingesetzten Displays haben ein 1:32 Muxing und eine Auflösung von 64x64 Pixeln. Ich benötige das so: Farbtiefe: 3 Bit, also jede der drei Grundfarben eines Pixels nur an oder aus. Länge der Datenlines dafür: 12 x 64 Bit, also 768 Bit für 12 dieser 64x64 Pixel Displays. Ich habe ein paar eigene einfache Applikationen in C die ich dann dorthin portieren möchte. Ich nutze also den ganzen Overhead der Demos später nicht außer vielleicht Schriftarten und Striche/Kreise. Ich bin für jeden Tip hier dankbar, ich hoffe darauf hier auf jemanden zu treffen der sich gut mit dem ESP32 auskennt und mir zumindest sagen kann, wieviel Aufwand das ist es zu ändern oder ob das überhaupt realistisch ist. Wenn der Prozessor die 64x64 RGB Pixel mit 24 Bit Farbtiefe schafft zu bedienen, sollten 64x768 Pixel mit 3 Bit Farbtiefe zu schaffen sein, so meine Hoffnung. Danke. Gruß TS
:
Bearbeitet durch User
Helmut -. schrieb: > Und wo in dem Code wird da der I2C-Bus verwendet? Vermutlich hat Thorsten das mit I2S verwechselt, der Beispielcode verwendet I2S mit DMA.
Εrnst B. schrieb: > der Beispielcode > verwendet I2S mit DMA Ja stimmt, mein Fehler. Ich sehe gerade dass im Code noch defines für Prozessortypen o.ä vorhanden sind, auch in den I²S Routinen: #ifdef ESP32_ORIG #ifdef ESP32_SXXX etc... Es wird auf einem ESP32 WROOM 32 laufen, sofern das hier von Bedeutung ist. Zerreißt mich bitte nicht gleich in der Luft für diese Anfrage. Auch wenn sich keiner findet der sich diesem Thema widmet, allein mit Worten zu erfahren wie es grundsetzlich funktioniert dass man 64x64x3 8 bit tiefe PWMs seriell über diese Datenlines erzeugt, dazu gehört ja eine unfassbare Rechnleistung, oder es gibt dort eine Trickkiste die sich gewaschen hat, es müssen ja nicht nur die Daten ständig raus geschaufelt werden, sondern auch jede einzelne 8Bit PWM in jedem Zyklus neu berechnet werden... Auch wie das I²S grundsätzlich funktioniert, sind die Pins dafür vorgesehen harwaremäßig? Dann könnte ich mir vorstellen wie es vielleicht zumindest damit funktioniert. Es wird dort ja auf "memory" rumgepointert, ich kenne das zumindest so dass man eine Startadresse im Speicher übergibt und die DMA läuft das dann "einfach" ab von x bis y. Aber wie die 32 bit breiten Daten dann auf den sechs Datenpins landen, also wie das Hardwaremäßg festgelegt ist, oder funktioniert wäre schon interessant, wenn auchgleich vielleicht nicht primär wichtig.... Diese ganze "Rechnerei" der PWMs könnte ja entfallen, da die RGB Pixelbestandteile ja "nur" an oder aus sein können/werden, auch wenn das sicher nur eine Hardwaretrickkiste sein kann...in Software kann das mit den Taktraten in meiner Welt niemals gehen...aber ich bin da wie gesagt auch nur bedingt zuhause... Also bitte greift mir etwas unter die Arme. Danke.
:
Bearbeitet durch User
Thorsten S. schrieb: > allein mit Worten > zu erfahren wie es grundsetzlich funktioniert dass man 64x64x3 8 bit > tiefe PWMs seriell über diese Datenlines erzeugt, dazu gehört ja eine > unfassbare Rechnleistung, Hm, das verstehe ich nicht. Werden da wirklich PWMs geschickt? Ich habe eine andere Vorstellung was eine PWM ist. Also wenn das Bild 64x64x3 Bytes braucht, dann sind das 12288 Bytes zu Übertragen. Das ist keine unfassbar große Rechenleistung. Jedenfalls bei meinen Erfahrungen. Falls ich es falsch verstanden habe, und es wirklich PWMs sind, die für jeden Pixel erzeugt werden müssen, dann gehen die normalen CPUs nicht, und du müsstest auf GPUs (NVidia etc) ausweichen. Oder einen normalen Monitor mit HDMI nehmen, der macht das mit links. Einfach an einen z.B. Raspi anschließen. Der hat dann auch mehr als 64x64 Auflösung. Benutze ich täglich.
Beitrag #7603393 wurde vom Autor gelöscht.
Beitrag #7603453 wurde vom Autor gelöscht.
Ist der ESP32 ein PC? Steht ja in dem PC-Programmierungsforum?
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.