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