Jelajahi Sumber

Fix GDEQ0583T31 window xe byte: 0x8F -> 0x87 (647, not 655)

Off-by-8 window width shifted each plane row by a byte relative to the
next - hardware showed this as diagonal smear/noise instead of a clean
image rather than as a wrong-but-coherent picture, so it wasn't obvious
from the trace alone that anything was wrong until it hit the panel.
ZiB 1 bulan lalu
induk
melakukan
081fa8f4f4
1 mengubah file dengan 7 tambahan dan 3 penghapusan
  1. 7 3
      components/gxepd2/panel_583_gdeq0583t31.h

+ 7 - 3
components/gxepd2/panel_583_gdeq0583t31.h

@@ -43,11 +43,15 @@ inline const EpdCommand PANEL_583_GDEQ0583T31_INIT[] = {
     {0x04, nullptr, 0, /*delay_before_ms=*/0, /*delay_after_ms=*/0, /*wait_busy_after=*/true},  // power on
 };
 
-// _setPartialRamArea(0, 0, 648, 480): xe = (0+648-1)|0x0007 = 655 (byte-
-// boundary inclusive), ye = 479; x masked to byte boundary is 0 either way.
+// _setPartialRamArea(0, 0, 648, 480): xe = (0+648-1)|0x0007 = 647 (already
+// byte-boundary inclusive - 647 % 8 == 7), ye = 479; x masked to byte
+// boundary is 0 either way. First pass wrote xe%256 as 0x8F (655) instead
+// of 0x87 (647) - an 8-column-too-wide window that shifted each row's data
+// by a byte relative to the next, hardware-confirmed as diagonal smear/
+// noise rather than a clean image (2026-09-19).
 inline const uint8_t PANEL_583_GDEQ0583T31_WINDOW_REGION[] = {
     0x00, 0x00,  // x/256, x%256           = 0, 0
-    0x02, 0x8F,  // xe/256, xe%256         = 655
+    0x02, 0x87,  // xe/256, xe%256         = 647
     0x00, 0x00,  // y/256, y%256           = 0, 0
     0x01, 0xDF,  // ye/256, ye%256         = 479
     0x01,