Разработка графических устройств на STM32. Выбираем графическую библиотеку

23 октября 2018

системы безопасностипотребительская электроникаавтоматизацияинтернет вещейSTMicroelectronicsстатьяинтегральные микросхемыбеспроводные технологиисредства разработки и материалы

Начатую еще в прошлом году серию статей под условным названием «STM32 + периферия = LOVE» [1, 2, 3] продолжает обзор графических библиотек, позволяющих упростить и ускорить вывод на рынок готового изделия. Рассмотрены универсальная библиотека STemWin и более сложные, но предназначенные для топовых серий STM32 библиотеки Embedded wizard и TouchGFX.

Микроконтроллеры STM32 популярны среди отечественных разработчиков благодаря хорошему сочетанию цены, производительности, набора периферийных устройств и интерфейсов. Тенденции рынка встраиваемых устройств таковы, что во многих случаях требуется наличие графического пользовательского интерфейса или, как минимум, интуитивно понятное отображение данных или визуализации процессов. С аппаратной точки зрения в семействе STM32 представлены микроконтроллеры со специализированными периферийными блоками, которые используются для работы с TFT-дисплеями: FSMC, LTDC, DSIHOST, Chrom-ART Accelerator, Chrom-GRC и JPEG-кодек. Во многих случаях они позволяют существенно разгрузить процессорное ядро [3].

При разработке устройств с графическим интерфейсом перед разработчиком встает проблема выбора между реализацией собственных графических примитивов и библиотек, и применением готовых библиотек. Первый путь приведет к необходимости написания кода для отрисовки двух-/трехмерных объектов, реализации функций прозрачного слоя, решению вопросов наложения объектов в трехмерных сценах и многому другому, не считая необходимости реализации низкоуровневых драйверов. Применение готовых библиотек потребует от разработчика перехода к определенному стилю кода, характерному для целевой библиотеки. Дополнительно разработчику необходимо будет изучить специфику работы с готовой библиотекой – порядок инициализации функций и структур данных, наличие callback-функций, задействованные ресурсы контроллера.

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

Библиотека STemWin

Графическая библиотека для встраиваемых устройств STemWin, представленная компанией Segger, может работать и в однозадачном, и в многозадачном окружениях с проприетарной операционной системой или с любой из коммерческих RTOS. Библиотека может быть настроена для работы с любым устройством отображения – дисплеем или экраном, – вне зависимости от типа контроллера дисплея и целевого контроллера [4]. Пробная полнофункциональная версия библиотеки доступна на сайте производителя после регистрации.

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

При разработке программного обеспечения обычно возникает выбор между подключением к проекту набора внешних файлов и созданием библиотеки. Если используемый инструментарий поддерживает так называемую «умную» сборку (smart linking), при которой в исполняемый код попадают только структуры и функции, реально задействованные в коде проекта, то особой необходимости в формировании специализированной библиотеки нет. В противном случае все прикрепленные к проекту файлы и функции в них будут скомпилированы и собраны в бинарном коде проекта, который в итоге будет иметь неоправданно большой размер.

В общем случае процедура включения STemWin в проект следующая: подключаются файлы ядра библиотеки, драйвер экрана, используемые шрифты и все дополнительные модули STemWin, которые планируется использовать.

Следующим шагом является конфигурирование STemWin. Задаются следующие параметры:

  • размер памяти, отводимый под STemWin;
  • драйвер экрана;
  • процедуры преобразования цветов;
  • процедуры инициализации контроллера экрана;
  • использование аппаратных ускорителей;
  • прикладные задачи, работающие с графикой.

STemWin поставляется с набором примеров и руководств по применению, которые помогают начать работать с библиотекой.

Партнерство с Segger Microcontroller GmbH & Co. KG позволяет компании STMicroelectronics предоставить потребителям своих микроконтроллеров библиотеку STemWin [5].

Библиотека STemWin представляет собой комплексное решение для работы с графикой, обладающее богатым набором функций, таких как декодирование форматов JPG, GIF и PNG, поддержка виджетов (флажки, кнопки и прочее) и сервера VNC. Это позволяет реализовывать функционал удаленного дисплея. Предлагается также инструментарий (например, GUIBuilder) для создания диалоговых окон по принципу drag-and-drop. Эта графическая библиотека полностью интегрирована в пакеты прошивки STM32Cube, например, STM32CubeF2, STM32CubeF3 и STM32CubeF4).

Последние версии библиотеки можно найти, скачав ПО STM32Cube.

Структура библиотеки STemWin представлена на рисунке 1.

Рис. 1. Структура библиотеки STemWin

Рис. 1. Структура библиотеки STemWin

Библиотека содержит два драйвера дисплеев (таблица 1):

  • драйвер с прямым доступом LIN-драйвер;
  • драйвер с косвенным доступом – FlexColor-драйвер для работы с экранами с последовательной или параллельной шиной управления.

Список поддерживаемых отладочных плат приведен в таблице 2.

Таблица 1. Возможности драйверов библиотеки STemWin

Драйвер Поддерживаемые контроллеры экранов Поддерживаемое количество бит цветности
LIN-драйвер Драйвер поддерживает любой контроллер дисплея с линейным адресным пространством и шинным интерфейсом. Видеопамять напрямую адресуется адресными линиями процессора. Это означает, что видеопамять напрямую направляется по адресу линий ЦП. 1, 2, 4, 8, 16, 24, 32
FlexColor-драйвер Epson: S1D19122
FocalTech: FT1509
Himax: HX8353, HX8325A, HX8357, HX8340, HX8347, HX8352A, HX8352B, HX8301
Hitachi: HD66772
Ilitek: ILI9320, ILI9325, ILI9328, ILI9335, ILI9338, ILI9340, ILI9341, ILI9342, ILI9163, ILI9481, ILI9486, ILI9488, ILI9220, ILI9221
LG Electronics: LGDP4531, LGDP4551, GDP4525
Novatek: NT39122
OriseTech: SPFD5408, SPFD54124C, SPFD5414D
Raio: RA8870, RA8875
Renesas: R61505, R61516, R61526, R61580
Samsung: S6E63D6, S6D0117
Sitronix: ST7628, ST7637, ST7687, ST7735, ST7712
Solomon: SSD1284, SSD1289, SSD1298, SSD1355, SSD2119, SSD1963, SSD1961, SSD1351
Syncoam: SEPS525
16, 18

Таблица 2. Список отладочных плат, поддерживаемых STemWin

Наименование МК Отладочная плата Интерфейс дисплея Драйвер
STM32F0 STM32091C-EVAL SPI FlexColor
STM32F1 STM3210C-EVAL
STM3210E-EVAL
SPI
FSMC
FlexColor
STM32F2 STM322xG-EVAL FSMC FlexColor
STM32F3 STM32303C-EVALSPI
STM32303E-EVALSPI
STM32373C-EVAL
SPI FlexColor
STM32F4 STM32F412G-DISCO
STM32F413G-DISCO
STM32F429I-DISCO
STM32F4x9I-EVAL
STM32F4xG-EVAL
STM32F446E-EVAL
STM32F469I-EVAL
STM32F469I-DISCO
FMC
FMC
LTDC
LTDC
FSMC
FMC
LTDC/DSI
LTDC/DSI
FlexColor
FlexColor
Lin
Lin
FlexColor
FlexColor
Lin
Lin
STM32F7 STM32F723E-DISCO
STM32F769I-EVAL
STM32F769I-DISCO
STM32F746G-DISCO
STM32F756G-EVAL
FMC
LTDC/DSI
LTDC/DSI
LTDC
LTDC
FlexColor
Lin
Lin
Lin
Lin
STM32H7 STM32H743I-EVAL LTDC Lin
STM32L1 STM32L152D-EVAL FSMC FlexColor
STM32L4 STM32L49I-EVAL-MB1314
STM32L49I-EVAL-MB1315
STM32L49I-DISCO
STM32L476G-EVAL
STM32L496G-DISCO
GFXMMU/LTDC/DSI
LTDC
GFXMMU/LTDC/DSI
FMC
FMC
Lin
Lin
Lin
FlexColor
FlexColor

Пример вывода строки «Hello World!» на экран с использованием средств библиотеки:

void main(void) {

int xPos, yPos;

__HAL_RCC_CRC_CLK_ENABLE();

GUI_Init();

xPos = LCD_GetXSize() / 2;

yPos = LCD_GetYSize() / 3;

GUI_SetFont(GUI_FONT_COMIC24B_ASCII);

GUI_DispStringHCenterAt("Hello world!", xPos, yPos);

while(1);

}

Некоторые этапы разработки графического интерфейса при помощи GUIBuilder представлены на рисунке 2 [6].

Рис. 2. Этапы разработки графического интерфейса при помощи GUIBuilder

Рис. 2. Этапы разработки графического интерфейса при помощи GUIBuilder

открыть картинку в полном формате

Библиотека TouchGFX

TouchGFX — это программная среда, принадлежащая компании Draupner Graphics. В июле 2018 года компания STMicroelectronics приобрела эту компанию. В ближайшем будущем появится полностью бесплатный релиз библиотеки TouchGFX для микроконтроллеров STM32. Но уже сейчас можно скачать библиотеку и попробовать ее возможности.

Библиотека позволяет создавать встроенные графические интерфейсы с высококачественной графикой и плавной анимацией. TouchGFX включает в себя простой в использовании графический редактор TouchGFX Designer с поддержкой технологии drag & drop [7].

TouchGFX включает в себя алгоритмы рендеринга и новые усовершенствованные механизмы рисования, оптимизированные для встраиваемых контроллеров, начиная с серий ARM Cortex M. В итоге достигается высокая производительность графического интерфейса и плавная анимация с частотой кадров 25 и более при типовой загрузке процессорного ядра менее 15%. Поддерживаются разрешения экранов вплоть до WSVGA 1024×600. Список отладочных плат, поддерживаемых TouchGFX, приведен в таблице 3.

На текущий момент поддерживаются следующие контроллеры [8]:

Таблица 3. Список отладочных плат, поддерживаемых TouchGFX

Отладочная плата Микроконтроллер Дисплей, ″ Сенсор
STM32F429-DISCO STM32F429 ARM Cortex M4, 180 MHz 2,4 Резистивный
STM324x9I-EVAL STM32F429 ARM Cortex M4, 180 MHz 4,3 Резистивный
STM324x9I-EVAL STM32F439 ARM Cortex M4, 180 MHz 5,7 Емкостной
STM32469I-EVAL STM32F469I ARM Cortex M4, 180 MHz 4,0 (800×480) Емкостной
STM32F469I-DISCO STM32F469I ARM Cortex M4, 180 MHz 4,0 (800×480) Емкостной
STM32F746G-DISCO STM32F746 ARM Cortex M7, 200 MHz 4,3 Емкостной
STM32746G-EVAL ST STM32F746 ARM Cortex M7, 200 MHz 5,7 Емкостной
STM32756G-EVAL STM32F756 ARM Cortex M7, 200 MHz 5,7 Емкостной
STM32F769I-DISCO Hex file available here STM32F769 ARM Cortex M7, 200 MHz 4,0 Емкостной
STM32769I-EVAL STM32F769 ARM Cortex M7, 200MHz 4,0 Емкостной

TouchGFX отлично работает с системами, где TFT-контроллер интегрирован в MCU с кадровыми буферами во внешней памяти или с системами, которые используют ЖК-дисплей со встроенным буфером и контроллером экрана. Требования к ресурсам TouchGFX зависят от размера и сложности конкретного приложения. Типичные требования к реализации GUI:

  • Внутренняя память:
    • 10…20 кбайт (фреймворк и стек);
    • 1…15 кбайт (виджеты).
  • Внутренний ПЗУ:
    • 20 кбайт (фреймворк);
    • 1…100 кбайт (определения экрана, логика графического интерфейса).
  • Внешняя оперативная память, зависящая от разрешения дисплея и количества кадровых буферов:
    • 320×240 QVGA-дисплеев с двумя кадрами = 307 кбайт;
    • 480×272 WQVGA-дисплеев с двумя кадрами = 522 кбайт;
    • 800×480 WVGA-дисплеев с двумя кадрами = 1,5 Мбайт.
  • Внешняя постоянная память, зависящая от общего размера и количества графических элементов, обычно – 1…8 Мбайт.

TouchGFX может работать с ОС (требуется одна выделенная задача и два семафора) или без нее.

Работа с дизайнером графического интерфейса TouchGFX Designer достаточно проста, но вместе с тем позволяет создавать красочные и элегантные интерфейсы (рисунок 3 [9]).

Рис. 3. Работа TouchGFX Designer

Рис. 3. Работа TouchGFX Designer

открыть картинку в полном формате

Инструментарий Embedded wizard

Embedded wizard [10] является кроссплатформенным инструментом для разработки и создания графических интерфейсов, работающим даже на не очень мощных встраиваемых контроллерах. Embedded Wizard поддерживают серии контроллеров STM32 – F4, F7, F1 и L4 [11, 12]. Разработчикам предлагаются свободная версия библиотеки с ограниченным набором шрифтов, опций, предварительно скомпилированными файлами и ограниченной функциональностью, версия для малого бизнеса – с полной функциональностью, и профессиональная версия с исходными текстами, техподдержкой и возможностью работы с более чем 60 типами контроллеров.

Библиотека упрощает разработку графического интерфейса пользователя и позволяет создавать высокопроизводительные графические интерфейсы с минимальными усилиями. Инструментарий поддерживает применение 2D-графического ускорителя ST Chrom-ART™ в тех микроконтроллерах, в которых он доступен.

С помощью встроенного мастера GUI Builder разработчик может быстро и легко разрабатывать и развертывать HMI. Предлагается набор готовых к использованию и настраиваемых виджетов, таких как кнопки, слайдеры и текстовые представления практически на любой вкус. Возможна настройка их анимации и привязка требуемой функциональности. На основе полученного шаблона генерируется исходный код, который может быть в дальнейшем скомпилирован и загружен в целевой контроллер (рисунок 4 [13]).

Рис. 4. Встроенный мастер GUIbuilder

Рис. 4. Встроенный мастер GUIbuilder

открыть картинку в полном формате

Предлагается достаточно много готовых примеров графических интерфейсов для плат Discovery (серий F4, F7).

Заключение

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

Рассмотренные программные продукты для контроллеров STM32 похожи по функционалу, но несколько отличаются по предлагаемым возможностям. STemWin – самая «демократичная», она позволяет без проблем работать со многими сериями контроллеров, включая бюджетные, но может показаться, что создаваемые с ее помощью интерфейсы несколько простоваты по дизайну (по крайней мере, из типовых примеров и набора элементов).

Embedded wizard и TouchGFX предлагают более комплексные и яркие элементы и шаблоны интерфейсов. Однако они поддерживают, в основном, более мощные серии контроллеров STM32, и для создания более продвинутых интерфейсов требуется приобретение полной версии библиотеки.

Литература

  1. Вячеслав Гавриков. TFT-дисплеи Winstar: новинки, характеристики и особенности подключения. Новости Электроники №11, 2017 г
  2. Вячеслав Гавриков. STM32 + современный TFT-дисплей: варианты на любой вкус. Новости Электроники №1, 2018 г
  3. Вячеслав Гавриков. Разрабатываем устройство с графикой на STM32. Основные возможности периферии. Новости Электроники №5, 2018 г
  4. emWin — The Embedded GUI by SEGGER _ It simply works!
  5. STemWin — Professional graphical stack library enabling the building up of Graphical User Interfaces (GUIs) (AN4323). STMicroelectronics
  6. enWin GUIbuilder Demo
  7. TouchGFX Framework Empower Embedded Displays
  8. Supported Hardware. TouchGFX
  9. TouchGFX Designer Demo
  10. GUI Builder. Embedded Wizard
  11. Real World GUIs for STM32F4. Embedded Wizard
  12. Stunning GUIs for STM32F7 Discovery Board. Embedded Wizard
  13. Embedded Wizard Demo
•••

Наши информационные каналы

О компании STMicroelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
STM32F100CBT6B (ST)