TFT-дисплей SPI 320×240 (ILI9341C) в сочетании с платой STM32 базе микроконтроллера STM32F103C8T6 имеет очень хорошее быстродействие, скорость обновления экрана намного выше чем использования этого дисплея с Arduino Nano. Работа логики дисплея имеет напряжение 3,3 В, что очень упрощает его подключение к STM32.
Подключение дисплея к STM32 достаточно простое:
При добавлении платы STM32 в Arduino IDE так же добавляются все необходимые библиотеки для работы с TFT-дисплей SPI 320×240 (ILI9341C).
Как добавить плату STM32 в Arduino IDE можно ознакомится в — STM32 Arduino IDE
// Библиотека Arduino_STM32-master.zip #include "SPI.h" #include <Adafruit_GFX_AS.h> // http://rcl-radio.ru/wp-content/uploads/2020/06/Adafruit_GFX.zip #include <Adafruit_ILI9341_STM.h> #define TFT_CS PA1 #define TFT_DC PA2 #define TFT_RST PA3 long i; Adafruit_ILI9341_STM tft = Adafruit_ILI9341_STM(TFT_CS, TFT_DC, TFT_RST); // Mosi - PA7, SCK - PA5 void setup(){ tft.begin(); tft.setRotation(1);tft.fillScreen(ILI9341_BLACK); } void loop(void) { tft.setCursor(0, 0); tft.setTextColor(ILI9341_RED); tft.setTextSize(1); tft.println("RCL-RADIO.RU"); tft.println(); tft.setTextColor(ILI9341_BLUE); tft.setTextSize(2); tft.println("RCL-RADIO.RU"); tft.println(); tft.setTextColor(ILI9341_GREEN); tft.setTextSize(3); tft.println("RCL-RADIO.RU"); tft.println(); tft.setTextColor(ILI9341_WHITE); tft.setTextSize(4); tft.println("RCL-RADIO.RU"); tft.println(); tft.fillRect(0,150,150,180,ILI9341_BLACK); tft.setTextSize(1); tft.setTextColor(ILI9341_WHITE); tft.setCursor(0, 150); tft.print(i++); delay(10); }
Ошибка компиляции для платы Generic STM32F103C series.
Что может быть?
Опубликуйте ответ компилятора
Arduino: 1.8.12 (Windows 10), Плата:»Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), Serial, 72Mhz (Normal), Smallest (default)»
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawUnicode(uint16_t, int16_t, int16_t, int16_t)’:
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: error: ‘textsize’ was not declared in this scope
if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);
^~~~~~~~
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: note: suggested alternative: ‘textsize_x’
if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);
^~~~~~~~
textsize_x
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: error: ‘textsize’ was not declared in this scope
if (textsize==1){
^~~~~~~~
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: note: suggested alternative: ‘textsize_x’
if (textsize==1){
^~~~~~~~
textsize_x
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: error: ‘textsize’ was not declared in this scope
pY+=textsize;
^~~~~~~~
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: note: suggested alternative: ‘textsize_x’
pY+=textsize;
^~~~~~~~
textsize_x
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: error: ‘textsize’ was not declared in this scope
return (width+gap)*textsize; // x +
^~~~~~~~
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: note: suggested alternative: ‘textsize_x’
return (width+gap)*textsize; // x +
^~~~~~~~
textsize_x
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawCentreString(char*, int16_t, int16_t, int16_t)’:
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: error: ‘textsize’ was not declared in this scope
len = len*textsize;
^~~~~~~~
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: note: suggested alternative: ‘textsize_x’
len = len*textsize;
^~~~~~~~
textsize_x
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawRightString(char*, int16_t, int16_t, int16_t)’:
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: error: ‘textsize’ was not declared in this scope
len = len*textsize;
^~~~~~~~
C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: note: suggested alternative: ‘textsize_x’
len = len*textsize;
^~~~~~~~
textsize_x
Несколько библиотек найдено для «Adafruit_ILI9341_STM.h»
Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_ILI9341_STM
Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_ILI9341_STM
Несколько библиотек найдено для «Adafruit_I2CDevice.h»
Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_BusIO
Не используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_BusIO-master
Несколько библиотек найдено для «Wire.h»
Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Wire
Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\WireSlave
Не используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\WireSlave
Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Wire
Несколько библиотек найдено для «SPI.h»
Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\SPI
Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\SPI
Несколько библиотек найдено для «Adafruit_GFX_AS.h»
Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS
Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS
exit status 1
Ошибка компиляции для платы Generic STM32F103C series.
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
Попробуйте удалить (запаковать в архив) библиотеку C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_ILI9341_STM
У Вас имеется ряд конфликтов одноименных библиотек Arduino с STM32
Я уже понял, только вот:Arduino: 1.8.12 (Windows 10), Плата:»Generic STM32F103C series, STM32F103CB (20k RAM. 128k Flash), Serial, 72Mhz (Normal), Smallest (default)»
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawUnicode(uint16_t, int16_t, int16_t, int16_t)’:
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: error: ‘textsize’ was not declared in this scope
if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);
^~~~~~~~
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: note: suggested alternative: ‘textsize_x’
if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);
^~~~~~~~
textsize_x
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: error: ‘textsize’ was not declared in this scope
if (textsize==1){
^~~~~~~~
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: note: suggested alternative: ‘textsize_x’
if (textsize==1){
^~~~~~~~
textsize_x
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: error: ‘textsize’ was not declared in this scope
pY+=textsize;
^~~~~~~~
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: note: suggested alternative: ‘textsize_x’
pY+=textsize;
^~~~~~~~
textsize_x
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: error: ‘textsize’ was not declared in this scope
return (width+gap)*textsize; // x +
^~~~~~~~
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: note: suggested alternative: ‘textsize_x’
return (width+gap)*textsize; // x +
^~~~~~~~
textsize_x
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawCentreString(char*, int16_t, int16_t, int16_t)’:
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: error: ‘textsize’ was not declared in this scope
len = len*textsize;
^~~~~~~~
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: note: suggested alternative: ‘textsize_x’
len = len*textsize;
^~~~~~~~
textsize_x
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawRightString(char*, int16_t, int16_t, int16_t)’:
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: error: ‘textsize’ was not declared in this scope
len = len*textsize;
^~~~~~~~
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: note: suggested alternative: ‘textsize_x’
len = len*textsize;
^~~~~~~~
textsize_x
exit status 1
Ошибка компиляции для платы Generic STM32F103C series.
Возникла ошибка при загрузке http://dan.drown.org/stm32duino/package_stm32duino_index.json
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
Adafruit_GFX у меня используется из библиотек арудино, уставите библиотеку http://rcl-radio.ru/wp-content/uploads/2020/06/Adafruit_GFX.zip
Кажется победили. Компиляция прошла успешно. Завтра попробую дисплейчик подключить.
У меня не такой, нужно с пинами разбираться.Большое благодарю!
У меня дисплейчик (2.4″tft lcd shield)оказался на SPFD5408 хотя на пакете китаец указал ILI9341.Их можно как-то подружить?
Под дисплей есть библиотека для STM32 https://github.com/MadeByJK/Adafruit_SPFD5408_8bit_STM32
А SPI никак?
SPI нет в Вашем дисплее.
Эвон оно как,спасибо.
Это же spi дисплей, почему на схеме нет связей портов, на которых аппаратный spi, Ошибка?