- PVSM.RU - https://www.pvsm.ru -
На Хабре уже есть две публикации о платформе STM32 Nucleo [1] и разработке в среде mbed.org [2]. Это «обзор платформы» [3] и «быстрый старт» [4]. Я же в данной публикации расскажу, как быстро подключить недорогой модуль TFT LCD на базе чипа ILI9341. Статья будет полезна и любителям Arduino, желающих перейти на более современные и мощные микроконтроллеры, используя уже накопленные знания.
Ознакомится с ценами на дисплей вы можете, например, на Ebay [5].
Я буду использовать плату NUCLEO-F401RE [6], вы же можете использовать любую из данной линейки.
Итак, вы уже ознакомились с двумя предыдущими статьями, поэтому сразу приступим к делу.
Открываем наш on-line compiler [7]. Создаём новую программу.
Назовём её, например, ili9341_display_test.
Импортируем в наш проект официальную библиотеку mbed [8].
Находим и импортируем.
Проверяем, что импортируется в наш проект.
Таким же образом импортируем графическую библиотеку для нашего дисплея.
В поиске по запросу «ili9341» находим библиотеку [9] от Peter Drescher.
Ещё нам понадобятся шрифты, импортируем так же, по запросу в поиске «TFT_fonts».
Тем, кто хочет использовать любой другой шрифт или разработать свой, есть в помощь программа GLCD font creator [10]. Программа бесплатна, но для корректного импорта приходится шаманить, а это уже другая тема.
Теперь создадим главный файл, в котором будет наша программа.
Назовём его main.cpp.
Теперь у нас есть проект с двумя библиотеками, набором шрифтов и главным файлом программы.
Щелкаем мышью по main.cpp и пишем вставляем наш код.
А вот и код.
#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 [11]).
Находим картинку Arduino-compatible Headers.
Это распиновка нашей платы с так знакомыми всем 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».
Здесь [9] вы найдёте примеры кода и использования, это официальная страница библиотеки SPI_TFT_ILI9341.
Здесь [12] описаны функции работы с данной библиотекой, такие как построение линий, квадратов и прочего.
Здесь [13] много полезной информации по mbed.
Have fun!
Автор: sinrab
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/arduino/72587
Ссылки в тексте:
[1] STM32 Nucleo: http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847?sc=stm32nucleo
[2] mbed.org: http://mbed.org/
[3] «обзор платформы»: http://habrahabr.ru/post/230651/
[4] «быстрый старт»: http://habrahabr.ru/post/230931/
[5] Ebay: http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR2.TRC1.A0.H0.Xili9341&_nkw=ili9341&_sacat=0
[6] NUCLEO-F401RE: http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF260000
[7] on-line compiler: https://developer.mbed.org/compiler/
[8] официальную библиотеку mbed: http://developer.mbed.org/users/mbed_official/code/mbed/
[9] библиотеку: http://developer.mbed.org/users/dreschpe/code/SPI_TFT_ILI9341/
[10] GLCD font creator: http://www.mikroe.com/glcd-font-creator/
[11] ST-Nucleo-F401RE: http://developer.mbed.org/platforms/ST-Nucleo-F401RE/
[12] Здесь: http://developer.mbed.org/users/dreschpe/code/SPI_TFT_ILI9341/docs/b2b3e5430f81/classSPI__TFT__ILI9341.html
[13] Здесь: https://developer.mbed.org/handbook/Homepage
[14] Источник: http://habrahabr.ru/post/241409/
Нажмите здесь для печати.