Dieselbe Display-Firmware bedient jetzt wahlweise das bisherige 4,3-Zoll-Panel JC4880P443C-I-W (ST7701, 480x800) oder das neue 7-Zoll-Panel JC1060P470C-I-W (JD9165, 1024x600). Umgeschaltet wird über JC_PANEL_TYPE in config.h (JC_PANEL_43 / JC_PANEL_70) oder per Compiler-Flag -DJC_PANEL_TYPE=70. Vorgabe bleibt das 4,3-Zoll-Panel; dessen Verhalten ändert sich nicht. - src/lcd/esp_lcd_jd9165.c/.h aus dem Hersteller-Paket übernommen; board_bringup.c legt je nach Panel DSI-Bus, DPI-Zeitbasis und Herstellertreiber an. - pins_config.h liefert Auflösung, LCD-Reset (4,3": GPIO5, 7,0": GPIO27) und Ausrichtung panelabhängig. Das 7-Zoll-Panel ist nativ Querformat, deshalb entfallen dort die 270-Grad-Rotation und die PPA-Beschleunigung. - lvgl_port_v9.h bezieht LVGL_PORT_H/V_RES aus pins_config.h statt fest 480/800. - Der GT911 des 7-Zöllers meldet Rohkoordinaten im Raster 800x480 statt 1024x600. Die Umrechnung hängt am process_coordinates-Hook von esp_lcd_touch, damit die Herstellerdatei esp_lcd_touch_gt911.c unverändert bleibt. - ui.cpp rechnet nicht mehr mit fest verdrahteten 480 Pixeln Höhe, sondern mit DISP_VER_RES. Layout und Schriften bleiben sonst unverändert. - Hersteller-Paket des 7-Zöllers unter JC_Display_Firmware_7zoll/ abgelegt; Werkzeuge, Archive und mitgelieferte Fremdbibliotheken per .gitignore ausgeschlossen (587 MB im Original, 21 MB im Repo). Kompiliertest ESP32-P4, beide Varianten: 4,3": 1.173.768 B Flash (37 %), 322.880 B RAM (98 %) 7,0": 1.138.752 B Flash (36 %), 322.600 B RAM (98 %) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
40 lines
1.8 KiB
C
40 lines
1.8 KiB
C
// =====================================================================================
|
|
// display_hal.h - Board-/Panel-/Touch-Anbindung (ST7701 bzw. JD9165 + GT911) + LVGL-Glue
|
|
// =====================================================================================
|
|
// Einziger board-spezifischer Teil. Baut auf der HERSTELLER-LVGL-PORTIERUNG des
|
|
// JC4880P443C-I-W auf (1-Demo/arduino_examples/lvgl_v9_sw_rotation):
|
|
// - MIPI-DSI ST7701 (480x800) bzw. JD9165 (1024x600) - Auswahl ueber JC_PANEL_TYPE
|
|
// - GT911-Touch (I2C SDA=7/SCL=8), Backlight GPIO23
|
|
// - LVGL laeuft in einem EIGENEN FreeRTOS-Task -> UI-Zugriffe von aussen muessen
|
|
// mit hal_lock()/hal_unlock() (= lvgl_port_lock/unlock) geschuetzt werden.
|
|
//
|
|
// Schalter JC_USE_REAL_PANEL:
|
|
// 0 = Stub-Modus (kompiliert OHNE Hersteller-BSP; eigenes minimal-LVGL, rendert ins
|
|
// Leere). Zum Testen von Protokoll/UART/Logik am Schreibtisch.
|
|
// 1 = echte Hardware: erwartet die Hersteller-BSP-Dateien IM SKETCH-ORDNER:
|
|
// pins_config.h, lvgl_port_v9.h/.c, src/lcd/*, src/touch/*
|
|
// (aus arduino_examples/lvgl_v9_sw_rotation kopieren). Siehe README.md.
|
|
// =====================================================================================
|
|
|
|
#pragma once
|
|
|
|
#include "protocol_client.h"
|
|
|
|
#ifndef JC_USE_REAL_PANEL
|
|
#define JC_USE_REAL_PANEL 0
|
|
#endif
|
|
|
|
// Initialisiert LVGL + Panel + Touch und baut das Dashboard auf (ui_init unter Lock).
|
|
void hal_init(ProtocolClient* client);
|
|
|
|
// In loop() aufrufen. Realer Panel-Modus: leer (LVGL hat eigenen Task).
|
|
// Stub-Modus: ruft lv_timer_handler().
|
|
void hal_loop();
|
|
|
|
// LVGL-Mutex (im realen Modus zwingend vor jedem UI-Zugriff aus fremden Tasks).
|
|
void hal_lock();
|
|
void hal_unlock();
|
|
|
|
// Display-Hintergrundbeleuchtung setzen (0..100 %). Stub-Modus: ohne Wirkung.
|
|
void hal_backlight(int percent);
|