ESP32-S3-MINI-1-N4R2驱动SPI TFT显示异常问题求助
ESP32-S3-MINI-1-N4R2驱动SPI TFT显示屏故障排查
我自制了一块搭载ESP32-S3-MINI-1-N4R2的PCB,烧录和运行简单的LED闪烁程序一切正常,但尝试驱动SPI TFT显示屏时出现异常,收到多种提示PSRAM故障的错误信息及其他报错。
引脚配置疑问
我对照芯片手册整理了当前使用的引脚信息,不确定FSPI与SUBSPI系列引脚是否适合用来驱动TFT:
| 引脚编号 | 我的用途 | 手册描述 |
|---|---|---|
| IO6 | TFT_DC | RTC_GPIO6, GPIO6, TOUCH6, ADC1_CH5 |
| IO10 | TFT_CS | RTC_GPIO10, GPIO10, TOUCH10, ADC1_CH9, FSPICS0, FSPIIO4, SUBSPICS0 |
| IO11 | TFT_MOSI | RTC_GPIO11, GPIO11, TOUCH11, ADC2_CH0, FSPID, FSPIIO5, SUBSPID |
| IO12 | TFT_SCLK | RTC_GPIO12, GPIO12, TOUCH12, ADC2_CH1, FSPICLK, FSPIIO6, SUBSPICLK |
| IO13 | TFT_MISO | RTC_GPIO13, GPIO13, TOUCH13, ADC2_CH2, FSPIQ, FSPIIO7, SUBSPIQ |
错误信息
运行时收到如下报错:
Rebooting... ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT) Saved PC:0x42025cca SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x4bc load:0x403c9700,len:0xbd8 load:0x403cc700,len:0x2a0c entry 0x403c98d0 Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. Core 1 register dump: PC : 0x42002b68 PS : 0x00060a30 A0 : 0x82002bf0 A1 : 0x3fcebc20 A2 : 0x00000010 A3 : 0x00000001 A4 : 0x60004000 A5 : 0x0000000b A6 : 0x000000ff A7 : 0x3fc92538 A8 : 0x08000000 A9 : 0x3fcebbf0 A10 : 0x3fc95b2c A11 : 0x00000001 A12 : 0xffffffff A13 : 0x00000040 A14 : 0x00000000 A15 : 0x3fc92538 SAR : 0x0000001a EXCCAUSE: 0x0000001d EXCVADDR: 0x00000010 LBEG : 0x42005584 LEND : 0x420055e8 LCOUNT : 0x00000003 Backtrace: 0x42002b65:0x3fcebc20 0x42002bed:0x3fcebc50 0x42001909:0x3fcebc70 0x420056ea:0x3fcebc90 ELF file SHA256: 998aab4334a07bf4
当前配置与代码
platformio.ini 配置
platform = espressif32 board = deneyapkart1Av2 ; not my real board, but it does at least have an ESP32S3 Mini framework = arduino monitor_speed = 115200 lib_deps = bodmer/TFT_eSPI@^2.5.43 board_build.arduino.memory_type = qio_qspi ; Datasheet says Quad SPI build_flags = -Os -DLED_OFF_BEAT=17 -DUSER_SETUP_LOADED=1 -DST7789_DRIVER=1 -DCGRAM_OFFSET -DTFT_CS=10 -DTFT_DC=6 -DTFT_RST=-1 -DTFT_MOSI=11 -DTFT_SCLK=12 -DTFT_MISO=13 -DTFT_BL=-1 -DTOUCH_CS=-1 -DTFT_BACKLIGHT_ON=HIGH -DLOAD_GLCD=1 -DLOAD_FONT2=1 -DLOAD_FONT4=1 -DLOAD_FONT6=1 -DLOAD_FONT7=1 -DLOAD_FONT8=1 -DLOAD_GFXFF=1 -DSMOOTH_FONT=1 -DSPI_FREQUENCY=40000000
测试代码
#include <Arduino.h> #include <TFT_eSPI.h> #include <SPI.h> SPIClass hspi = SPIClass(HSPI); TFT_eSPI tft = TFT_eSPI(); const unsigned long BLINK_DURATION_MILLISECONDS = 1200; const int LED_PIN = LED_OFF_BEAT; unsigned long _timeChangedLed = 0; bool _ledLit = false; void setup() { Serial.begin(115200); pinMode(LED_PIN, OUTPUT); hspi.begin(TFT_SCLK, TFT_MISO, TFT_MOSI, TFT_CS); // 注释掉这一行的话LED能正常闪烁;不注释的话LED不亮,串口也会失效,必须断开USB重新连接才能恢复 tft.init(); } void loop() { unsigned long timeNow = millis(); if (timeNow > _timeChangedLed + BLINK_DURATION_MILLISECONDS) { _timeChangedLed = timeNow; _ledLit = !_ledLit; String onOff = _ledLit ? "on" : "off"; Serial.println(onOff); digitalWrite(LED_PIN, _ledLit); } }
原理图相关部分

需求
- 帮我判断当前所选引脚是否适合驱动SPI TFT
- 无论引脚是否合适,提供一份基于ESP32-S3-MINI-1-N4R2 + SPI外设的可运行项目的
platformio.ini配置文件
内容的提问来源于stack exchange,提问作者OutstandingBill
相关产品推荐
相关产品推荐

