W32-SC01 Plus fully working with PSRAM

In case anyone could do with a working config, this is the right way to get PSRAM to work (for e.g. displaying an image) in ESPHome for the W32-SC01:

esp32:
  board: esp32-s3-devkitc-1
  flash_size: 16MB
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
      CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
      CONFIG_ESPTOOLPY_FLASHMODE_QIO: y
      CONFIG_SPIRAM_FETCH_INSTRUCTIONS: y
      CONFIG_SPIRAM_RODATA: y
      CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"
      COMPILER_OPTIMIZATION_SIZE: y
      CONFIG_SPIRAM_USE_CAPS_ALLOC: y

psram:
  mode: quad
  speed: 80MHz

# --- Display (ST7796 via mipi_spi octal SPI / 8-bit parallel) ---
spi:
  - type: octal
    id: octal_spi
    clk_pin: 47
    data_pins:
      - 9
      - ignore_strapping_warning: true
        number: 46
      - ignore_strapping_warning: true
        number: 3
      - 8
      - 18
      - 17
      - 16
      - 15

display:
  - platform: mipi_spi
    id: lcd
    model: WT32-SC01-PLUS
    rotation: 90
    auto_clear_enabled: false
    update_interval: never

# --- Backlight ---
power_supply:
  - id: backlight
    enable_on_boot: true
    pin:
      ignore_strapping_warning: true
      number: GPIO45

# --- Touchscreen (FT5x06 via I2C) ---
i2c:
  frequency: 400kHz
  sda: 6
  scl: 5

touchscreen:
  - platform: ft63x6
    id: touch
    interrupt_pin: 7

And this is my simple image display snippet (not complete, but you get the idea) that works with it (without PSRAM, you can’t download images)

online_image:
  - id: image
    url: "http://placeholder.local/image.jpg"
    format: PNG
    type: RGB565
    resize: 480x320
    update_interval: never
    on_download_finished:
      - lvgl.image.update:
          id: img_widget
          src: image
    on_error:
      - logger.log: "Failed to download image"

lvgl:
  pages:
    - id: image_page
      skip: true
      bg_color: 0x000000
      bg_opa: COVER
      widgets:
        - image:
            id: img_widget
            src: image
            align: CENTER
1 Like