Repository navigation
Conversation
New es3c35p env: Panel_ST77922_QSPI (own ESP-IDF spi_master driver, register writes on 1 line / pixels on 4), USE_ST77922_TOUCH backend (I2C 0x55), battery sense on GPIO 8, shares the JC3248W535 full-frame PSRAM sprite path via a new FramePanel type. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The landscape gauge-text and pong-speed workarounds were keyed on the JC board but belong to the PSRAM frame sprite, so ES3C35P now gets them too. FramePanel is picked by a config.h capability instead of a board name in display_ui.h, and Panel_ST77922_QSPI::init() reports why it failed.
Owner
|
Thanks for this. I merged current
Before I merge, could you check a few things on your unit with the current branch head?
On the init table licence: it's a register sequence, I'm fine carrying it with the source credited as you did. Once those check out, I'll merge it and publish an es3c35p build to the web flasher right away, without waiting for the next release. |
This branch has not been deployed
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 support for the LCDwiki ES3C35P, a 3.5" 320x480 ESP32-S3 all-in-one (16MB flash, 8MB octal PSRAM). It is sold under several names, e.g. "CBD" or "cheap black display". New env:
es3c35p(inboards/lcdwiki_es3c35p.ini, like the other community boards).The display is the interesting part. The ST77922 is QSPI but wants register writes on ONE data line and pixels on FOUR ("1-1-4"). LovyanGFX's SPI bus and Arduino_GFX's QSPI bus both send the command phase on all four lines, so neither can drive it. This PR adds
Panel_ST77922_QSPI(src/lgfx_panel_st77922_qspi.hpp), a smallPanel_Devicethat owns an ESP-IDFspi_masterdevice. It follows the same contract asPanel_AXS15231B_AGFX: the panel stays at rotation 0, the app draws into the full-frame PSRAM sprite, and the sprite is pushed once per tick. That lets the board reusePANEL_REQUIRES_AXS_FRAME_SPRITEand the 320x480 layouts unchanged.display_ui.hgets aFramePaneltypedef so both panel classes share the code path.Touch is inside the ST77922 (I2C 0x55, 16-bit register addresses).
USE_ST77922_TOUCHadds a level-polling backend (src/button_touch_st77922.cpp), the same shape as the AXS15231B one. RST is GPIO48 and needs a pulse at init.Other board bits: battery sense on GPIO8 (1:2 divider), onboard WS2812 status LED on GPIO40, backlight GPIO41, buzzer default pin 0 (no buzzer hardware; the ES8311 amp has no driver here). Pin-clash guards in
button.cppandled.cppare extended for this board.Also registered in
tools/release.py,docs/flasher.js(community badge) and the README (board table and build-file table).Tested
On one physical unit: display, cold boot, touch (a tap exits clock mode back to the print screen; the controller answers a few seconds after boot, so the first read is a retry), battery reading, Wi-Fi setup, adding a printer, and the WS2812 status LED all work. Not tested: a real print job over a long session, landscape rotations on every screen, 3-4 printer mode, audio.
One unexplained event: during development I saw a single dark-screen boot with a binary identical to one that later worked. Cold boots have been fine since. Flagging it for honesty; I could not reproduce it.
Builds checked (compile only) after these changes:
esp32s3,cyd,jc3248w535,ws_lcd_350,es3c35p.Things you should know
src/lgfx_panel_st77922_qspi_init.his the vendor's register init sequence, copied from the board vendor's example (github.com/ydedox/st77922, Example_01), which has no licence file. If that is a problem, I can drop it and ask the vendor, or you can decline that part.esptool merge_binmust use--flash_mode keep; forcingqiorewrites the header and boot-loops (the PlatformIO bootloader is DIO). The octal PSRAM needsboard_build.arduino.memory_type = qio_opi(already set in the env).Happy to adjust naming, split the panel class into its own PR, or drop anything you would rather not carry.
🤖 Generated with Claude Code