Skip to content

ESP-026: land the ESP-IDF display spike (verified on glass) - #138

Merged
Skeyelab merged 10 commits into
masterfrom
feat/esp-026-display-land
Jul 17, 2026
Merged

Skeyelab merged 10 commits into
masterfrom
feat/esp-026-display-land

Conversation

@Skeyelab

Copy link
Copy Markdown
Member

Lands spike/esp-026-display-esp-idf (rebased onto master, clean). LovyanGFX + AXS5106L
on ESP-IDF, verified on the Waveshare S3-Touch ("ESP-IDF DISPLAY OK"). Clears ESP-026's
stated gate: the display — the migration's only real hardware unknown — is proven on ESP-IDF.

  • ks_display.{h,cpp}, CONFIG_KS_TOUCH_DISPLAY (S3-only), LovyanGFX pinned git dep,
    sdkconfig.defaults.esp32s3, one guarded call in ks_main.c.
  • P4 build untouched; Arduino KitchenSyncTouch untouched.
  • Re-verified on glass 2026-07-17; recorded the board's download-mode-latch reset gotcha.

https://claude.ai/code/session_01F7YsQgso3KNpeXbP5vNVj6

Port the KitchenSync Touch 1.47" LCD to the ESP-IDF firmware. Increment 1 proves the
LovyanGFX Panel_ST7789 + Bus_SPI config comes up under ESP-IDF's SPI on the S3.

- ks_display.{h,cpp}: LGFX config copied verbatim from ktouch_display.cpp; backlight on
  ledc (was analogWrite); render task draws a test frame. No touch / live data yet.
- idf_component.yml: LovyanGFX managed component, esp32s3 target only.
- Kconfig: KS_TOUCH_DISPLAY (depends on IDF_TARGET_ESP32S3, default n).
- CMakeLists: always compile ks_display.cpp (no-op stub when flag off).
- ks_main.c: one guarded call + include; P4 build unaffected.

Spike — not for merge until verified on glass.
sdkconfig.defaults.esp32s3 auto-loads only for the S3 target, so a fresh
'idf.py set-target esp32s3' comes up display-enabled and P4 is untouched.
…stry component

LovyanGFX is not in the Espressif component registry (the ^1.1.16 registry pin
failed to resolve). Pull it from GitHub pinned to tag 1.2.21 — the exact version
the Arduino firmware already ships (THIRD_PARTY.md, BSD-2-Clause). Gated to the S3
target.
Split the two-statement brightness clamp onto separate lines. ESP-IDF builds with
-Werror=misleading-indentation (Arduino did not). Full esp32s3 build now green.
…G console

- ks_display.cpp: AXS5106L over i2c_master (SDA42/SCL41, 0x63) + GPIO47 reset,
  reusing the host-tested axs5106l.c parser (added to CMake SRCS by path). Taps are
  echoed on screen ('TAP x,y') and to the log.
- sdkconfig.defaults.esp32s3: route the console to USB-Serial-JTAG (the Arduino
  build's hwcdc). ESP-IDF's UART default left the USB port dark after boot, so the
  cu.usbmodem port vanished and esptool could not auto-reset. Now it persists +
  serial logs work. (Builds green; hardware verification pending the next flash.)
Portrait-native AXS5106L coords -> setRotation(7) landscape: sx=319-raw_y,
sy=171-raw_x (verified against a corner tap). Draws a dot at the mapped point.
…d-mode gotcha

Rebased the display spike onto master (clean), rebuilt esp32s3, reflashed the Waveshare
S3-Touch — panel shows "ESP-IDF DISPLAY OK". Landing the spike. Note the board latches
DOWNLOAD mode on every host-issued USB reset (esptool/monitor/DTR), so a fresh flash boots
dark and silent until a physical power-cycle — looks like a crash, isn't one.

Claude-Session: https://claude.ai/code/session_01F7YsQgso3KNpeXbP5vNVj6
@Skeyelab
Skeyelab enabled auto-merge (squash) July 17, 2026 04:29
@Skeyelab
Skeyelab merged commit 84b27f9 into master Jul 17, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants