Просмотр исходного кода

F52: BUSY is active-HIGH on hardware (vendor says LOW)

Bench F52 never refreshed with busy_level=LOW: every busy-wait returned in
~8ms, so the engine wrote + triggered before the charge pump was up and the
panel ignored it (old content stayed). Real BUSY is active HIGH - not
derivable from the command capture. Flip busy_active_level to true.
ZiB 3 недель назад
Родитель
Сommit
125b3ac85c
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      components/gxepd2/panel_213c_gdey0213f52.h

+ 6 - 1
components/gxepd2/panel_213c_gdey0213f52.h

@@ -44,7 +44,12 @@ inline const EpdCommand PANEL_213C_GDEY0213F52_REFRESH[] = {
 inline const EpdPanelDescriptor PANEL_213C_GDEY0213F52 = {
     .width = 128,
     .height = 250,
-    .busy_active_level = false,  // GxEPD2_EPD(..., /*busy_level=*/LOW, ...)
+    // Vendor driver passes busy_level=LOW, but on the bench F52 that made every
+    // busy-wait (power-on, refresh) return in ~8ms and the panel never refreshed
+    // (charge pump not up before the plane write + 0x12). Real BUSY is active
+    // HIGH here - a hardware fact the command capture can't see. Set HIGH so the
+    // engine actually waits out the ~16s refresh.
+    .busy_active_level = true,
     .busy_timeout_ms = 30000,    // vendor full_refresh_time ~16000ms; err long
     .init_sequence = PANEL_213C_GDEY0213F52_INIT,
     .init_sequence_len = sizeof(PANEL_213C_GDEY0213F52_INIT) / sizeof(PANEL_213C_GDEY0213F52_INIT[0]),