From e8fdc60fea30171da5a9b27ea125e5bc2496b5cb Mon Sep 17 00:00:00 2001 From: raw-designs Date: Tue, 1 Sep 2026 13:13:28 +0200 Subject: [PATCH] =?UTF-8?q?fix(P4):=20Men=C3=BC-Vorhang=20wieder=20=C3=B6f?= =?UTF-8?q?fenbar,=20RGB888=20bleibt=20Vorgabe=20(1.6.5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zwei der drei Tempo-Maßnahmen aus 1.6.4 haben sich am Gerät als untauglich erwiesen und stehen wieder auf ihrem alten Wert: - WS7_COLOR_BITS = 24: Die Bridge dieses Panels nimmt kein RGB565 an. - WS7_PARTIAL_REFRESH = 0: Der Menü-Vorhang ist halbtransparent und wird in den gerade aktiven Bildpuffer eingemischt. Die nächste Zustandsmeldung der S3 zeichnet in den zweiten Puffer, der ihn nie bekommen hat - der Vorhang war damit sofort wieder weg und der Knopf schien wirkungslos. Nutzbar wäre der Modus erst, wenn der LVGL-Port die geänderten Bereiche zwischen beiden Puffern abgleicht. Beide bleiben als Schalter erhalten, mit Notiz woran sie gescheitert sind. WS7_PARALLEL_RENDER bleibt eingeschaltet - von den drei Maßnahmen trägt nur diese. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018QoLDQeUh1dCQz7yYZVb4Y --- P4_Display_Firmware/Changelog.txt | 14 ++++++++++++++ P4_Display_Firmware/README.md | 16 ++++++++++------ P4_Display_Firmware/config.h | 2 +- P4_Display_Firmware/pins_config.h | 24 ++++++++++++++---------- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/P4_Display_Firmware/Changelog.txt b/P4_Display_Firmware/Changelog.txt index 4712a7d..2c9f50b 100644 --- a/P4_Display_Firmware/Changelog.txt +++ b/P4_Display_Firmware/Changelog.txt @@ -1,3 +1,17 @@ +Version 1.6.5: +- Zwei der drei Tempo-Maßnahmen aus 1.6.4 haben sich am Gerät als untauglich erwiesen und + stehen wieder auf ihrem alten Wert. Sie bleiben als Schalter erhalten, mit Notiz, woran + sie gescheitert sind. + * WS7_COLOR_BITS wieder 24: Die Bridge dieses Panels nimmt kein RGB565 an, mit 16 Bit + kommt kein brauchbares Bild. + * WS7_PARTIAL_REFRESH wieder 0: Der Menü-Vorhang ließ sich nicht mehr öffnen. Er ist + halbtransparent und wird deshalb in den gerade aktiven Bildpuffer eingemischt; die + nächste Zustandsmeldung der S3 zeichnet aber in den zweiten Puffer, der ihn nie + bekommen hat - der Vorhang war also sofort wieder weg. Nutzbar wäre der Modus erst, + wenn der LVGL-Port die geänderten Bereiche zwischen beiden Puffern abgleicht. +- WS7_PARALLEL_RENDER bleibt eingeschaltet: LVGL zeichnet weiterhin mit zwei Threads auf + beiden Prozessorkernen. Von den drei Maßnahmen trägt nur diese. + Version 1.6.4: - Waveshare 7" (H): Drei Maßnahmen gegen die träge Bedienung am großen Panel. 1280x720 sind 2,4-mal so viele Pixel wie beim 4,3-Zöller, und bis 1.6.3 wurde bei jeder Änderung diff --git a/P4_Display_Firmware/README.md b/P4_Display_Firmware/README.md index 8d4f451..916d016 100644 --- a/P4_Display_Firmware/README.md +++ b/P4_Display_Firmware/README.md @@ -44,13 +44,13 @@ Vendor-Pakete: 4,3" im Ordner `JC4880P443C_I_W/`, 7,0" im Repo-Ordner | Haupt-MCU (UI) | ESP32-P4 | ESP32-P4 | ESP32-P4 (32 MB PSRAM, 32 MB Flash) | | WLAN/BT (hier ungenutzt) | ESP32-C6 | ESP32-C6 | — (kein Funkmodul) | | Display | ST7701, 480×800 IPS, MIPI-DSI | JD9165, 1024×600 IPS, MIPI-DSI | 1280×720 IPS, MIPI-DSI 2 Lanes über Waveshare-Bridge | -| Farbformat | RGB565 | RGB565 | RGB565 oder RGB888, `WS7_COLOR_BITS` | +| Farbformat | RGB565 | RGB565 | **RGB888** — die Bridge nimmt kein RGB565 (geprüft) | | LVGL-Ausrichtung | Rotation **270°** (PPA) → 800×480 | **keine** Rotation, nativ 1024×600 | **keine** Rotation, nativ 1280×720 | | Touch | GT911, I²C SDA=GPIO7 / SCL=GPIO8 | GT911, I²C SDA=GPIO7 / SCL=GPIO8 | **GT9271** (I²C-Adresse **0x14**), SDA=GPIO7 / SCL=GPIO8 | | Touch-Rohkoordinaten | 480×800 (= Panelraster) | **800×480** → wird auf 1024×600 skaliert | **720×1280** (Hochformat) → X/Y werden getauscht | | LCD-Reset | GPIO5 | **GPIO27** | kein Reset-Pin (macht die Bridge) | | Backlight | GPIO23 (LEDC-PWM) | GPIO23 (LEDC-PWM) | **Bridge-Register** auf I²C **0x45** (`AD`/`AB`/`AA`) | -| Framebuffer | 3 × 750 KB ≈ 2,3 MB PSRAM | 3 × 1,2 MB ≈ 3,6 MB PSRAM | 2 × 1,8 MB ≈ 3,7 MB PSRAM (RGB565, Teil-Neuzeichnen) | +| Framebuffer | 3 × 750 KB ≈ 2,3 MB PSRAM | 3 × 1,2 MB ≈ 3,6 MB PSRAM | 3 × 2,8 MB ≈ 8,3 MB PSRAM | | Freie Expansion-IO | Stiftleiste **JP1**: GPIO 52/51/50/49/35/34/33/32/31/30/29/28 | FPC 1,0 mm 16-pol. **FPC4**: GPIO 34/33/32/31/30/29/28 · **FPC3**: 48/47/46/45/5/4/3/2 | 40-poliger Header im Raspberry-Pi-Pico-Format; belegt sind I²C (7/8), TF-Karte (9/10/11/12/13/53) und Debug-UART0 (37/38) | | UART zur Hauptplatine | TX GPIO33 / RX GPIO31 | TX GPIO33 / RX GPIO31 | **TX GPIO20 / RX GPIO21** | @@ -81,11 +81,15 @@ Das Panel hängt hinter einer Waveshare-Bridge und braucht **keinen** Hersteller [`pins_config.h`](pins_config.h) halten die Bedienung flüssig; jeder ist einzeln zurückstellbar, falls er Ärger macht: -| Schalter | Vorgabe | Wirkung | Wenn es klemmt | +| Schalter | Vorgabe | Wirkung | Stand am Gerät | |---|---|---|---| -| `WS7_COLOR_BITS` | `16` | RGB565 halbiert die Datenmenge je Bild gegenüber RGB888. Sichtbar nur in den dunklen Verläufen der Rundanzeige. | Bild falschfarbig oder dunkel → die Bridge will kein RGB565, auf `24` stellen | -| `WS7_PARTIAL_REFRESH` | `1` | Nur geänderte Bildbereiche neu zeichnen statt jedes Mal des ganzen Bildes (LVGL-Direct-Mode, zwei Puffer). Größter Gewinn. | Flackern in Flächen, die selten neu gezeichnet werden → auf `0` | -| `WS7_PARALLEL_RENDER` | `1` | LVGL zeichnet mit zwei Threads auf beiden Prozessorkernen. | P4 startet nicht mehr (zwei zusätzliche Stacks im knappen internen RAM) → zuerst hier auf `0` | +| `WS7_COLOR_BITS` | `24` | `16` (RGB565) würde die Datenmenge je Bild halbieren. | **Geht an diesem Panel nicht** — die Bridge nimmt nur RGB888 | +| `WS7_PARTIAL_REFRESH` | `0` | `1` zeichnet nur geänderte Bereiche neu (LVGL-Direct-Mode, zwei wechselnde Puffer). Wäre der größte Gewinn. | **Geht so nicht** — der halbtransparente Menü-Vorhang landet nur in einem der beiden Puffer und ist sofort wieder weg | +| `WS7_PARALLEL_RENDER` | `1` | LVGL zeichnet mit zwei Threads auf beiden Prozessorkernen. | Aktiv | + +> Damit `WS7_PARTIAL_REFRESH` nutzbar würde, müsste der LVGL-Port die geänderten Bereiche +> zwischen beiden Puffern abgleichen. Die Maschinerie dafür liegt in `lvgl_port_v9.c`, +> wird aber nur bei gedrehter Ausgabe übersetzt. Die Farbtiefe muss für Sketch **und** LVGL-Bibliothek dieselbe sein; `lv_conf.h` liest `WS7_COLOR_BITS` deshalb direkt aus `pins_config.h`. diff --git a/P4_Display_Firmware/config.h b/P4_Display_Firmware/config.h index a7e168f..e8d9ef6 100644 --- a/P4_Display_Firmware/config.h +++ b/P4_Display_Firmware/config.h @@ -126,7 +126,7 @@ // ------------------------------------------------------------------------------------- // Firmware // ------------------------------------------------------------------------------------- -#define DISPLAY_FW_VERSION "1.6.4" // Firmware-Stand der P4-Display-Steuerung (Info-Seite) +#define DISPLAY_FW_VERSION "1.6.5" // Firmware-Stand der P4-Display-Steuerung (Info-Seite) // ------------------------------------------------------------------------------------- // Protokoll diff --git a/P4_Display_Firmware/pins_config.h b/P4_Display_Firmware/pins_config.h index 161fc05..9f3dcc8 100644 --- a/P4_Display_Firmware/pins_config.h +++ b/P4_Display_Firmware/pins_config.h @@ -16,20 +16,24 @@ // 1280x720 ist gegenueber den JC-Panels ein Vielfaches an Pixeln. Die drei Schalter // senken die Last und lassen sich einzeln zurueckstellen, falls einer Aerger macht. // -// WS7_COLOR_BITS 16 = RGB565: halbe Datenmenge je Bild, dafuer 65.000 statt -// 16,7 Mio. Farben (sichtbar nur in den dunklen Verlaeufen der -// Rundanzeige). 24 = RGB888 wie bis 1.6.3. -// ACHTUNG: Nimmt die Bridge des Panels kein RGB565 an, bleibt -// das Bild falschfarbig oder aus -> wieder auf 24 stellen. -// WS7_PARTIAL_REFRESH 1 = nur geaenderte Bildbereiche neu zeichnen statt jedes Mal des -// gesamten Bildes. Groesster Tempogewinn. Am 4,3-Zoll-Panel -// hatte dieser Modus geflackert; tritt das hier auch auf, auf 0. +// WS7_COLOR_BITS 24 = RGB888. GEPRUEFT: Die Bridge dieses Panels nimmt KEIN RGB565 +// an - mit 16 kommt kein brauchbares Bild. Einstellbar bleibt es +// nur, weil andere Waveshare-Panels an derselben Firmware +// haengen koennten. +// WS7_PARTIAL_REFRESH 0 = Vollbild neu zeichnen. GEPRUEFT: Mit 1 (nur geaenderte +// Bereiche, zwei wechselnde Bildpuffer) laesst sich der +// Menue-Vorhang nicht mehr oeffnen. Er ist halbtransparent und +// wird in den gerade aktiven Puffer eingemischt; die naechste +// Zustandsmeldung der S3 zeichnet in den anderen, der ihn nie +// bekommen hat. Am 4,3-Zoll-Panel hatte derselbe Modus +// geflackert. Nutzbar erst, wenn der LVGL-Port die geaenderten +// Bereiche zwischen beiden Puffern abgleicht. // WS7_PARALLEL_RENDER 1 = LVGL zeichnet mit zwei Threads auf beiden Prozessorkernen. // Kostet zwei zusaetzliche Task-Stacks im knappen internen RAM; // startet der P4 nicht mehr, hier zuerst auf 0 stellen. // ------------------------------------------------------------------------------------- -#define WS7_COLOR_BITS 16 -#define WS7_PARTIAL_REFRESH 1 +#define WS7_COLOR_BITS 24 +#define WS7_PARTIAL_REFRESH 0 #define WS7_PARALLEL_RENDER 1 #define EXAMPLE_LVGL_PORT_TASK_MAX_DELAY_MS 500 //range 2 to 2000