TFT_eSPI ST7735 не заводится на esp32c3 Arduino 3.2.0

Имеется дисплей 1.77" на контроллере ST7735(S), esp32c3 super mini. Дисплей подключен следующим образом:
Дисплей esp32c3
GND ↔ GND
VCC ↔ 3v3
SCL ↔ 2
SDA ↔ 4
RES ↔ 0
DC ↔ 1
CS ↔ 5
Установлена последняя версия Arduino IDE 2.3.6, фреймворк ESP32 3.2.0, TFT_eSPI 2.5.43. Выбираю плату LOLIN C3 mini. Создал отдельный файл для настроек со следующими параметрами

Настройки TFT_eSPI
#define ST7735_BLACKTAB
#define ST7735_DRIVER // define additional parameters below for this display
#define TFT_RGB_ORDER TFT_RGB // color order Red-Green-Blue
//#define USE_HSPI_PORT
// this is for the ESP32 C3 Super Mini board as in project 141

// #define TFT_MISO 19
#define TFT_MOSI 4
#define TFT_SCLK 2
#define TFT_CS 5 // Chip Select control pin
#define TFT_DC 1 // Data Command control pin
#define TFT_RST 0 // Reset pin (could connect to RST pin)

// fonts
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
// #define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT

// #define SPI_FREQUENCY 1000000
// #define SPI_FREQUENCY 5000000
// #define SPI_FREQUENCY 10000000
// #define SPI_FREQUENCY 20000000
#define SPI_FREQUENCY 27000000
// #define SPI_FREQUENCY 40000000
// #define SPI_FREQUENCY 55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
// #define SPI_FREQUENCY 80000000

// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY 20000000```
Код программы
                                       // include the graphics library (this includes the sprite functions)
TFT_eSPI    tft = TFT_eSPI();                                 // create object "tft"
   
void setup(){
 
   Serial.begin(115200);

   tft.init();
   tft.setRotation(0);       
   tft.fillScreen (TFT_BLACK);    
}


void loop(){ 
  
}```

Получаю следующую ошибку

Спойлер
19:41:24.495 -> 3fc9a280: 0xf2283591 0xd321f36c 0x7559945a 0xec2ddd7e 0x54519c17 0xa4cde40a 0x0f95ced8 0x239bd65e
19:41:24.495 -> 3fc9a2a0: 0xb5bdb3d8 0x76bb3105 0xef9f5cca 0xbf9e517b 0x232b13b0 0x60519f06 0x8461d920 0x19804067
19:41:24.495 -> 3fc9a2c0: 0x74ef6ba3 0xa8642c93 0x73fddf97 0x8d9c36ff 0x26cc7d16 0x3896cdc1 0xa100099c 0x3541b21a
19:41:24.495 -> 3fc9a2e0: 0xebf746f7 0x929a6d7d 0x2e70dfba 0x32f0c39c 0x3e9df948 0xaa015040 0x6aa19644 0x200aad44
19:41:24.495 -> 3fc9a300: 0xc41d45e7 0x7029ba9f 0xcefbc794 0xfb75d337 0x3a1f1836 0x60bd1079 0xa0cd2353 0xedb8c0a3
19:41:24.495 -> 3fc9a320: 0x8763806f 0x79c3dbc5 0x73128e3b 0xb53f2027 0x3fc9812c 0x00000170 0xabba1234 0x0000015c
19:41:24.495 -> 3fc9a340: 0x3fc99fd0 0x00000000 0x3fc95e30 0x3fc8fdf4 0x3fc9a340 0x3fc8fdec 0x00000018 0x00000000
19:41:24.495 -> 3fc9a360: 0x00000000 0x3fc9a340 0x00000000 0x00000001 0x3fc9813c 0x706f6f6c 0x6b736154 0x00000000
19:41:24.495 -> 3fc9a380: 0x00000000 0x3fc9a130 0x00000005 0x00000000 0x00000001 0x00000002 0x00000000 0x00000000
19:41:24.495 -> 3fc9a3a0: 0x00000000 0x00000000 0x3fc918f8 0x3fc91960 0x3fc919c8 0x00000000 0x00000000 0x00000001
19:41:24.495 -> 3fc9a3c0: 0x00000000 0x00000000 0x00000000 0x4201070e 0x00000000 0x00000000 0x00000000 0x00000000
19:41:24.495 -> 3fc9a3e0: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:41:24.495 -> 3fc9a400: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:41:24.495 -> 3fc9a420: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:41:24.495 -> 3fc9a440: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:41:24.495 -> 3fc9a460: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:41:24.495 -> 3fc9a480: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0xbaad5678

Но стоит добавить #define USE_HSPI_PORT, ошибок нету, но и дисплей не реагирует никак. Поставил библиотеку Adafruit ST7735, указал теже настройки подключения дисплея и он завелся сразу! Значит подключение верное, а проблемма гдето в настройках TFT_eSPI, кучу всего перепробовал, ничего не помогает

Код ошибки

Код ошибки
19:46:38.129 -> ELF file SHA256: e6142398b
19:46:38.129 -> 
19:46:38.129 -> Rebooting...
19:46:38.129 -> ESP-ROM:esp32c3-api1-20210207
19:46:38.129 -> Build:Feb  7 2021
19:46:38.129 -> rst:0xc (RTC_SW_CPU_RST),boot:0xd (SPI_FAST_FLASH_BOOT)
19:46:38.129 -> Saved PC:0x403818f4
19:46:38.129 -> SPIWP:0xee
19:46:38.129 -> mode:DIO, clock div:1
19:46:38.129 -> load:0x3fcd5820,len:0x1148
19:46:38.129 -> load:0x403cc710,len:0xb40
19:46:38.129 -> load:0x403ce710,len:0x2f58
19:46:38.129 -> entry 0x403cc710
19:46:38.577 -> Guru Meditation Error: Core  0 panic'ed (Store access fault). Exception was unhandled.
19:46:38.577 -> 
19:46:38.577 -> Core  0 register dump:
19:46:38.577 -> MEPC    : 0x42001b28  RA      : 0x42001b18  SP      : 0x3fc9a0a0  GP      : 0x3fc8e600  
19:46:38.577 -> TP      : 0x3fc9a130  T0      : 0x00051616  T1      : 0xffc3ffff  T2      : 0x00000000  
19:46:38.577 -> S0/FP   : 0x60004000  S1      : 0x3fc8f740  A0      : 0x00000001  A1      : 0xffffffff  
19:46:38.577 -> A2      : 0x00000000  A3      : 0x00000000  A4      : 0x08000000  A5      : 0x00000010  
19:46:38.577 -> A6      : 0x00000002  A7      : 0x00000020  S2      : 0x00000000  S3      : 0x3fc90000  
19:46:38.577 -> S4      : 0x00000000  S5      : 0x00000000  S6      : 0x00000000  S7      : 0x00000000  
19:46:38.577 -> S8      : 0x00000000  S9      : 0x00000000  S10     : 0x00000000  S11     : 0x00000000  
19:46:38.577 -> T3      : 0x01927358  T4      : 0x0196e6aa  T5      : 0x00000041  T6      : 0x0000000f  
19:46:38.577 -> MSTATUS : 0x00001881  MTVEC   : 0x40380001  MCAUSE  : 0x00000007  MTVAL   : 0x00000010  
19:46:38.577 -> MHARTID : 0x00000000  
19:46:38.577 -> 
19:46:38.577 -> Stack memory:
19:46:38.577 -> 3fc9a0a0: 0x00000003 0x00000000 0x019bfcc0 0x00000001 0x00000002 0x00000001 0x3fc8f740 0x420020b6
19:46:38.577 -> 3fc9a0c0: 0x00000000 0x3fc91000 0x3fc8f87c 0x42004f1a 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a0e0: 0x00000000 0x00000000 0x00000000 0x42007c88 0x00000000 0x00000000 0x00000000 0x40386fe8
19:46:38.577 -> 3fc9a100: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a120: 0x00000000 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xbaad5678
19:46:38.577 -> 3fc9a140: 0x2c39b7fe 0xb575e96c 0xa3694f56 0x6edbfdc9 0x13c01812 0x883c1747 0x39aa8507 0xda41c2a9
19:46:38.577 -> 3fc9a160: 0x4bb37c53 0xb9722ae1 0xfaacdacf 0x6c719c7e 0x97e5688a 0xebb3cdfa 0x970d0397 0x8a40240f
19:46:38.577 -> 3fc9a180: 0xca1adf67 0x2d02bf66 0x2c1900a2 0x4e3de2fa 0x0674fe14 0xa08093ab 0xe6378bef 0xcc98a996
19:46:38.577 -> 3fc9a1a0: 0xb66dbd4d 0x2da92a04 0xeed38e42 0x1a1e1e5f 0x40d65108 0xcee82c8e 0x204046d4 0x2e5e045c
19:46:38.577 -> 3fc9a1c0: 0x07ab9893 0x06671a4e 0x2489827e 0x9df7cf3f 0x5a80da40 0x756a2166 0x845dca26 0xe7c88329
19:46:38.577 -> 3fc9a1e0: 0x8b166fdb 0xcf58adf5 0xac086f54 0xbcc59fbd 0x9258000d 0xb2134c83 0x093e08f1 0x7dd80e9a
19:46:38.577 -> 3fc9a200: 0x63b8184e 0x7d99728b 0x126fde1f 0xa7c49145 0xc1df6873 0x69dc6992 0x9cb4899a 0x505c1908
19:46:38.577 -> 3fc9a220: 0x4c91d88c 0xb1ba9d4e 0x05e479d4 0xe9a77bfe 0x0195f3a3 0x315f5ed3 0x966472ba 0x418b527c
19:46:38.577 -> 3fc9a240: 0x44ab6bfe 0x80c7415c 0xe8bf8bf2 0x399b7c5b 0x22ab9540 0x38622a9a 0x6204405f 0x00641088
19:46:38.577 -> 3fc9a260: 0xddeba328 0x2a5f7d02 0x83dfdae9 0x26fd5e65 0x6a1b8a7d 0x43982bd8 0x6666d246 0x3835418c
19:46:38.577 -> 3fc9a280: 0xf2283591 0xd321f36c 0x7559945a 0xec2ddd7e 0x54519c17 0xa4cde40a 0x0f95ced8 0x239bd65e
19:46:38.577 -> 3fc9a2a0: 0xb5bdb3d8 0x76bb3105 0xef9f5cca 0xbf9e517b 0x232b13b0 0x60519f06 0x8461d920 0x19804067
19:46:38.577 -> 3fc9a2c0: 0x74ef6ba3 0xa8642c93 0x73fddf97 0x8d9c36ff 0x26cc7d16 0x3896cdc1 0xa100099c 0x3541b21a
19:46:38.577 -> 3fc9a2e0: 0xebf746f7 0x929a6d7d 0x2e70dfba 0x32f0c39c 0x3e9df948 0xaa015040 0x6aa19644 0x200aad44
19:46:38.577 -> 3fc9a300: 0xc41d45e7 0x7029ba9f 0xcefbc794 0xfb75d337 0x3a1f1836 0x60bd1079 0xa0cd2353 0xedb8c0a3
19:46:38.577 -> 3fc9a320: 0x8763806f 0x79c3dbc5 0x73128e3b 0xb53f2027 0x3fc9812c 0x00000170 0xabba1234 0x0000015c
19:46:38.577 -> 3fc9a340: 0x3fc99fd0 0x00000000 0x3fc95e30 0x3fc8fdf4 0x3fc9a340 0x3fc8fdec 0x00000018 0x00000000
19:46:38.577 -> 3fc9a360: 0x00000000 0x3fc9a340 0x00000000 0x00000001 0x3fc9813c 0x706f6f6c 0x6b736154 0x00000000
19:46:38.577 -> 3fc9a380: 0x00000000 0x3fc9a130 0x00000005 0x00000000 0x00000001 0x00000002 0x00000000 0x00000000
19:46:38.577 -> 3fc9a3a0: 0x00000000 0x00000000 0x3fc918f8 0x3fc91960 0x3fc919c8 0x00000000 0x00000000 0x00000001
19:46:38.577 -> 3fc9a3c0: 0x00000000 0x00000000 0x00000000 0x4201070e 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a3e0: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a400: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a420: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a440: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a460: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
19:46:38.577 -> 3fc9a480: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0xbaad5678

Подключение пинов проверяйте - по умолчанию у esp32c3

MISO - 5
MOSI - 6
SCK - 4
SS - 7

это если правильно плату выбрать(\variants\nologo_esp32c3_super_mini), а какую выбрал TC история умалчивает

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#include <stdint.h>

static const uint8_t LED_BUILTIN = 8;
#define BUILTIN_LED LED_BUILTIN  // backward compatibility
#define LED_BUILTIN LED_BUILTIN  // allow testing #ifdef LED_BUILTIN

static const uint8_t TX = 21;
static const uint8_t RX = 20;

static const uint8_t SDA = 8;
static const uint8_t SCL = 9;

static const uint8_t SS = 7;
static const uint8_t MOSI = 6;
static const uint8_t MISO = 5;
static const uint8_t SCK = 4;

static const uint8_t A0 = 0;
static const uint8_t A1 = 1;
static const uint8_t A2 = 2;
static const uint8_t A3 = 3;
static const uint8_t A4 = 4;
static const uint8_t A5 = 5;

#endif /* Pins_Arduino_h */

не умалчивает

1 лайк

как ты посмел? )))

слона то я…ну да у lolin несколько иная распиновка

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#include <stdint.h>

static const uint8_t LED_BUILTIN = 7;
#define BUILTIN_LED LED_BUILTIN  // backward compatibility
#define LED_BUILTIN LED_BUILTIN  // allow testing #ifdef LED_BUILTIN

static const uint8_t TX = 21;
static const uint8_t RX = 20;

static const uint8_t SDA = 8;
static const uint8_t SCL = 10;

static const uint8_t SS = 5;
static const uint8_t MOSI = 4;
static const uint8_t MISO = 3;
static const uint8_t SCK = 2;

static const uint8_t A0 = 0;
static const uint8_t A1 = 1;
static const uint8_t A2 = 2;
static const uint8_t A3 = 3;
static const uint8_t A4 = 4;
static const uint8_t A5 = 5;

#endif /* Pins_Arduino_h */

В интернете находил два разных pinout картинок, где SPI на разных ножках висит. Но при выборе платы Lolin C3 mini Adafruit заводится, а там указываются только пины CS, DC, RES, MOSI он по умолчанию берет, а если залить код с TFT_eSPI то тишина на экране и еще надо угадать с настройками, чтобы бутлупа не было. Проверил осцилографом, когда нет бутлупа, то на ножках тишина, как будто SPI совсем не завелся!

для TFT_eSPI можно локальный файл настроек добавить и в нём править, не затрагивая файл настроек в библиотеке

Указываете некорректный пин - вот вам и бутлуп. Запросто.

да и в ESP32C3 нет ни VSPI ни HSPI, там FSPI доступен

И ежели нужно два SPI, то нужно ручками инициализировать еще один FSPI. Но таки к вопросу темы это не относится ))

там нет двух доступных SPI, если надо SPI разделять между несколькими устройствами это делается по другому

Можно запустить два FSPI

SPIClass _spi1(FSPI);

Проверено ))

а, ты об этом )))

  // устройства SPI
  fspi1 = new SPIClass(FSPI);  // SD-Card
  fspi2 = new SPIClass(FSPI);  // AD9833
  fspi3 = new SPIClass(FSPI);  // MCP41010 - POT
  fspi4 = new SPIClass(FSPI);  // MCP41010 - ALC

Да, об этом

видимо для начала:
#define USE_FSPI_PORT

это ты на софтовом SPI запускаешь

Если менять только пины, то всегда бутлуп!

Если это софтовый, от куда он знает, на каком пине MOSI если его не указываю в настройках?

Не помогает