Skip to content

Epic D: TFT_eSPI → LovyanGFX #156

Open

Description

@Strycher

Recreated from Strycher/Field_Compass-archive#156 — originally opened by @Strycher on 2026-08-09. Credentials redacted where present.

Parent feature: #151 · Plan: docs/plans/2026-08-09-platformio-hal-design.md

Why

LovyanGFX configures the panel at runtime, in a config struct in our own source. A second panel becomes a config struct rather than a rebuild of library headers. It also drives SSD1306/SH110x, bringing the OLEDs under one driver instead of a separate Adafruit_SH110X path.

This is the cheap way to buy display portability without a full hardware-abstraction layer.

Scope is small

12 distinct tft.* methods across ~25 call sites — LVGL does the actual drawing. Three clusters: the LVGL flush path, the boot splash, and init/sleep.

Children

D1 panel+bus config · D2 flush callback (byte-swap semantics differ) · D3 splash/init/sleep · D4 re-verify 80 MHz SPI + SD bus sharing (#116) · D5 drop TFT_eSPI · D6 integration test

Known hazards

  • pushPixels vs pushColors(..., true) byte-swap differences show up as wrong colours
  • The SD bus-sharing workarounds (SD card intermittent mount failure #116) were tuned against TFT_eSPI's DMA behaviour
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    board:todoBoard sync: Todo columnpriority:P1Priority: P1 - Majortype:epicParent issue with sub-issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions