Repository navigation
Conversation
ST77922 wants register writes on 1 line and pixel data on 4 lines, which Arduino_ESP32QSPI cannot do (it hardcodes 4-4-4). Adds an own-bus raw ESP-IDF spi_master driver modelled on the vendor example, using the vendor's active init table verbatim, plus the DisplayConfig / ardgfx wiring for TFT_DATABUS_N=6 and TFT_DISPLAY_DRIVER_N=52. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Drop the debug prints and the ST77922_BRINGUP_TEST fill routine, and the Espressif esp_lcd_st77922 files that nothing compiled against (only the 4-field init-command struct was used; it now lives in the init table header). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a display driver for the ST77922 (320x480) used on the LCDwiki ES3C35P
3.5" ESP32-S3 module, for use by the Launcher board
lcdwiki-es3c35p(bmorcelli/Launcher#475, request #434).
The ST77922 wants register writes on one data line and pixel data on four.
Arduino_GFX's
Arduino_ESP32QSPIhardcodes every phase onto four lines, so itcannot drive this panel. Like
Arduino_RGB_Display/Arduino_DSI_Display(ids 49/50), the new class therefore owns its bus instead of taking an
Arduino_DataBus:spi_masteronSPI2_HOST, IOMUX pins,QUAD, 80 MHz0x02, 24-bit addressreg << 8, params on one line0x32, address0x003C00, four lines,0x4000-pixel chunksThe panel's MADCTL does not remap addressing, so rotation is software:
USE_CANVAS=1hasArduino_Canvashand over native-portrait frames, and thedriver's per-rect paths transform coordinates for the non-canvas case.
Changes
src/panels/Arduino_ST77922_1L4.hsrc/panels/st77922_1l4/st77922_1l4_init_table.hsrc/DisplayConfig.hTFT_DATABUS_N=6/TFT_DISPLAY_DRIVER_N=52plumbingsrc/backends/ardgfx.{h,cpp}cs, sclk, d0..d3, rst, rotationsrc/backends/ardgfx_driver.inc,ardgfx_driver_class.incEverything is behind id 52 / bus 6, so no other panel's code path changes. Id 51
is upstream's NV3031B, which is why this uses 52.
Verification
Verified through the Launcher
lcdwiki-es3c35penv on one physical unit:display image, orientation and colour order correct; all four rotations;
stable backlight; Launcher menu, Wi-Fi password entry. See bmorcelli/Launcher#475's
verification table for the full result list and the build/regression checks.
Provenance / licensing note
The init-command table comes from the board vendor's published example
(https://github.com/ydedox/st77922, Example_01 -- the active
st77922_lcd_init[]),which has no license file. It is panel register data, confirmed working on
hardware. Flagged so the maintainer can decide whether to keep it or substitute
the equivalent from the MIT-licensed
78/xiaozhi-esp32. The driver code itselfis original.
Related: bmorcelli/Launcher#434
🤖 Generated with Claude Code