0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LILYGO T-Deck Plusを最新版でビルドする

Last updated at Posted at 2025-04-28

以前遊んだLilygoのT-Deck Plusですが
espressif32のバージョンを
platform = espressif32@6.3.0
指定すると普通に動いたのでが(Lilygoのサンプルは@6.3.0)
6.9.0等の新しいを指定すると動きませんでした(本校執筆時の最新版6.10.0)

別に古いバージョンを使っていれば良いのだけど、他のライブラリ等の整合も考えると
出来る限り最新版を使いたい所

原因は?

色々調べた結果、T-Deck PlusのMCUは ESP32-S3 が原因のようで。

  • ESP32(普通のESP32)の場合
  • HSPI(SPI2)とVSPI(SPI3)が使える。
    (通常、TFT_eSPIはVSPI(デフォルトのSPIバス、ピンは固定)を使う設計になってる。)
  • 必要に応じて -DUSE_HSPI_PORT を指定すると、HSPI側(自由にピンを設定できる)に切り替えることができた。

ESP32-S3の場合

  • ESP32-S3もSPI2/HSPI、SPI3/VSPIみたいな命名が一応あるけど、
  • 実際には**"Flexible SPI" (FSPI)** という新しい仕組みになっていて、
    ピンが完全に自由に割り当てできる仕様になった。

でも!ライブラリ(TFT_eSPI)の内部では依然として 「VSPIを使う」「HSPIを使う」みたいな昔ながらの記述が残っている。

ここで問題:

  • TFT_eSPIが "デフォルトでVSPIを使う" → でも、S3ではそれが正しく動作しないことがある。
  • S3では、ピンを手動で設定したい=自由なバスを使いたい → HSPI(SPI2)を選びたい。
    (このとき、-DUSE_HSPI_PORT を指定することで、手動でピン設定できるバスに強制切り替えできる。)

VSPIだとS3で一部不安定になる場合があって、それを避けるためにも使う。

そのため、platformio.iniに記述が必要になります。

platformio.ini
build_flags = -DUSE_HSPI_PORT

後はUser_Setup.hに以下の内容を追加(インクルード)すれば最新版でも動作します。

tft_espi_setting.h
#define ST7789_DRIVER   /* ST7789を使うと指定 */

#define TFT_WIDTH  240
#define TFT_HEIGHT 320

// ==== Pin Config for ESP32-S3 ====

#define TFT_MISO  38
#define TFT_MOSI  41
#define TFT_SCLK  40
#define TFT_CS    12
#define TFT_DC    11
#define TFT_RST   -1

// バックライト制御(必要なら)
#define TFT_BL     5
#define TFT_BACKLIGHT_ON HIGH

// ==== SPI Settings ====
#define TFT_SPI_FREQUENCY  40000000
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?