Подключение TFT дисплея по FSMC к STM32, на примере SSD1963 .
Дело было так, один из посетителей сайта выслал мне в качестве подарка 5 дюймовый TFT дисплей, который управляется драйвером SSD1963. Дней через десять посылка прибыла, но на коробке, в которую он был упакован, была вмятина, а сам дисплей был разбит. Написал об этом отправителю и он сразу же заказал на моё имя такой же дисплей на ebay, за что ему спасибо.
Прошло не более двух недель с момента заказа и вот дисплей у меня, подключать его к Atmega16, не имеет смысла, уж очень он большой(800x480 пикселей ), поэтому решил сразу подключить его к имеющейся у меня плате с STM32F103VET6 на борту, конечно же по FSMC.
Если кто не знаком с FSMC, советую к прочтению эту статью так, как далее не будет рассматриваться принцип работы шины и тонкости подключения.
Схему подключения взял из статьи указанной выше.
По питанию дисплея обязательно поставить электролит или тантал номиналом 10uF, зашунтировав его керамикой 0.1uF, иначе дисплей будет мерцать!!!!
Статей как заставить работать дисплей, пользуясь даташитом, на сайте уже несколько штук, по этому, предлагаю пропустить этот момент, и сразу перейти к функциям, которые были реализованы.
Прямая.
Функция рисует прямую линию, заданного размера и цвета по двум точкам.
Ещё для удобства были написаны две функции одна из которых рисует горизонтальную, вторая — вертикальную линию.
Прямоугольник.
Функции предназначены для рисования закрашенного и не закрашенного прямоугольника с заданными параметрами. У не закрашенного прямоугольника можно также указать толщину линий с помощью параметра size.
Окружность.
Функция позволяет рисовать закрашенную и не закрашенную окружность, отвечает за это параметр fill( 1 — закрашенная окружность, 0 — не закрашенная).
Прямоугольник с закругленными краями.
Функции предназначены для рисования закрашенного и не закрашенного прямоугольника с закруглёнными краями.
Треугольник.
Функция рисует треугольник по трём точкам со сторонами заданной толщины и цвета.
Символ.
Функция рисует символ заданного размера, цвета, на заданном фоне, из указанной таблицы символов. То есть можно создать несколько таблиц с шрифтами разных стилей и по необходимости использовать нужный. Правда есть одно "но": размер шрифта в таблице должен быть 8х8 пикселей, увеличить размер шрифта при отрисовке можно с помощью аргумента size.
На этом всё, в архиве проект в Keil uVision для вывода картинки как на превью, в настройках проекта во вкладке target установить Xtal = 8MHz.
Для желающих быстро проверить работает ли их дисплей, оставляю тут прошивку для STM32F103VET6
Дисплей был куплен тут.
Прошло не более двух недель с момента заказа и вот дисплей у меня, подключать его к Atmega16, не имеет смысла, уж очень он большой(800x480 пикселей ), поэтому решил сразу подключить его к имеющейся у меня плате с STM32F103VET6 на борту, конечно же по FSMC.
Если кто не знаком с FSMC, советую к прочтению эту статью так, как далее не будет рассматриваться принцип работы шины и тонкости подключения.
Схему подключения взял из статьи указанной выше.
По питанию дисплея обязательно поставить электролит или тантал номиналом 10uF, зашунтировав его керамикой 0.1uF, иначе дисплей будет мерцать!!!!
Статей как заставить работать дисплей, пользуясь даташитом, на сайте уже несколько штук, по этому, предлагаю пропустить этот момент, и сразу перейти к функциям, которые были реализованы.
Прямая.
Функция рисует прямую линию, заданного размера и цвета по двум точкам.
void TFT_Draw_Line (uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint8_t size,uint16_t color);
Ещё для удобства были написаны две функции одна из которых рисует горизонтальную, вторая — вертикальную линию.
void TFT_Draw_HLine(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint16_t color);
void TFT_Draw_VLine(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint16_t color);
Прямоугольник.
Функции предназначены для рисования закрашенного и не закрашенного прямоугольника с заданными параметрами. У не закрашенного прямоугольника можно также указать толщину линий с помощью параметра size.
void TFT_Draw_Rectangle(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint8_t size, uint16_t color);
void TFT_Draw_Fill_Rectangle(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint16_t color);
Окружность.
Функция позволяет рисовать закрашенную и не закрашенную окружность, отвечает за это параметр fill( 1 — закрашенная окружность, 0 — не закрашенная).
void TFT_Draw_Circle(uint16_t x, uint16_t y, uint8_t radius, uint8_t fill, uint8_t size, uint16_t color);
Прямоугольник с закругленными краями.
Функции предназначены для рисования закрашенного и не закрашенного прямоугольника с закруглёнными краями.
void TFT_Draw_Round_Rect(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint16_t r, uint8_t size, uint16_t color);
void TFT_Draw_Fill_Round_Rect(uint16_t x, uint16_t y, uint16_t length, uint16_t width, uint16_t r, uint16_t color);
Треугольник.
Функция рисует треугольник по трём точкам со сторонами заданной толщины и цвета.
void TFT_Draw_Triangle( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint8_t size, uint16_t color);
Символ.
Функция рисует символ заданного размера, цвета, на заданном фоне, из указанной таблицы символов. То есть можно создать несколько таблиц с шрифтами разных стилей и по необходимости использовать нужный. Правда есть одно "но": размер шрифта в таблице должен быть 8х8 пикселей, увеличить размер шрифта при отрисовке можно с помощью аргумента size.
void TFT_Draw_Char(uint16_t x, uint16_t y, uint16_t color, uint16_t phone, const uint8_t *table, uint8_t ascii, uint8_t size);
На этом всё, в архиве проект в Keil uVision для вывода картинки как на превью, в настройках проекта во вкладке target установить Xtal = 8MHz.
Для желающих быстро проверить работает ли их дисплей, оставляю тут прошивку для STM32F103VET6
Дисплей был куплен тут.
Похожие статьи