Files
Dual-PID/P4_Display_Firmware/pins_config.h
T
raw-designsandClaude Opus 5 9d9591c26e fix(P4): UART auf GPIO20/21, Touch oben/unten spiegeln (1.6.3)
Nach dem ersten Betrieb am Waveshare ESP32-P4-Pico:

- UART zur Hauptplatine auf TX = GPIO20 / RX = GPIO21 (vorher GPIO17/18).
  Die JC-Panels bleiben bei GPIO33/GPIO31.
- Das Bild steht in der tatsächlichen Einbaulage richtig herum, deshalb ist
  WS7_ROTATE_180 wieder 0. Der Schalter bleibt für den Fall einer anderen
  Montage erhalten.
- Der Touch war oben/unten spiegelverkehrt: Der Digitizer sitzt gegenüber dem
  Bild um die Hochachse gedreht. WS7_TOUCH_MIRROR_RAW_X steht daher auf 1.
  Bild- und Touch-Ausrichtung sind zwei getrennte Schalter, weil sie an diesem
  Panel nicht zusammenfallen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018QoLDQeUh1dCQz7yYZVb4Y
2026-09-01 12:34:27 +02:00

120 lines
4.8 KiB
C

#pragma once
#include "config.h" // liefert JC_PANEL_TYPE (C-sicher, keine Rueckabhaengigkeit)
// -------------------------------------------------------------------------------------
// Waveshare 7" (H): Einbaulage. Haengt das Panel auf dem Kopf (Flachbandkabel oben statt
// unten), dreht 1 das Bild UND den Touch um 180 Grad. In der aktuellen Einbaulage steht
// das Bild richtig herum -> 0. Der Touch braucht davon unabhaengig eine Spiegelung,
// siehe WS7_TOUCH_MIRROR_RAW_X weiter unten.
// -------------------------------------------------------------------------------------
#define WS7_ROTATE_180 0
#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. Bei Einbau auf dem Kopf wird um
// 180 Grad gedreht - das erledigt der PPA-Grafikbeschleuniger, der auch RGB888 kann
// (die Software-Rotation des Ports rechnet nur in RGB565).
#if WS7_ROTATE_180
#define EXAMPLE_LVGL_PORT_ROTATION_DEGREE_ 180 // 0,90,180,270
#define EXAMPLE_LVGL_PORT_PPA_ROTATION_ENABLE 1
#else
#define EXAMPLE_LVGL_PORT_ROTATION_DEGREE_ 0
#define EXAMPLE_LVGL_PORT_PPA_ROTATION_ENABLE 0
#endif
#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
// DCS-Register MADCTL beim Panelstart. Ob die Bridge dieses Panels es auswertet, ist
// nicht bekannt; die 180-Grad-Drehung macht deshalb der PPA (WS7_ROTATE_180).
#define WS7_MADCTL 0x00
// Der GT9271 meldet im Hochformat: Roh-X 0..720, Roh-Y 0..1280. Fuer das Querformat
// werden die Achsen getauscht. Die Spiegelung geschieht VOR dem Tausch, also noch auf den
// Rohwerten: Roh-X wird zur Bildschirmhoehe, Roh-Y zur Bildschirmbreite.
// WS7_TOUCH_MIRROR_RAW_X = 1 -> dreht OBEN/UNTEN um
// WS7_TOUCH_MIRROR_RAW_Y = 1 -> dreht LINKS/RECHTS um
// Der Digitizer dieses Panels sitzt gegenueber dem Bild um die Hochachse gedreht, deshalb
// ist oben/unten dauerhaft aktiv.
#define WS7_TOUCH_RAW_X_MAX 720
#define WS7_TOUCH_RAW_Y_MAX 1280
#define WS7_TOUCH_MIRROR_RAW_X 1
#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