Dieselbe P4-Firmware läuft jetzt zusätzlich auf einem Waveshare ESP32-P4-Pico mit dem Waveshare 7inch DSI LCD (H) (1280x720). Auswahl über JC_PANEL_TYPE in config.h (neu: WS_PANEL_7H, ab jetzt Vorgabe); JC_PANEL_43 und JC_PANEL_70 bleiben unverändert. - board_bringup.c: DSI-Bus, DBI-Kommandokanal und DPI-Panel werden ohne Hersteller-Panel-Treiber direkt angelegt (PLL_F20M, 2 Lanes zu 1250 Mbit/s, 80 MHz DPI, Austastlücken 64/64/64, RGB888). Panel-Freigabe und Helligkeit über die Bridge auf I2C 0x45; Licht erst nach dem Start der DSI-Ausgabe. - lv_conf.h leitet LV_COLOR_DEPTH aus JC_PANEL_TYPE ab (24 Bit für das Waveshare-Panel, 16 Bit für die JC-Panels) und liest dafür config.h. display_hal.cpp sichert das mit static_assert ab. - Touch GT9271 (I2C 0x14) über den GT911-Treiber; Achsentausch und Begrenzung auf die Bildfläche im process_coordinates-Hook. - pins_config.h: Auflösung, DSI-Zeitbasis und Touch-Umrechnung als WS7_*-Werte. - README und Changelog ergänzt. Die UART-Pins zum S3 stehen für das Waveshare-Board noch auf den JC-Werten (GPIO33/31) und müssen nach dem Header-Aufdruck gesetzt werden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DxAvqVnrY6YSoGFrNGeRTi
97 lines
3.6 KiB
C
97 lines
3.6 KiB
C
#pragma once
|
|
|
|
#include "config.h" // liefert JC_PANEL_TYPE (C-sicher, keine Rueckabhaengigkeit)
|
|
|
|
#define EXAMPLE_LVGL_PORT_TASK_MAX_DELAY_MS 500 //range 2 to 2000
|
|
#define EXAMPLE_LVGL_PORT_TASK_MIN_DELAY_MS 5 //range 1 to 100
|
|
#define EXAMPLE_LVGL_PORT_TASK_PRIORITY 4
|
|
#define EXAMPLE_LVGL_PORT_TASK_STACK_SIZE_KB 32 //KB (erhoeht: komplexe UI, Listen-Rendering, JSON in Callbacks)
|
|
#define EXAMPLE_LVGL_PORT_TASK_CORE -1 //range -1 to 1
|
|
#define EXAMPLE_LVGL_PORT_TICK 2 //ragne 1 to 100
|
|
|
|
#define EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE 1
|
|
|
|
#ifdef EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE
|
|
// 2 = Triple-Buffer + LVGL Full-Refresh: zeichnet bei jeder Aenderung das komplette
|
|
// Bild, daher zeigen statische Flaechen (z.B. Tab-Leiste) nie alten Bufferinhalt.
|
|
// (Mode 3 = Direct-Mode flackert bei nie neu gezeichneten Bereichen.)
|
|
// Bei Rotation 90 nutzen beide Modi ohnehin 3 Framebuffer -> kein Mehrverbrauch.
|
|
#define EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE 2 //range 1 to 3
|
|
|
|
#if JC_PANEL_TYPE == WS_PANEL_7H
|
|
// Waveshare 7" (H): Panel ist nativ 1280x720 Querformat -> keine Rotation, kein PPA noetig.
|
|
#define EXAMPLE_LVGL_PORT_ROTATION_DEGREE_ 0 // 0,90,180,270
|
|
#define EXAMPLE_LVGL_PORT_PPA_ROTATION_ENABLE 0
|
|
#elif JC_PANEL_TYPE == JC_PANEL_70
|
|
// 7,0" JD9165: Panel ist nativ 1024x600 Querformat -> keine Rotation, kein PPA noetig.
|
|
#define EXAMPLE_LVGL_PORT_ROTATION_DEGREE_ 0 // 0,90,180,270
|
|
#define EXAMPLE_LVGL_PORT_PPA_ROTATION_ENABLE 0
|
|
#else
|
|
// 4,3" ST7701: Panel ist physisch 480x800 Hochformat.
|
|
#define EXAMPLE_LVGL_PORT_ROTATION_DEGREE_ 270 // 0,90,180,270 (270 = Querformat 800x480, um 180 Grad gedreht vs. 90)
|
|
#define EXAMPLE_LVGL_PORT_PPA_ROTATION_ENABLE 1
|
|
#endif
|
|
#endif
|
|
|
|
|
|
// LCD_H_RES/LCD_V_RES = NATIVE Panel-Aufloesung (vor der LVGL-Rotation).
|
|
#if JC_PANEL_TYPE == WS_PANEL_7H
|
|
|
|
#define LCD_H_RES 1280
|
|
#define LCD_V_RES 720
|
|
|
|
// Das Waveshare-Panel hat weder einen Reset-Pin noch eine PWM-Hintergrundbeleuchtung:
|
|
// Reset macht die Bridge selbst, die Helligkeit laeuft ueber deren I2C-Register.
|
|
#define LCD_RST (-1)
|
|
#define LCD_LED (-1)
|
|
|
|
// ---- MIPI-DSI-Parameter des Waveshare 7inch DSI LCD (H) -----------------------------
|
|
// Uebernommen aus dem funktionierenden Funktionstest-Sketch. Wichtig ist die Legacy-
|
|
// Referenztaktquelle PLL_F20M: nur damit liefert der ESP32-P4 Rev. 1.3 / ECO2 ein Bild.
|
|
// Das Panel akzeptiert nur RGB888 (24 Bit) - deshalb rechnet LVGL bei diesem Panel
|
|
// ebenfalls mit 24 Bit (lv_conf.h).
|
|
#define WS7_DSI_LANES 2
|
|
#define WS7_DSI_LANE_MBPS 1250
|
|
#define WS7_DPI_CLOCK_MHZ 80 // 1472 x 912 Gesamtraster -> ca. 60 Hz
|
|
#define WS7_HSYNC_BACK 64
|
|
#define WS7_HSYNC_PULSE 64
|
|
#define WS7_HSYNC_FRONT 64
|
|
#define WS7_VSYNC_BACK 64
|
|
#define WS7_VSYNC_PULSE 64
|
|
#define WS7_VSYNC_FRONT 64
|
|
|
|
// Bridge (Helligkeit/Panel-Freigabe) und Touch-Controller am selben I2C-Bus wie GT911.
|
|
#define WS7_BRIDGE_I2C_ADDR 0x45
|
|
#define WS7_TOUCH_I2C_ADDR 0x14 // GT9271
|
|
|
|
// Der GT9271 meldet im Hochformat: Roh-X 0..720, Roh-Y 0..1280. Fuer das Querformat
|
|
// werden die Achsen getauscht. Zeigt der Cursor spiegelverkehrt, hier die passende
|
|
// Achse auf 1 setzen (die Spiegelung geschieht VOR dem Tausch, auf den Rohwerten).
|
|
#define WS7_TOUCH_RAW_X_MAX 720
|
|
#define WS7_TOUCH_RAW_Y_MAX 1280
|
|
#define WS7_TOUCH_MIRROR_RAW_X 0
|
|
#define WS7_TOUCH_MIRROR_RAW_Y 0
|
|
|
|
#elif JC_PANEL_TYPE == JC_PANEL_70
|
|
|
|
#define LCD_H_RES 1024
|
|
#define LCD_V_RES 600
|
|
|
|
#define LCD_RST 27
|
|
#define LCD_LED 23
|
|
|
|
#else
|
|
|
|
#define LCD_H_RES 480
|
|
#define LCD_V_RES 800
|
|
|
|
#define LCD_RST 5
|
|
#define LCD_LED 23
|
|
|
|
#endif
|
|
|
|
#define TP_I2C_SDA 7
|
|
#define TP_I2C_SCL 8
|
|
#define TP_RST -1
|
|
#define TP_INT -1
|