Skip to content

feat(board): add Wireless Tag WT32-SC01 Plus (ESP32-S3, ST7796 I80)#95

Open
ayyaris wants to merge 1 commit into
espressif:masterfrom
ayyaris:feat/board-wt32-sc01-plus
Open

feat(board): add Wireless Tag WT32-SC01 Plus (ESP32-S3, ST7796 I80)#95
ayyaris wants to merge 1 commit into
espressif:masterfrom
ayyaris:feat/board-wt32-sc01-plus

Conversation

@ayyaris

@ayyaris ayyaris commented May 19, 2026

Copy link
Copy Markdown

Summary

Adds board support for the Wireless Tag WT32-SC01 Plus:

  • ESP32-S3 SoC, 16 MB flash, 2 MB Quad PSRAM
  • ST7796 480×320 display via native 8-bit Intel 8080 (I80) bus
  • FT6336U capacitive touch controller via I2C

Files

File Purpose
board_peripherals.yaml I80 LCD bus + I2C bus definitions
board_devices.yaml ST7796 LCD panel + FT6336U touch device
sdkconfig.defaults.board PSRAM / stack constraints (see below)
setup_device.c ST7796 init sequence via esp_lcd I80 driver

Key decisions

Touch device type: Uses type: lcd_touch / sub_type: i2c (not the deprecated lcd_touch_i2c). The deprecated type has a YAML mapping bug where i2c_addr[] is never populated from io_i2c_config.dev_addr, causing the probe loop to always target address 0x00 → ESP_ERR_INVALID_RESPONSE → reboot loop. Tracked in issue #90.

PSRAM constraints: The WT32-SC01 Plus has 2 MB Quad PSRAM, which is too small for SPIRAM_XIP_FROM_PSRAM. With XIP-from-PSRAM disabled, task stacks must remain in internal DRAM — otherwise any flash read while a task runs on a PSRAM stack triggers esp_task_stack_is_sane_cache_disabled() → panic. Tracked in issue #91.

CONFIG_SPIRAM_XIP_FROM_PSRAM=n
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=65536
CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM=n

Test plan

  • Board boots without reboot loop
  • Display initialises and renders correctly
  • Touch input registers correctly

🤖 Generated with Claude Code

…T6336U)

New board support for the Wireless Tag WT32-SC01 Plus:
- ESP32-S3 SoC, ST7796 480x320 display via native 8-bit I80 bus
- FT6336U capacitive touch via I2C
- 16 MB flash, 2 MB Quad PSRAM

board_peripherals.yaml: I80 LCD bus + I2C bus definitions
board_devices.yaml:
  - lcd_panel: ST7796 with correct I80 timings and reset sequence
  - lcd_touch: type lcd_touch / sub_type i2c with 8-bit I2C addr [0x70]
    (avoids lcd_touch_i2c probe-address-0x00 regression -- see issue espressif#90)
sdkconfig.defaults.board:
  - SPIRAM_XIP_FROM_PSRAM=n (2 MB Quad PSRAM too small for XIP instruction cache)
  - SPIRAM_MALLOC_ALWAYSINTERNAL=65536 + FREERTOS_TASK_CREATE_ALLOW_EXT_MEM=n
    (keeps task stacks in internal DRAM -- prevents cache-disabled stack panic)
setup_device.c: ST7796 init sequence via esp_lcd panel I80 driver

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


Alessio Ayyari seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@laride

laride commented May 19, 2026

Copy link
Copy Markdown
Collaborator

Thanks for splitting the PR!

It looks like the CLA check is still not passing. Could you please double-check that the GitHub account associated with the commit author email has signed the CLA?

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.

3 participants