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

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

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

Отже, ви вже ознайомилися з двома попередніми статтями, тому відразу приступимо до справи.

Відкриваємо наш on-line compiler. Створюємо нову програму.

image

Назвемо її, наприклад, ili9341_display_test.

image

Імпортуємо в наш проект офіційну бібліотеку mbed.

image

Знаходимо і імпортуємо.

image

Перевіряємо, що імпортується в наш проект.

image

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

У пошуку за запитом «ili9341» знаходимо бібліотеки від Peter Drescher.

image

Ще нам знадобляться шрифти, імпортуємо так само, за запитом в пошуку «TFT_fonts».

image

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

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

image

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

image

Тепер у нас є проект з двома бібліотеками, набором шрифтів і головним файлом програми.
Клацаємо мишею по main.cpp пишемо вставляємо наш код.

image

А ось і код.

#include "mbed.h" //включаємо основну бібліотеку mbed
#include "SPI_TFT_ILI9341.h" //включаємо бібліотеку нашого дисплея на чіпі ili9341
#include "Arial28x28.h" //включаємо обраний шрифт 
SPI_TFT_ILI9341 TFT(D11, D12, D13, D8, D9, D10,"TFT"); // (mosi, miso, sck, cs, reset, dc)

int main()
{
TFT.set_orientation(3); // вибираємо орієнтацію дисплея
TFT.background(Blue); // вибираємо колір фону (словами)
TFT.foreground(0xFFFF); // вибираємо колір шрифту (або у форматі rgb565)
TFT.cls(); // заливаємо екран кольором фону
TFT.set_font((unsigned char*) Arial28x28); // вибираємо наш шрифт
TFT.locate(30, 100); // координати початку тексту (горизонталь, вертикаль)
TFT.printf("Hello habrahabr.ru"); // виводимо на екран
}


Як же підключити дисплей? Та дуже просто!
Заходимо на сторінку нашої плати (у мене це ST-Nucleo-F401RE).
Знаходимо картинку Arduino-compatible Headers.

image

Це терморегулятори нашій плати з так знайомими всім Arduino-любителям назвами пінів.
Знаходимо контакти інтерфейсу SPI.
SCK — D13
MISO — D12
MOSI — D11
Ще нам знадобляться контакти CS, reset, DC, я використовував відповідно D8, D9, D10.
У нашій програмі це вказується у вигляді рядка:

SPI_TFT_ILI9341 TFT(D11, D12, D13, D8, D9, D10,"TFT"); // (mosi, miso, sck, cs, reset, dc)

Підключаємо їх до відповідних контактів на нашому дисплеї.
Так само дисплей необхідно підключити до харчування.
Я використовував 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.

Have fun!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.