STM32 + TFT-дисплей SPI 320×240 (ILI9341C)

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);
}

Comments

  1. 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.

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    «Показать подробный вывод во время компиляции»

  2. Попробуйте удалить (запаковать в архив) библиотеку C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_ILI9341_STM

    У Вас имеется ряд конфликтов одноименных библиотек Arduino с STM32

  3. Я уже понял, только вот: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

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    «Показать подробный вывод во время компиляции»

  4. Кажется победили. Компиляция прошла успешно. Завтра попробую дисплейчик подключить.
    У меня не такой, нужно с пинами разбираться.Большое благодарю!

Добавить комментарий

Войти с помощью: