Skip to content

Waveshare ESP32-S3 Touch AMOLED 1.8" board support - #708

Closed
Loelin wants to merge 9 commits into
TactilityProject:developfrom
Loelin:waveshare-s3-touch-amoled-18
Closed

Loelin wants to merge 9 commits into
TactilityProject:developfrom
Loelin:waveshare-s3-touch-amoled-18

Conversation

@Loelin

@Loelin Loelin commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds support for the Waveshare ESP32-S3 Touch AMOLED 1.8".

  • New device: Devices/waveshare-s3-touch-amoled-18 (devicetree, module wiring, expander reset, LVGL scaling/insets)
  • New NXP PCF85063A RTC driver (Drivers/pcf85063-module)
  • Sleep/wake via AXP2101, TCA9554 expander, ES8311 audio, QMI8658 IMU, FT5x06 touch, SH8601 panel
  • UI insets set to 22 px on all edges

Reliability fixes

  • SH8601: use internal DMA bounce buffers instead of PSRAM-direct QSPI DMA, avoiding DMA TX underflow and panel desync under PSRAM contention
  • FT5x06: correct register constants and raise the I2C transaction timeout

Board tuning

  • I2C0 at 100 kHz
  • SPI2 max-transfer-size 8192 (8 KB) instead of 64 KB

Test build

python3 device.py waveshare-s3-touch-amoled-18 + idf.py build on main @ 7462d32d (#714) → BUILD_EXIT=0 (build/Tactility.bin, 4,006,688 bytes, 36% partition free).

KenVanHoeylandt and others added 9 commits October 20, 2026 21:20
Adds support for the Waveshare ESP32-S3-Touch-AMOLED-1.8 (V1: SH8601 panel +
FT3168 touch), a 368x448 AMOLED board with 16MB flash / 8MB PSRAM.

Reuses the sh8601, ft5x06, axp2101, qmi8658 and es8311 drivers. Board specifics:
- the panel/touch reset lines hang off a TCA9554 I2C expander, so the module start
  pulses EXIO0/1/2/6 (low then high) before the display/touch devices start;
- the TF card is on SDMMC (slot 1, 1-bit: CLK=2, CMD=1, D0=3);
- the same board-local LVGL insets/scaling and Bluetooth reconnect hooks as the
  2.06 port.
The Waveshare 1.8" board carries a PCF85063A RTC at 0x51, not the 2.06"s
BM8563. The two share an address but not their register maps: the PCF85063 keeps
seconds..years at 0x04-0x0A with the OS integrity flag in bit 7 of the seconds
register, so the bm8563 driver (0x02-0x08) cannot drive it.

Add Drivers/pcf85063-module, modelled on bm8563-module (RtcApi / RTC_TYPE,
control/register8 helpers) but with the PCF85063 layout, and declare the chip at
0x51 in the 1.8 devicetree. The I2C scanner now labels 0x51 as "pcf85063"
instead of leaving the row unidentified, and the board gains RTC support.
Use a single uniform inset (lv_obj_set_style_pad_all) instead of the 2.06-style
50 px horizontal / 30 px vertical split.
… tuning

- SH8601: use internal DMA bounce buffers instead of PSRAM-direct QSPI DMA
- FT5x06: correct register constants and raise I2C transaction timeout
- ESP32 BLE: persist bonds in a filesystem-backed store instead of NVS
- 1.8 devicetree: I2C0 at 100 kHz, SPI2 max transfer size 8 KB
@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8adf54a8-b839-469c-80fb-b77a58e631e0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@KenVanHoeylandt

Copy link
Copy Markdown
Contributor

I cancelled the build for now because I need the capacity for another merge.
Can you point this branch to main?

* event subscription on its own thread instead of relying on Tactility's "bt-events" thread,
* which can block while the radio is on.
*/
void waveshare_bluetooth_reconnect_start();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can't be merged. Should be fixed in the BT driver properly. I still need to refactor that driver though, which might help with this problem.

@KenVanHoeylandt
KenVanHoeylandt deleted the branch TactilityProject:develop October 20, 2026 21:44
@KenVanHoeylandt

Copy link
Copy Markdown
Contributor

I don't know why it was closed. It was not my intention, sorry!

@KenVanHoeylandt
KenVanHoeylandt deleted the branch TactilityProject:develop October 23, 2026 13:45
@KenVanHoeylandt

Copy link
Copy Markdown
Contributor

I think it was auto-closed because it was targeting the wrong branch, and I deleted that branch. main is the correct one. develop is a recurring branch name that I reuse for putting multiple changes on to merge to main myself.

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