Spfd5408 как подключить
Перейти к содержимому

Spfd5408 как подключить

Тестируем дисплей 2.4” с сенсорным дисплеем с ридером microSD карт

Тестируем дисплей 2.4” с сенсорным дисплеем с ридером microSD карт, выполненный в виде шилда для Arduino Uno или Arduino Mega.

Для начала проверим работу самого экрана, а точнее отображение на нем текста, и различных геометрических фигур, поворот дисплея и т.д.

Устанавливаем LCD шилд на плату, скачиваем библиотеку и загружаем пример «SPFD5408-graphictest»

Видео теста графики

Тест сенсорной панели:

Теперь проверим работу сенсорной панели. Первое что необходимо сделать это произвести калибровку. За работу сенсорной панели отвечают четыре пина Ардуино: А2, А3, 8, 9. Загружаем скетч калибровки из библиотеки: «carduino_spfd5408_calibrate».

Стилусом нажимаем поочередно точки на экране:

В результате мы получили значения для осей X и Y. Запишем эти данные, они нам пригодятся. Заодно проверили все ли правильно работает.

Теперь можем загрузить отдельно скетч для рисования – «carduino_spfd5408_tftpaint». Перед загрузкой скетча в плату укажем наши результаты калибровки.

// Calibrate values УКАЖИТЕ ВАШИ ЗНАЧЕНИЯ ПОСЛЕ КАЛИБРОВКИ

#define TS_MINX 204

#define TS_MINY 841

#define TS_MAXX 979

#define TS_MAXY 70

Теперь заливаем скетч в Ардуино. Рисуем разными цветами.

Тест вывода полноцветной BMP картинки.

Так как модуль оснащен ридером microSD карты, то мы можем загрузить на карту нужные нам изображения в проектах.

Сначала рассмотрим работу модуля microSD с платой Arduino Uno. Копируем файлы из папки bitmaps на microSD карту и карту устанавливаем в слот шилда. Загружаем скетч из примеров «carduino_spfd5408_tftbmp». Проверяем.

С Arduino Mega все несколько сложнее. Дело в том, что ридер SD карт использует шину SPI, а у Меги пины SPI отличаются от UNO. У Меги для SPI выделены пины 50, 51, 52 и 53. Для работы с microSD мы можем использовать только программный SPI. Для этого нам нужна библиотека SD. Дело в том, что в разных версиях компилятора находятся разные версии библиотеки. Заставить работать корректно удалось только с библиотекой из версии 1.0.5 Arduino IDE. Эту библиотеку можно скачать тут.

Скачиваем библиотеку и копируем в папку libraries IDE. Далее редактируем файл Sd2Card.h который находится тут: ArduinolibrariesSDutility. В этом файле указываем 1 для #define MEGA_SOFT_SPI.

Теперь загружаем «carduino_spfd5408_tftbmp» в Arduino Mega 2560

Как подключить модуль TFT LCD от mcufriend.com

Давным давно покупал я через eBay кучу компонентов для Arduino, в числе которых был TFT LCD дисплей 2,4″ от компании mcufriend.com.

Для работы необходимы несколько библиотек. Первая — это библиотека от Adafruit для обработки графики, подходит не только для дисплеев от Adafruit, но и для многих других. Скачать последнюю версию можно отсюда: https://github.com/adafruit/Adafruit-GFX-Library

Библиотека для самого экрана: https://github.com/adafruit/TFTLCD-Library

И библиотека для обработки нажатий: https://github.com/adafruit/Touch-Screen-Library

Подключаем все эти библиотеки в Arduino IDE, загружаем образец graphicstest из TFTLCD-Library и видим белый экран.

Экран, который достался мне, построен на базе чипсета S6D0154, а библиотека Adafruit его не распознает. Нашел библиотеку, которая поддерживает мой чипсет и еще несколько (ILI9341, ILI9327 b ILI9488). Скачать можно отсюда: https://github.com/samuraijap/TFTLCD-Library
Ей заменяем одноименную библиотеку от Adafruit.

По умолчанию библиотека для экранов 2.8″ и на более маленьких экранах пропадает часть изображения. Если размер экрана 2.4″, как и у меня, то в файле TFTLCD-Library/Adafruit_TFTLCD.cpp надо закомментировать строчки:

Также, может быть интересна следующая библиотека для чипсета SPFD5408:
https://github.com/JoaoLopesF/SPFD5408
По сути, это библиотека от Adafruit, доработанная для SPFD5408. Плюс в ней присутствует возможность калибровки тач-панели.

4 комментария

Мне вот тоже такой экранчик китайцы прислали, никак не могу его оживить, белый экран. Несколько библиотек перепробовал, не получается.

Запустите graphicstest из библиотеки Adafruit или этой https://github.com/samuraijap/TFTLCD-Library и посмотрите через монитор последовательного порта какой чипсет определяется.

мне помогло,огромное спасибо автору!

Спасибо валялся год не меньше экран сейчас попробовал оживить по вашей статье все пашет

TFT-shield (2.4) & STM32L DISCOVERY

Еще один LCD в моей "копилке".Предназначен для Arduino (соответствующее расположение пинов),причем качество изготовления шилда ,мягко говоря — неочень. Хотя на мой взгляд,за те деньги ,за которые я купил "девайс",он является хорошей альтернативой всяким цветным дисплеям от мобильных телефонов (в которых надо паять шлейфа) + немаловажная деталь слот для SD-карты.Купил чисто поиграться — подключить его к STM32.Подключается шилд по 8-ми битной шине. Продавец утверждал о наличии встроеного контролера st7781.Но на практике оказался ILI9325.

Вообще с контролером LCD поначалу были полные непонятки,"китай" знаете ли. Пока разобрался ,пришлось оснавательно проштудировать инет.Сначала работал с платой STM32F4 Discovery ."Перелопатил" немало примеров,которые удалось вытянуть из сети.Остановился на варианте http://pastebin.com/wbn9Eqpx .Его основным достоинством ,на мой взгляд,является простота (без всяких там FSMC и ОС) — простой "ногодрыг".

Также подключал дисплей к плате STM32F4 Discovery через FSMC,без ОС (https://github.com/stm32f4/library/tree/master/ILI9325).Код работает.

Дабы не мучить F4 Discovery,своими эксперементами — решил перейти на платформу STM32L Discovery .На плате установлен микроконтролер STM32L152RBT6,в котором отсутсвует интерфейс FSMC.Хотя ,к слову, он имеется на более "мощных" чипах L-серии,например плата STM32L152-EVAL (Evaluation board for STM32L1 series — with STM32L152VB MCU).Поэтому в качестве основы использовал код http://pastebin.com/wbn9Eqpx.

Первое ,что я зделал — это разогнал STM32L Discovery до максимальных 32 МГц,от встроеного генератора (на плате не установлен кварцевый резонатор),следуя рекомендациям отсюда http://chipspace.ru/stm32l-max-sysclk/.Скорость работы LCD зависит от скорости МК.Это особенно заметно после перехода с STM32F4 Discovery (168 МГц) на STM32L Discovery (32 Мгц) .

Сам код с источника http://pastebin.com/wbn9Eqpx ,я разделил на два файла TFT_lcd.с и TFT_lcd.h ,также в библиотеке имеется файл шрифта font.h .

Кроме того код позволяет посмотреть ,на каком контролере работает LCD.В функции init файла TFT_lcd.с ,за это отвечают строки

if(!IC_CODE)
<
while(!IC_CODE)
<
IC_CODE = readRegister(0x0); //WAIT UNTIL KNOWN LCD
>
>

Device Code Kontroler Wyświetlacz
0x9320 ILI9320
0x9325 ILI9325
0x9328 ILI9328
0x9331 ILI9331
0x8999 SSD1298
0x8989 SSD1289 ITDB02-3.2S, HY32D
0x7783 ST7781
0x4531 LGDP4531
0x5408 SPFD5408B
0x1505 0x0505 R61505U
0x0046 HX8346A
0x0047 HX8347D
0x0047 HX8347A
0x4535 LGDP4535
0x9919 SSD2119
0x0052 HX8352-A ITDB02-3.2WD
0x1121 S1D19122 ITDB02-2.4E

Далее, еще одни "грабли" на которые я попал .Пин RESET LCD должен быть поключен к пину NRST платы Discovery.

Кроме того, пины LCD_PINS (D0. D8) подключены к одному порту.Так-же к одному порту поддключены пины LCD_CONT .В моем случае LCD_PINS (D0. D8) — порт С , LCD_CONT (CS ,RS , WR ,RD) — порт В .Пины прописываются в файле TFT_lcd.h :

#define LCD_IOP GPIOB //LCD_PINS
#define LCD_CTP GPIOC //LCD_CONT
#define LCD_PINS (GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)
#define LCD_CONT (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)

#define CS GPIO_Pin_0
#define RS GPIO_Pin_1
#define WR GPIO_Pin_2
#define RD GPIO_Pin_3

Схема подключения :

Саму библиотеку пришлось немного переделать.Дело в том ,что функция drawString ,которая отвечает за вывод строки пригодна разве,что для разового вывода символов.На практике ,при выводе , например постоянно меняющейся переменной, один символ накладывается на другой.Для себя решение нашел в том,что прежде чем вывести символ, место под него закрашивается под цвет фона .В программе появились две новые функции , которые я назвал drawChars и drawStrings .Теперь кроме цвета сивола, нужно указать цвет фона ,например:

drawStrings("Hello World",10,10, 2, WHITE, BLACK);

где WHITE — цвет символа ;

BLACK — цвет фона ;

Это хотя полностью и не решает проблему (заметно некоторое мерцание), но все же позволяет работать с переменными.Далее предлагаю сообществу тестовый проект, где кроме стандартных функций вывода символов и геометрических фигур, организован вывод на экран дисплея часов реального времени (встроеных в STM32L).

PS. Вообще-то библиотека нуждается в некоторой доработке,заинтересованых милости прошу на форум — http://radiomanoff.at.ua/forum/4-1-1.

WARNING . Осторожно. Попался точно такой-же "шилд" , но с контролером ILI9341.

О его подключении к STM32L Discovery во второй части — tft_shield_2_4_stm32l_discovery_part_2 .

STM32 Nucleo. Подключаем TFT LCD на базе чипа ILI9341

image
На Хабре уже есть две публикации о платформе STM32 Nucleo и разработке в среде mbed.org. Это «обзор платформы» и «быстрый старт». Я же в данной публикации расскажу, как быстро подключить недорогой модуль TFT LCD на базе чипа ILI9341. Статья будет полезна и любителям Arduino, желающих перейти на более современные и мощные микроконтроллеры, используя уже накопленные знания.

Ознакомится с ценами на дисплей вы можете, например, на Ebay.
Я буду использовать плату NUCLEO-F401RE, вы же можете использовать любую из данной линейки.

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

Открываем наш on-line compiler. Создаём новую программу.

Назовём её, например, ili9341_display_test.

Находим и импортируем.

Проверяем, что импортируется в наш проект.

Таким же образом импортируем графическую библиотеку для нашего дисплея.

В поиске по запросу «ili9341» находим библиотеку от Peter Drescher.

Ещё нам понадобятся шрифты, импортируем так же, по запросу в поиске «TFT_fonts».

Тем, кто хочет использовать любой другой шрифт или разработать свой, есть в помощь программа GLCD font creator. Программа бесплатна, но для корректного импорта приходится шаманить, а это уже другая тема.

Теперь создадим главный файл, в котором будет наша программа.

Назовём его main.cpp.

Теперь у нас есть проект с двумя библиотеками, набором шрифтов и главным файлом программы.
Щелкаем мышью по main.cpp и пишем вставляем наш код.

Как же подключить дисплей? Да очень просто!
Заходим на страничку нашей платы (у меня это ST-Nucleo-F401RE).
Находим картинку Arduino-compatible Headers.

Это распиновка нашей платы с так знакомыми всем Arduino-любителям названиями пинов.
Находим контакты интерфейса SPI.
SCK — D13
MISO — D12
MOSI — D11
Ещё нам понадобятся контакты CS, reset, DC, я использовал соответственно D8, D9, D10.
В нашей программе это указывается в виде строки:

Подключаем их к соответствующим контактам на нашем дисплее.
Так же дисплей необходимо подключить к питанию.
Я использовал VCC — +5v (на плате дисплея стоит стабилизатор на 3.3 вольта, если его замкнуть предусмотренной перемычкой, то можно использовать питание 3.3 вольта).
GND — GND
LED — подсветка, рассчитана на 3.3 вольта, поэтому подключаем к контакту +3.3v.
Логика дисплея работает от 3.3 вольт, как и наш микроконтроллер, поэтому использовать конвертер логических уровней, как в случае с arduino uno, нам не потребуется.

Теперь можно скомпилировать нашу программу, для этого в онлайн компиляторе жмём кнопку Compile и сохраняем полученный файл прямо на нашу плату (при подключенной плате у нас появляется съёмный носитель «NUCLEO»).
Если всё сделано верно, то увидим на экране надпись «Hello habrahabr.ru».

Полезные ссылки

Здесь вы найдёте примеры кода и использования, это официальная страница библиотеки SPI_TFT_ILI9341.
Здесь описаны функции работы с данной библиотекой, такие как построение линий, квадратов и прочего.
Здесь много полезной информации по mbed.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *