症状
Adafruit_ILI9341 ライブラリでは表示できるのに、TFT_eSPI を使うと Guru Meditation Error (StoreProhibited) でリブートを繰り返す。
Adafruit_ILI9341 ライブラリでは問題なく動作しているのでピン接続に問題があるとは考えづらかった。とにかくいろいろな方法を試して見つけたのが以下の原因(たぶん)と解決策である。
原因
- SPI ポートが正しくなかった。
直接の原因はSPIポートの設定が正しくなかったことである。ESP32S3 では SPI ポートが複数あり、TFT_eSPI が誤ってポートを掴むことがあるらしい。そのため結果的に Guru Meditation Error (StoreProhibited)のエラーとなったと推測される。
解決策
User_Setup.h に以下を追加した。
#define USE_HSPI_PORT
これでクラッシュが解消した。
以下にこちらで使った設定を示す。
#define ILI9341_DRIVER
#define TFT_MISO 8
#define TFT_MOSI 5
#define TFT_SCLK 6
#define TFT_CS 2
#define TFT_DC 4
#define TFT_RST 3
#define USE_HSPI_PORT
#define SPI_FREQUENCY 27000000 // まずは安定動作のために 27MHz 程度にした。
以上