Автор: Вячеслав Гавриков
Источник: Компания КОМПЭЛ – https://www.compel.ru/lib/94730
В работе рассмотрена разработка графических устройств на STM32.
Микроконтроллеры STM32 популярны среди отечественных разработчиков благодаря хорошему сочетанию цены, производительности, набора периферийных устройств и интерфейсов. Тенденции рынка встраиваемых устройств таковы, что во многих случаях требуется наличие графического пользовательского интерфейса или, как минимум, интуитивно понятное отображение данных или визуализации процессов. С аппаратной точки зрения в семействе STM32 представлены микроконтроллеры со специализированными периферийными блоками, которые используются для работы с TFT-дисплеями: FSMC, LTDC, DSIHOST, Chrom-ART Accelerator, Chrom-GRC и JPEG-кодек. Во многих случаях они позволяют существенно разгрузить процессорное ядро.
При разработке устройств с графическим интерфейсом перед разработчиком встает проблема выбора между реализацией собственных графических примитивов и библиотек, и применением готовых библиотек. Первый путь приведет к необходимости написания кода для отрисовки двух-/трехмерных объектов, реализации функций прозрачного слоя, решению вопросов наложения объектов в трехмерных сценах и многому другому, не считая необходимости реализации низкоуровневых драйверов. Применение готовых библиотек потребует от разработчика перехода к определенному стилю кода, характерному для целевой библиотеки. Дополнительно разработчику необходимо будет изучить специфику работы с готовой библиотекой – порядок инициализации функций и структур данных, наличие callback-функций, задействованные ресурсы контроллера.
Первый путь, конечно, дает возможность полностью контролировать код, его производительность и размер, но требует значительных затрат рабочего времени, большая часть которого уйдет на тестирование и отладку графического кода в ущерб решению основной задачи. Поэтому в большинстве случаев оптимальным выбором при построении графических устройств является использование готовых библиотек, существенно экономящее время вывода устройств на рынок.
Графическая библиотека для встраиваемых устройств STemWin, представленная компанией Segger, может работать и в однозадачном, и в многозадачном окружениях с проприетарной операционной системой или с любой из коммерческих RTOS. Библиотека может быть настроена для работы с любым устройством отображения – дисплеем или экраном, – вне зависимости от типа контроллера дисплея и целевого контроллера [4]. Пробная полнофункциональная версия библиотеки доступна на сайте производителя после регистрации.
Позиционируется как профессиональный инструментарий для создания и поддержки графического интерфейса для встраиваемых систем.
При разработке программного обеспечения обычно возникает выбор между подключением к проекту набора внешних файлов и созданием библиотеки. Если используемый инструментарий поддерживает так называемую «умную» сборку (smart linking), при которой в исполняемый код попадают только структуры и функции, реально задействованные в коде проекта, то особой необходимости в формировании специализированной библиотеки нет. В противном случае все прикрепленные к проекту файлы и функции в них будут скомпилированы и собраны в бинарном коде проекта, который в итоге будет иметь неоправданно большой размер.
В общем случае процедура включения 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):
Список поддерживаемых отладочных плат приведен в таблице 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 |
Некоторые этапы разработки графического интерфейса при помощи GUIBuilder представлены на рисунке 2 [6].
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
Отладочная плата | Микроконтроллер | Дисплей, X | Сенсор |
---|---|---|---|
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 (800X480) | Емкостной |
STM32F469I-DISCO | STM32F469I ARM Cortex M4, 180 MHz | 4,0 (800X480) | Емкостной |
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 | STM32F769 ARM Cortex M7, 200 MHz | 4,0 | Емкостной |
STM32769I-EVAL | STM32F769 ARM Cortex M7, 200MHz | 4,0 | Емкостной |
TouchGFX отлично работает с системами, где TFT-контроллер интегрирован в MCU с кадровыми буферами во внешней памяти или с системами, которые используют ЖК-дисплей со встроенным буфером и контроллером экрана. Требования к ресурсам TouchGFX зависят от размера и сложности конкретного приложения. Типичные требования к реализации GUI:
TouchGFX может работать с ОС (требуется одна выделенная задача и два семафора) или без нее.
Работа с дизайнером графического интерфейса TouchGFX Designer достаточно проста, но вместе с тем позволяет создавать красочные и элегантные интерфейсы (рисунок 3 [9]).
Embedded wizard [10] является кроссплатформенным инструментом для разработки и создания графических интерфейсов, работающим даже на не очень мощных встраиваемых контроллерах. Embedded Wizard поддерживают серии контроллеров STM32 – F4, F7, F1 и L4 [11] и [12]. Разработчикам предлагаются свободная версия библиотеки с ограниченным набором шрифтов, опций, предварительно скомпилированными файлами и ограниченной функциональностью, версия для малого бизнеса – с полной функциональностью, и профессиональная версия с исходными текстами, техподдержкой и возможностью работы с более чем 60 типами контроллеров.
Библиотека упрощает разработку графического интерфейса пользователя и позволяет создавать высокопроизводительные графические интерфейсы с минимальными усилиями. Инструментарий поддерживает применение 2D-графического ускорителя ST Chrom-ART™ в тех микроконтроллерах, в которых он доступен.
С помощью встроенного мастера GUI Builder разработчик может быстро и легко разрабатывать и развертывать HMI. Предлагается набор готовых к использованию и настраиваемых виджетов, таких как кнопки, слайдеры и текстовые представления практически на любой вкус. Возможна настройка их анимации и привязка требуемой функциональности. На основе полученного шаблона генерируется исходный код, который может быть в дальнейшем скомпилирован [13] и загружен в целевой контроллер (рисунок 4).
Предлагается достаточно много готовых примеров графических интерфейсов для плат Discovery (серий F4, F7).
С помощью встраиваемых графических библиотек трудоемкий процесс разработки и отладки пользовательского интерфейса для встраиваемых систем существенно упрощается. Сильно сокращается время, затрачиваемое на интерфейс, что позволит уделить больше внимания основному функционалу и быстрее вывести продукт на рынок.
Рассмотренные программные продукты для контроллеров STM32 похожи по функционалу, но несколько отличаются по предлагаемым возможностям. STemWin – самая «демократичная», она позволяет без проблем работать со многими сериями контроллеров, включая бюджетные, но может показаться, что создаваемые с ее помощью интерфейсы несколько простоваты по дизайну (по крайней мере, из типовых примеров и набора элементов).
Embedded wizard и TouchGFX предлагают более комплексные и яркие элементы и шаблоны интерфейсов. Однако они поддерживают, в основном, более мощные серии контроллеров STM32, и для создания более продвинутых интерфейсов требуется приобретение полной версии библиотеки.