TFT Display ili9341 240*320

Доброго дня вам.

Подскажите по дисплею, а именно по подключению встроенной sd карты. Похожую тему к сожелению не нашел.

Вопрос собственно заключается вот в чем. Собственно дисплей подключается стандартно к микроконтроллеру к пинам sck, mosi, rs, reset, cs. И sd карта имеет почти такое же подключение к пинам МК sck, miso, mosi, cs. Про подключение вывода CS написано использовать любой другой свободный вывод, вопрос по подключению к одноименным выводам МК. То есть их можно подключить параллельно? То есть sck дисплея и sd карты на один пин МК, mosi дисплея и mosi sd карты тоже на один пин МК, только вывод CS, sd карты подключить к любому другому Пинк микроконтроллера.

Подскажите пожалуйста. За ранее спасибо.

CS это пин выбора чипа. Какой чип выбран тот и работает с шиной. Не выбранные отключаются. Поэтому sck, mosi, miso, reset идут параллельно ко всем чипам. CS для каждого чипа отдельный. В программе надо следить что бы пины CS не были активны одновременно.

1 лайк

Спасибо за разъяснение.

у меня такие пины у esp32

// === Пины SPI (HSPI) ===
#define TFT_MOSI  13 
#define TFT_SCLK  14 
#define TFT_CS    15  
#define TFT_DC     2 
#define TFT_RST    4  
#define TFT_BL    12  

// === Настройки SD-карты (VSPI) ===
#define SD_CS    5  // GPIO5
#define SD_SCLK 18  // GPIO18
#define SD_MOSI 23  // GPIO23
#define SD_MISO 19  // GPIO19

Спасибо за инфу.

То есть вы используете две разные линии SPI для работы и дисплея и sd карты?

В моем случае управлять дисплеем будет ардуинка

Liv да, если есть почему не использовать ?
мне надо было очень быстро выводить фото с sd карты, и я так сделал…
пины все стандартные, а на других пинах была меньше скорость… а тут я ее еще с помощью библиотеки tft espi задавал скорость… она выходила больше чем в других библиотеках, в моем случае так оказалось лучше, а в вашем не знаю…

User_Setup.h той библиотеки вот для этого дисплея https://roboshop.spb.ru/display/tft-displei/1-8-tft-display

#ifndef USER_SETUP_H
#define USER_SETUP_H

// === Настройка дисплея ST7735 ===
#define ST7735_DRIVER
#define TFT_WIDTH  128
#define TFT_HEIGHT 160
#define ST7735_REDTAB160x128  // Для дисплеев с красной платой (128x160)


// Вариант 1: BGR (чаще для ST7735)
#define TFT_RGB_ORDER TFT_BGR
#define TFT_INVERSION_ON  // Включить инверсию

// Вариант 2: RGB
#define TFT_RGB_ORDER TFT_BGR//RGB
#define TFT_INVERSION_OFF

// === Пины SPI (HSPI) ===
#define TFT_MOSI  13  // GPIO13 (D7)
#define TFT_SCLK  14  // GPIO14 (D5)
#define TFT_CS    15  // GPIO15 (D8) - Chip Select
#define TFT_DC     2  // GPIO2  (D4) - Data/Command
#define TFT_RST    4  // GPIO4  (D2) - Reset (можно подключить к +3.3V, если есть кнопка Reset)
#define TFT_BL    12  // GPIO12 (D6) - Подсветка (PWM)

// === Настройки SPI ===
//#define SPI_FREQUENCY  4000000  // Максимум для ST7735
//#define SPI_READ_FREQUENCY  40000000
#define SPI_FREQUENCY  40000000  // 40 MHz - максимум для ST7735
// или
#define SPI_FREQUENCY  27000000  // 27 MHz - стабильнее
// === Подсветка ===
#define TFT_BL   12  // Управление подсветкой через PWM

// === Настройки SD-карты (VSPI) ===
#define SD_CS    5  // GPIO5
#define SD_SCLK 18  // GPIO18
#define SD_MOSI 23  // GPIO23
#define SD_MISO 19  // GPIO19

// === Поддержка шрифтов ===
#define LOAD_GLCD    // Стандартный шрифт 5x7
#define LOAD_FONT2   // Шрифт 8x16
#define LOAD_FONT4   // Шрифт 16x26
#define LOAD_GFXFF   // Гибкие шрифты
#define SMOOTH_FONT  // Сглаженные шрифты

// === Поддержка JPEG с SD ===
#define LOAD_JPG

#endif

не совсем тот файл))) но нужный я быстро не найду))) если почитаете описание библиотеки может разберетесь…

Ну я планирую с sd карты загружать фоновое изображение аналоговых приборов, и два файла иконок.

Вот пока только проект накидал, собрал железо все, на днях планирую монтировать все и протестить.

Не знаю как фоновое изображение будет загружаться, с какой скоростью и что вообще из этого получится..

Ну тут целиком интерфейс, стрелки и цифровые значения , надписи будет отрисовывать ардуинка, фоновое изображение только самих аналоговых приборчиков

без проблем, я выводил почти видео со скоростью в 2 раза медленнее чем на пк)))
а вам только стартовое загрузить, а потом лучше просто управлять ползунками отображающие скорость, или температуру…
но я в ваш дисплей не вникал… можно тоже наверное без проблем, еще и анимацию сделать огоньку и снежинке, такие маленькие вовсе должны быстро выводиться…

1 лайк

Анимация будет мигание😄 как огонечка так и снежиночки надо уже начинать собирать, а то времени много потерял пока железо ждал и ещё проблема в корпусе, придеться печатать корпус

А подскажите ещё момент. Загрузка файлов изображения в каком формате?

BMP или RAW. Очень странно, если создаёшь изображение в PNG, а потом его конвертирует в BMP или RAW, игл размер увеличивается в два раза. Пробовал перекодировать в 16ричный код тоже такая же фигня получается.

jpg jpeg https://github.com/arduinopavlodar/JPEGDecoder на пк вроде другой декодер, который еще уменьшает размер файла… и умеет его читать

Я пробовал через онлайн конвертор размер файла получается очень большой, потом скачал программу для конвертации, но все равно размер увеличивается, и тут получается чем больше размер файла тем он больше будет прогружаются в дисплей.

нечего не понял))) я просто закидывал файл на sd карту с нужным размером и выводил… при необходимости можно указать в каком месте экрана вывести…
можно так же и уменьшать размер перед выводом, но это дольше…
вы с помощью библиотеки выводите ?
c sd карты а не помещали фото в память мк ?

еще я экономно писать не умею, и экран у вас большой…

но можно применить двойную буферизацию, или просто загружать рисунок в озу сначала, перед выводом что ускорит… если дело в скорости…
себе я так делаю…

Я вот просто пока не догоняю как этот процесс загрузки изображения в дисплей происходит😄. И флешка и дисплей подключены к одним и тем же пинам получается, и по моему мнению картинка должна перекачиваться с флешки через МК в дисплей или как. Мне сам процесс интересен по скорости загрузки картинки.

То есть фоновую картинку на которой все будет отображаться я отрисовывать в размер дисплея 320*240. И координаты начала отрисовки картинки стоят 0,0. Тестовую модель ещё не собирал. Все пока валяется в коробочке. На завтра планирую подключить ардуины, дисплей, энкодер….ну и и.д, и залить скетч для проверки, ну и файлы надо залить в SD.

И сразу же вопрос по файлам на SD, их можно туда просто закинуть без всяких папок или создать все же каталог и разместить изображения в каталоге.

Блин, как сообщения редактировать😂 а то этот интеллектуальный ввод всякую фигню пишет

я так понимаю вы даже примеры в библиотеки не открывали ? где вроде как есть пример даже для вашего дисплея ?)))
https://github.com/arduinopavlodar/JPEGDecoder/tree/main/examples я могу только посоветовать что я использовал и что делал, все как вы реализуете так и будет выводиться))) я если честно уже забыл сам как ей пользоваться, и изменял ли какие в ней файлы…

но если что есть и такая https://github.com/Bodmer/TJpg_Decoder тоже ее использовал без проблем

Благодарю. Как скидаю железо в кучу, подключу все элементы отпишусь что получилось в что нет

Удивительно, правда?