From c58b901f2627fd5eb1ad855bc64ad0f3a5beeb82 Mon Sep 17 00:00:00 2001 From: raw-designs Date: Tue, 1 Sep 2026 16:51:04 +0200 Subject: [PATCH] =?UTF-8?q?diag(P4):=20Schwarzes=20Bild=20eingrenzen=20-?= =?UTF-8?q?=20Pr=C3=BCfbild=20und=20l=C3=BCckenlose=20Meldungen=20(1.6.15)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kaltstart, kein einziger Fehler im Log, alle I2C-Bausteine da - und trotzdem keine Anzeige. Zwei Lücken in der Diagnose: - Die DCS-Weckbefehle (MADCTL, Sleep Out, Display On) liefen ungeprüft durch. Jetzt über BSP_STEP gemeldet. - Nach dem Panel-Start endete die Ausgabe. "Bringup fertig" vor und "LVGL laeuft" nach lvgl_port_init() trennen jetzt ein Hängenbleiben in LVGL von einem fehlenden Bild. Neuer Schalter WS7_TEST_PATTERN nutzt esp_lcd_dpi_panel_set_pattern() für Farbbalken aus dem DSI-Baustein, ohne Framebuffer und ohne LVGL - wie im funktionierenden Werks-Testsketch. Erscheinen sie, arbeitet die Kette bis zum Panel und der Fehler liegt weiter oben. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018QoLDQeUh1dCQz7yYZVb4Y --- P4_Display_Firmware/Changelog.txt | 13 +++++++++++++ P4_Display_Firmware/board_bringup.c | 18 +++++++++++++++--- P4_Display_Firmware/pins_config.h | 5 +++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/P4_Display_Firmware/Changelog.txt b/P4_Display_Firmware/Changelog.txt index cdc0eba..a562c99 100644 --- a/P4_Display_Firmware/Changelog.txt +++ b/P4_Display_Firmware/Changelog.txt @@ -1,3 +1,16 @@ +Version 1.6.15: +- Diagnose fuer das schwarze Bild, das der Log bisher nicht erklaeren konnte: Alle Schritte + liefen fehlerfrei durch, trotzdem blieb die Anzeige leer. +- Die drei Weckbefehle an das Panel (MADCTL, Sleep Out, Display On) liefen bislang + ungeprueft durch und sind jetzt in die Fehlerausgabe einbezogen. +- Neuer Schalter WS7_TEST_PATTERN in pins_config.h: zeigt statt der Oberflaeche + Prueffarbbalken an. Sie entstehen im DSI-Baustein selbst und benutzen weder Bildspeicher + noch LVGL. Damit laesst sich in einem Durchgang trennen, ob die Anzeigekette bis zum + Panel arbeitet oder ob der Fehler weiter oben liegt. +- Das Ende des Hochlaufs wird gemeldet ("Bringup fertig" / "LVGL laeuft"). Bisher endete + die Ausgabe nach dem Panel-Start, und ein Haengenbleiben in LVGL war von einem + fehlenden Bild nicht zu unterscheiden. + Version 1.6.14: - Der Touch-Controller wird jetzt erst angesprochen, nachdem die Bridge freigegeben und die Hintergrundbeleuchtung eingeschaltet ist. Der GT9271 haengt an derselben Versorgung und diff --git a/P4_Display_Firmware/board_bringup.c b/P4_Display_Firmware/board_bringup.c index 598793b..7168ef6 100644 --- a/P4_Display_Firmware/board_bringup.c +++ b/P4_Display_Firmware/board_bringup.c @@ -486,13 +486,23 @@ bool jc_board_bringup(void) { uint8_t zero = 0x00; uint8_t madctl = WS7_MADCTL; - esp_lcd_panel_io_tx_param(io, 0x36, &madctl, 1); // MADCTL - esp_lcd_panel_io_tx_param(io, 0x11, &zero, 1); // Sleep Out + BSP_STEP(esp_lcd_panel_io_tx_param(io, 0x36, &madctl, 1), "Panel-Befehl MADCTL"); + BSP_STEP(esp_lcd_panel_io_tx_param(io, 0x11, &zero, 1), "Panel-Befehl Sleep Out"); vTaskDelay(pdMS_TO_TICKS(120)); - esp_lcd_panel_io_tx_param(io, 0x29, &zero, 1); // Display On + BSP_STEP(esp_lcd_panel_io_tx_param(io, 0x29, &zero, 1), "Panel-Befehl Display On"); vTaskDelay(pdMS_TO_TICKS(20)); } BSP_STEP(esp_lcd_panel_init(disp_panel), "DPI-Videoausgabe starten"); +#if WS7_TEST_PATTERN + // Prueffarbbalken: Sie entstehen im DSI-Baustein selbst und benutzen weder den + // Bildspeicher noch LVGL. Erscheinen sie, arbeitet die gesamte Anzeigekette bis zum + // Panel korrekt und der Fehler liegt weiter oben (Bildspeicher, LVGL, Oberflaeche). + // Bleibt das Bild schwarz, liegt es an DSI, Zeitbasis oder Panel. + BSP_STEP(esp_lcd_dpi_panel_set_pattern(disp_panel, MIPI_DSI_PATTERN_BAR_VERTICAL), + "Prueffarbbalken"); + esp_rom_printf("[Panel] Pruefbild aktiv - erwartet werden senkrechte Farbbalken.\n"); +#endif + #elif JC_PANEL_TYPE == JC_PANEL_70 // ---------------- 7,0" JD9165 (1024x600) ---------------- esp_lcd_dsi_bus_config_t bus_config = JD9165_PANEL_BUS_DSI_2CH_CONFIG(); @@ -638,7 +648,9 @@ bool jc_board_bringup(void) lvgl_port_interface_t interface = (dpi_config.flags.use_dma2d) ? LVGL_PORT_INTERFACE_MIPI_DSI_DMA : LVGL_PORT_INTERFACE_MIPI_DSI_NO_DMA; + esp_rom_printf("[Panel] Bringup fertig - LVGL wird gestartet\n"); lvgl_port_init(disp_panel, tp_handle, interface); + esp_rom_printf("[Panel] LVGL laeuft\n"); return true; } diff --git a/P4_Display_Firmware/pins_config.h b/P4_Display_Firmware/pins_config.h index 78f3100..968e843 100644 --- a/P4_Display_Firmware/pins_config.h +++ b/P4_Display_Firmware/pins_config.h @@ -145,6 +145,11 @@ // auf I2C antwortet. Meldet sich 0x14 beim Start nicht, diesen Wert erhoehen. #define WS7_TOUCH_POWER_MS 120 +// Prueffarbbalken statt Oberflaeche anzeigen. Sie entstehen im DSI-Baustein selbst und +// benutzen weder Bildspeicher noch LVGL. Damit laesst sich trennen, ob die Anzeigekette +// bis zum Panel arbeitet (Balken sichtbar) oder nicht (schwarz). Nur zur Fehlersuche. +#define WS7_TEST_PATTERN 0 + #elif JC_PANEL_TYPE == JC_PANEL_70 #define LCD_H_RES 1024