Revert "Merge pull request 'fix(P4): Schwarzes Bild nach Reset am Waveshare-Panel (1.6.11)' (#39) from fix/schwarzes-bild-nach-reset into main"

This reverts commit 0a6c6ed869, reversing
changes made to edb1e333f0.
This commit is contained in:
raw-designs
2026-09-01 15:37:29 +02:00
parent 0a6c6ed869
commit f38ea3045b
5 changed files with 3 additions and 48 deletions
-13
View File
@@ -1,16 +1,3 @@
Version 1.6.11:
- Fehlerbehebung: Nach einem Reset des P4 blieb das Bild schwarz, während die
Hintergrundbeleuchtung brannte; erst ein erneutes Flashen half. Die Bridge des
Waveshare-Panels hat keine Reset-Leitung und hängt an Dauerstrom - ein Reset des P4
setzt sie also nicht zurück, ihre Register standen noch auf den Werten der vorigen
Sitzung. Der P4 baut seine DSI-Strecke aber komplett neu auf, und ein frischer DSI-Start
auf einer bereits laufenden Bridge liefert kein Bild. Beim Flashen wird die Versorgung
getrennt, deshalb war der Fehler dort nicht zu sehen.
- Der Start schaltet die Bridge jetzt zuerst definiert ab (Beleuchtung, dann Ausgabe,
dann Grundregister), wartet WS7_BRIDGE_RESET_MS und fährt sie erst danach hoch. Der
Wert steht in pins_config.h (Vorgabe 120 ms) und ist die erste Stellschraube, falls
nach einem Reset doch einmal ein schwarzes Bild auftaucht.
Version 1.6.10:
- WS7_PARTIAL_REFRESH ist jetzt auch im Auslieferungsstand 1. Am Gerät geprüft: kein
Flackern, und der Gewinn ist der größte der drei Tempo-Maßnahmen - vor allem während
-5
View File
@@ -67,11 +67,6 @@ Das Panel hängt hinter einer Waveshare-Bridge und braucht **keinen** Hersteller
- Reihenfolge: Bridge-Grundinitialisierung (`C0`/`C2`/`AC`) → DSI → DCS `MADCTL`/`Sleep Out`/
`Display On` → DPI-Start → **erst dann** Hintergrundbeleuchtung. Wird das Licht früher
eingeschaltet, blitzt beim Start Bildrauschen auf.
- **Nach einem Reset:** Die Bridge hat keine Reset-Leitung und hängt an Dauerstrom — ein
Reset des P4 setzt sie **nicht** zurück. Der Bringup schaltet sie deshalb zuerst
definiert ab, wartet `WS7_BRIDGE_RESET_MS` und fährt sie dann neu hoch. Ohne das trifft
ein frischer DSI-Start auf eine noch laufende Bridge: Bild schwarz, Beleuchtung an.
Nach dem Flashen fällt das nicht auf, weil dabei die Versorgung getrennt wird.
- **Einbaulage:** `WS7_ROTATE_180` in [`pins_config.h`](pins_config.h) dreht Bild **und**
Touch um 180°, falls das Panel auf dem Kopf montiert wird. Vorgabe ist **0** — in der
jetzigen Einbaulage steht das Bild richtig herum. Die Drehung macht der
+2 -23
View File
@@ -110,16 +110,8 @@ static void ws7_bridge_write(uint8_t reg, uint8_t value)
i2c_master_transmit(s_bridge_handle, buf, sizeof(buf), 100);
}
// Bridge in einen definierten Grundzustand bringen und neu initialisieren.
//
// WICHTIG - der Grund fuer das Abschalten am Anfang: Die Bridge hat keine Reset-Leitung
// und haengt an Dauerstrom. Ein Reset des P4 setzt sie also NICHT zurueck; ihre Register
// stehen noch so, wie die vorige Sitzung sie hinterlassen hat. Der P4 baut seine
// DSI-Strecke aber komplett neu auf. Trifft ein frischer DSI-Start auf eine bereits
// laufende Bridge, bleibt das Bild schwarz, waehrend die Hintergrundbeleuchtung brennt.
// Nach dem Flashen faellt das nicht auf, weil dabei die Versorgung getrennt wird.
//
// Deshalb erst ausschalten (Beleuchtung, dann Bridge), kurz warten, dann normal hochfahren.
// Bridge am I2C-Bus anmelden und Grundinitialisierung schreiben. Muss VOR dem
// DSI-Bringup laufen; die Hintergrundbeleuchtung bleibt dabei noch aus.
static void ws7_bridge_pre_init(void)
{
i2c_device_config_t dev_cfg = {
@@ -131,22 +123,9 @@ static void ws7_bridge_pre_init(void)
s_bridge_handle = NULL;
return;
}
// --- definierter Aus-Zustand (umgekehrte Reihenfolge zum Einschalten) ---
ws7_bridge_write(0xAB, 0xFF); // Helligkeit 0
ws7_bridge_write(0xAA, 0x01); // uebernehmen
ws7_bridge_write(0xAD, 0x00); // Bridge-Ausgabe aus
vTaskDelay(pdMS_TO_TICKS(20));
ws7_bridge_write(0xAC, 0x00);
ws7_bridge_write(0xC2, 0x00);
ws7_bridge_write(0xC0, 0x00);
vTaskDelay(pdMS_TO_TICKS(WS7_BRIDGE_RESET_MS));
// --- Grundinitialisierung wie im Linux-Treiber ---
ws7_bridge_write(0xC0, 0x01);
ws7_bridge_write(0xC2, 0x01);
ws7_bridge_write(0xAC, 0x01);
vTaskDelay(pdMS_TO_TICKS(20));
}
void jc_backlight_init(void)
+1 -1
View File
@@ -126,7 +126,7 @@
// -------------------------------------------------------------------------------------
// Firmware
// -------------------------------------------------------------------------------------
#define DISPLAY_FW_VERSION "1.6.11" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
#define DISPLAY_FW_VERSION "1.6.10" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
// -------------------------------------------------------------------------------------
// Protokoll
-6
View File
@@ -114,12 +114,6 @@
// nicht bekannt; die 180-Grad-Drehung macht deshalb der PPA (WS7_ROTATE_180).
#define WS7_MADCTL 0x00
// So lange bleibt die Bridge beim Start stromlos geschaltet, bevor sie neu
// initialisiert wird. Sie hat keine Reset-Leitung und ueberlebt einen Reset des P4;
// ohne diese Pause trifft ein frischer DSI-Start auf eine noch laufende Bridge und das
// Bild bleibt schwarz. Bei schwarzem Bild nach Reset zuerst diesen Wert erhoehen.
#define WS7_BRIDGE_RESET_MS 120
// 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.