Графическая библиотека StemWin для STM32F429/439

№ 3’2014
PDF версия
О микроконтроллерах STM32F4 и их графических возможностях написано уже много, сделано немало презентаций, проведены семинары. Но, на наш взгляд, недостаточно информации о программном обеспечении. Поэтому в данной статье мы расскажем о новой линейке STM32F429/439, после чего рассмотрим графическую библиотеку, благодаря которой реализуются все графические возможности этих микроконтроллеров.

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

  • воздушные приложения (военная, гражданская авиация);
  • судовые приложения (морские и речные);
  • мобильные и стационарные наземные приложения (пульты управления автоматизированного производства, система «умный дом», охранные системы, медицинское оборудование, музыкальные системы, торговое оборудование и многое другое).

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

О микроконтроллерах STM32F4 и их графических возможностях написано уже много статей [1, 2, 3, 4], сделано немало презентаций, проведены семинары. Но, на наш взгляд, недостаточно информации о программном обеспечении. Поэтому в данной статье мы расскажем о новой линейке STM32F429/439 (на рис. 1 выделена красным цветом), после чего рассмотрим графическую библиотеку, благодаря которой реализуются все графические возможности этих микроконтроллеров.

Линейка микроконтроллеров STM32F4

Рис. 1. Линейка микроконтроллеров STM32F4

 

Описание новой линейки STM32F429/439

Микроконтроллеры STM32F429/439 обладают самым широким набором периферии и максимальной производительностью по сравнению с другими контроллерами семейства.

Отличия от линеек STM32F4x9:

  • Высокопроизводительное ядро ARM Cortex-M4. (Частота работы — 180 МГц. Достигает производительности 210 DMIPS.)
  • Объем Flash-памяти: до 2 Мбайт.
  • Объем ОЗУ: 256 кбайт.
  • Интегрированный контроллер TFT/LCD-дисплеев.
  • Графический ускоритель DMA2D (Chrom-ART).
  • Аудиоинтерфейс SAI (Serial Audio Interface).
  • Контроллер внешней памяти FMC (Flexible memory controller) с поддержкой SDRAM.

Но главная особенность этой линейки — это наличие интегрированного контроллера TFT/LCD-дисплеев и графического ускорителя Chrom-ART. Их мы рассмотрим более детально.

Интегрированный контроллер TFT-LCD

Следует отметить, что по сравнению с более ранними контроллерами STM32 в этом контроллере сняты существенные ограничения. Он обеспечивает 24‑битный RGB-интерфейс и сигналы взаимодействия непосредственно с TFT/LCD-панелями с разрешением 640480 (480 линий по 640 пикселей).

Особенности:

  • гибкая система параметров отображения экранных слоев;
  • гибкий инструментарий обработки изображения;
  • гибкая система настроек и инструментов для конфигурации глобальных параметров дисплея и параметров слоев;
  • два экранных слоя с буферами FIFO (6432 бит);
  • до восьми форматов цвета на каждый слой, включая ARGB8888, RGB888, RGB565, ARGB1555, ARGB4444, L8, AL44 и AL88;
  • два вектора прерывания, четыре типа событий прерывания;
  • таблица цветов Color Look-Up Table (CLUT): с поддержкой до 256 24‑битных цветов на каждый слой.

Графический ускоритель Chrom-ART (DMA2D)

Его основная задача — освобождение процессора и контроллера от выполнения некоторых операций по обработке изображения (перемещение группы битов (образа) из одного места экрана в другое, преобразование формата данных). Есть специализированный DMA для работы с изображениями. Ускоритель является мастером на шине AHB и работает с различными форматами данных.

К его особенностям можно отнести:

  • поддержку различных форматов цвета пикселей;
  • поддержку двух источников изображений (возможность a‑смешивания);
  • использование таблицы цветов CLUT с программируемым размером;
  • наличие внутреннего таймера (контроль пропускной способности АНВ);
  • использование четырех типов обмена (регистр-память, память-память, память-память с преобразованием формата цвета, память-память со смешиванием и с преобразованием формата цвета);
  • прерывания по событиям (ошибка конфигурации, завершение обмена (либо ошибка) с CLUT, достижение заданной позиции при передаче, завершение (либо ошибка) передачи данных).

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

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

 

Графическая библиотека STemWin

Это профессиональная библиотека emWin от SEGGER. Компания STMicroelectronics получила на нее лицензию у SEGGER. Для пользователей STM32 эта библиотека бесплатна, и последнюю актуальную версию всегда можно скачать с официального сайта компании STMicroelectronics.

STemWin позволяет строить графические приложения на базе любого контроллера STM32 и любого дисплея (TFT или LCD, с различными типами контроллеров). Она реализует все аппаратные преимущества STM32 и имеет все самые необходимые средства и инструменты (например, симулятор, дизайнер приложений и т. п.).

STemWin является комплексным решением и поддерживает графические форматы JPG, GIF, что позволяет декодировать растровый формат хранения графической информации (PNG). Эта библиотека имеет множество виджетов (флажки, кнопки и др.), сервер VNC (показ дистанционно локального дисплея), профессиональный инструмент для простого создания диалоговых окон (GUIBuilder), конвертер шрифта и многое другое.

Графическая библиотека STemWin рассчитана только на линейку STM32. Для работы с библиотекой можно использовать непосредственно рабочее окно GUIBuilder и (или) имеющиеся навыки программирования. Поэтому при ее рассмотрении будут приведены примеры кода команд.

На рис. 2 и 3 показаны реализация STemWin и дерево проекта с общим описанием.

Реализация STemWin

Рис. 2. Реализация STemWin

Дерево проекта STemWin

Рис. 3. Дерево проекта STemWin

Дерево проекта содержит в себе два субпроекта (рис. 4):

  • операционная система реального времени (RTOS) на основе примеров;
  • пример Standalone.
Структура примеров STemWin

Рис. 4. Структура примеров STemWin

Использование графической библиотеки STemWin

Библиотека состоит из двух частей:

  • конфигурация GUI;
  • конфигурация LCD/TFT.

Конфигурация GUI охватывает всю конфигурацию цветов, шрифтов и доступной памяти. Конфигурация LCD/TFT больше зависит от оборудования и дает возможность пользователю определить физический размер и драйвер дисплея и процедуры преобразования цветов, которые будут использоваться.

При установке нового контроллера LCD/TFT-дисплея должны быть созданы два файла конфигурации, в дополнение к уже существующим файлам конфигурации ОС: GUIConf_stm32xxx_eval.c и LCDConf_stm32xxx_eval.c.

Для инициализации внутренних структур и переменных данных STemWin необходимо использовать GUI_Init (). Такой вид инициализации показан на примере простой программы Hello world:

void Main(void) {
int xPos, yPos;
GUI_Init();
xPos = LCD_GetXSize() / 2;
yPos = LCD_GetYSize() / 3;
GUI_SetFont(GUI_FONT_COMIC24B_ASCII);
GUI_DispStringHCenterAt("Hello world!", xPos, yPos);
while(1);
}

Основные возможности графической библиотеки:

  1. Отображение файлов. STemWin поддерживает BMP, JPEG, GIF и PNG форматы файлов. Библиотека включает в себя API-интерфейсы для каждого из этих форматов изображений.
  2. Двунаправленный текст. Автоматически поддерживается. Достаточно одного включения командой GUI_UC_EnableBIDI ().
  3. Альфа-смешивание. Метод, сочетающий альфа-канал с другими слоями в изображении, чтобы создать видимость полупрозрачности (рис. 5). Можно включить автоматическое альфа-смешивание с помощью команды GUI_EnableAlpha (). Также можно установить уровень значения альфа, чтобы определить, сколько пикселей должно быть видно и сколько фона должно быть показано через них (команда GUI_SetUserAlpha ()).
  4. Спрайты и курсоры. Спрайт — графический объект, свободно перемещающийся по экрану (команда GUI_SPRITE_CreateAnim ()). Спрайт показан поверх другого изображения на экране (рис. 6). Его можно удалить в любое время без потери содержимого экрана. Возможна также анимация с использованием нескольких изображений. STemWin включает в себя общесистемные курсоры (рис. 7), которые также могут быть анимированы с помощью команды GUI_CURSOR_SetAnim (). Курсор не виден, пока не сделан вызов. Чтобы показать его, нужна команда GUI_CURSOR_Show (), чтобы снова скрыть — GUI_CURSOR_Hide ().
  5. Память. Команда вызова — GUI_MEMDEV_Create (). Проверка — GUI_MEMDEV_Select (). Все операции рисования выполняются в памяти. Окончательный результат отображается на экране только тогда, когда все операции были закончены (вызов командой GUI_MEMDEV_CopyToLCD ()). Можно использовать память для:
    • предотвращения мерцающего эффекта (прямой рисунок на дисплее);
    • распаковки образцов;
    • вращения (команда GUI_MEMDEV_Rotate ()) и масштабирования (рис. 8);
    • оконной анимации;
    • эффектов прозрачности.

Эффект альфа-смешивания

Рис. 5. Эффект альфа-смешивания

Спрайт

Рис. 6. Спрайт

Общесистемные курсоры

Рис. 7. Общесистемные курсоры

Вращение и масштабирование

Рис. 8. Вращение и масштабирование

Для увеличения объема памяти рекомендуется использовать внешнюю память, если она доступна.

  1. Можно сглаживать и разглаживать кривые и диагональные линии, не смешивая их с фоном. Это делается путем добавления промежуточных цветов между объектом и фоном. STemWin поддерживает сглаживание:
    • текста;
    • дуги — команда GUI_AA_DrawArc ();
    • круга — команда GUI_AA_FillCircle ();
    • линий — команда GUI_AA_DrawLine ();
    • многоугольников — (команды GUI_AA_DrawPolyOutline () и GUI_AA_FillPolygon ()).
  1. Диспетчер окон включает в себя:
    • Систему управления иерархической структурой окон. Каждый слой имеет свое собственное окно. Каждое окно может иметь свое иерархическое дерево дочерних окон.
    • Функцию возврата.
    • Библиотеку виджетов (рис. 9).
Библиотека виджетов

Рис. 9. Библиотека виджетов

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

    • Прямое: <Widget> _CreateEx ()— создание без пользовательских данных; <Widget> _CreateUser () — создание с пользовательскими данными.
    • Косвенное: создание диалогового окна и структуры GUI_WIDGET_CREATE_INFO, которая содержит указатель на косвенные подпрограммы создания (<Widget> _CreateIndirect ()).
  1. VNC-сервер. Virtual Network Computing (VNC) — система удаленного доступа к рабочему столу компьютера. Сервер VNC используется для подключения к ПК через TCP/IP. Он позволяет просматривать содержимое LCD-дисплея на удаленном мониторе ПК и управлять ПК. (Можно использовать мышь и клавиатуру для управления удаленным ПК.)
  2. Шрифты. Все наиболее распространенные шрифты включены в библиотеку STemWin в качестве стандартного пакета шрифтов. Также поддерживаются другие форматы (SIF, XBF, TTF).
  3. Используя GUIBuilder (рис. 10), можно легко создавать диалоговые окна без написания исходного кода. Можно разместить виджеты (или изменить их размеры) путем обычного перетаскивания. Дополнительные свойства могут быть добавлены с помощью контекстного меню. GUIBuilder самостоятельно создает диалоговый код, который может использоваться как самостоятельно, так и быть интегрированным в другой проект.
Рабочая область GUIBuilder

Рис. 10. Рабочая область GUIBuilder

 

Заключение

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

Графическая библиотека STemWin реализует все аппаратные преимущества STM32F4 с TFT-контроллером. Она включает в себя все самые необходимые средства и инструменты, что позволяет строить графические приложения на базе любого контроллера STM32 и дисплея (TFT или LCD, с различными типами контроллеров).

Компания STMicroelectronics постоянно развивает свое семейство микроконтроллеров STM32 и программное обеспечение к нему в соответствии со всеми тенденциями рынка, повышая свою конкурентоспособность. Думаем, что знакомство с новой линейкой STM32F429/439 и детальное описание графической библиотеки послужат доказательством этому.

Литература
  1. Курниц А. Программная эмуляция EEPROM в микроконтроллерах семейства STM32F40x/STM32F41x // Компоненты и технологии. 2013. № 8.
  2. Гавриков В. 32 бита за полдоллара // Новости электроники. 2013. № 8.
  3. Гавриков В. Мастера графики: новое поколение STM32F4 с поддержкой контроллера TFT // Новости электроники. 2013. № 8.
  4. Бородулин А. STM8 и STM32 — объединенное пространство 8‑ и 32‑разрядных микроконтроллеров // Компоненты и технологии. № 10.
  5. AN4323: Getting started with STemWin Library 
  6. st.com
  7. segger.com

Комментарии на “Графическая библиотека StemWin для STM32F429/439

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *