Максим ДЕРжАНСКИИ
Графическая библиотека
StemWin для STM32F429/439
Визуальная информация наиболее эффективна для восприятия и принятия решений практически в любом виде деятельности. Именно поэтому дисплеи значительно увеличивают действенность всех приложений, в которых принятие решений и контроль осуществляется человеком. Это:
• воздушные приложения (военная, гражданская авиация);
• судовые приложения (морские и речные);
• мобильные и стационарные наземные приложения (пульты управления автоматизированного производства, система «умный дом», охранные системы, медицинское оборудование, музыкальные системы, торговое оборудование и многое другое). Также согласно новым тенденциям появляется все больше современных разработок, от которых требуются расширенные возможности по визуализации, отображению и созданию НМ1-интерфейсов. Тем самым компании повышают свою конкурентоспособность на рынке.
О микроконтроллерах STM32F4 и их графических возможностях написано уже много статей [1-4], сделано немало презентаций, проведены семинары. Но, на наш взгляд, недостаточно информации о программном обеспечении. Поэтому в данной статье мы расскажем о новой линейке STM32F429/439 (на рис. 1 выделена красным цветом), после чего рассмотрим графическую библиотеку, благодаря которой реализуются все графические возможности этих микроконтроллеров.
Описание новой линейки STM32F429/439
Микроконтроллеры STM32F429/439 обладают самым широким набором периферии и максимальной производительностью по сравнению с другими контроллерами семейства.
Отличия от линеек STM32F4x9: • Высокопроизводительное ядро ARM
Cortex-M4. (Частота работы — 180 МГц.
Достигает производительности 210 DMIPS.)
• Объем Flash-памяти: до 2 Мбайт.
• Объем ОЗУ: 256 кбайт.
• Интегрированный контроллер TFT/LCD-дисплеев.
• Графический ускоритель DMA2D (ChromART).
• Аудиоинтерфейс SAI (Serial Audio Interface).
• Контроллер внешней памяти FMC (Flexible memory controller) с поддержкой SDRAM. Но главная особенность этой линейки —
это наличие интегрированного контроллера TFT/LCD-дисплеев и графического ускорителя Chrom-ART. Их мы рассмотрим более детально.
Интегрированный контроллер TFT-LCD Следует отметить, что по сравнению с более ранними контроллерами STM32 в этом контроллере сняты существенные ограничения. Он обеспечивает 24-битный RGB-интерфейс и сигналы взаимодействия непосредственно с TFT/LCD-панелями с разрешением 640x480 (480 линий по 640 пикселей).
Общая периферия
Г
Ядро Cortex-M4 (DSP + FPU)
До 2xUSB 2.0 OTG
FS/HS
SDIO
USART, SPI, l2C l2S + audio PLL 16/32-бит таймеры
До 3* 12-бит АЦП (0,41 мкс)
Напряжение питания от 1,7* до 3,6 В
STM32F429/439
180 МГц 512 Кбайт-2 Мбайт FLASH 256 Кбайт SRAM Аппаратные CRYPTO" HASH™ Генератор случайных чисел 2* 12-бит ЦАП Ethernet IEEE 1588 2xCAN Интерфейс камеры Контроллер SDRAM FMC Serial audio Interface (SAI) Графический ускоритель Chrom-ART TFT-LCD-контроллер
STM32F427/437
180 МГц 1-2 Мбайт FLASH 256 Кбайт SRAM Аппаратные CRYPTO" HASH™ Генератор случайных чисел 2« 12-бит ЦАП Ethernet IEEE 1588 2*CAN Интерфейс камеры Контроллер SDRAM FMC Serial audio Interface (SAI) ChromART Accelerator
+
STM32F407/417
168 МГц Аппаратные
512 кбайт- CRYPTO" 2* Ethernet
1 Мбайт HASH™ 12-бит IEEE 1588 Интерфейс
FLASH Генератор ЦАП камеры
192 Кбайт случайных 2*CAN
SRAM чисел
STM32F405/415
Q
Примечание:
* 1,7 В в определенных корпусах ** Аппаратный модуль CRYPTO/HASH только в STM32F415/417/F437/439
STM32F401
84 МГц Эффективность по питанию:
128 кбайт - 512 кбайт • Режим Run до 140 мкА/МГц
FLASH • Режим Stop до 11 мкА
64 Кбайт SRAM Наличие малых корпусов до 3*3 мм
Рис. 1. Линейка микроконтроллеров STM32F4
1041
компоненты
микроконтроллеры
Особенности:
• гибкая система параметров отображения экранных слоев;
• гибкий инструментарий обработки изображения;
• гибкая система настроек и инструментов для конфигурации глобальных параметров дисплея и параметров слоев;
• два экранных слоя с буферами FIFO (64x32 бит);
• до восьми форматов цвета на каждый слой, включая 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
средственно рабочее окно GUШшlder и (или) имеющиеся навыки программирования. Поэтому при ее рассмотрении будут приведены примеры кода команд.
Это профессиональная библиотека emWin от SEGGER. Компания STMicroelectronics получила на нее лицензию у SEGGER. Для пользователей STM32 эта библиотека бесплатна, и последнюю актуальную версию всегда можно скачать с официального сайта компании STMicroelectronics.
STemWin позволяет строить графические приложения на базе любого контроллера STM32 и любого дисплея (TFT или LCD, с различными типами контроллеров). Она реализует все аппаратные преимущества STM32 и имеет все самые необходимые средства и инструменты (например, симулятор, дизайнер приложений и т. п.).
STemWin является комплексным решением и поддерживает графические форматы JPG, GIF, что позволяет декодировать растровый формат хранения графической информации (PNG). Эта библиотека имеет множество вид-жетов (флажки, кнопки и др.), сервер VNC (показ дистанционно локального дисплея), профессиональный инструмент для простого создания диалоговых окон (GUIBuilder), конвертер шрифта и многое другое.
Графическая библиотека STemWin рассчитана только на линейку STM32. Для работы с библиотекой можно использовать непо-
М
Приложение
Библиотека виджетов
Менеджер окон
Визуализация (рендеринг) основного графического интерфейса пользователя
Запоминающее устройство
Виртуальный вычислительный сервер сети
Драйвер дисплея
FlexColor ■ LIN
Конфигурация LCD
Конфигурация графического интерфейса пользователя
Слой аппаратных абстракций
Рис. 2. Реализация STemWin
в
STemWin_Library_V1.0.0
_htmrec Libraries
STemWinLibrary520d
- Corvflg
- Documentation
- inc
- Lib
- OS
- Software__у
IB- STM32F1 Ox_ETH_Driver Щ- STM32F1 Ox_StdPeriph_Driver l+H STM32F2x7_ETH_Driver ф-| STM32F2xx_StdPeriph_Driver ф-l STM32F30x_StdPeriph_Driver à~| STM32F37x_StdPeriph_Driver l±H STM32F4x7_ETH_Driver ф~- STM32F4xx_StdPeriph_Driver Й-- STM32L1 xx_StdPeriph_Driver
Project - Binaries
STM32100B_EVAL
ф~- STM32100E_EVAL
ÉH STM3210B_E VAL
l+H STM3210C_EVAL
[+H STM3210E_EVAL
Й-- STM322xG_EVAL
IB- STM32303C_EVAL
ф~- STM32373C_EVAL
l+H STM324xG_EVAL
l+H STM32L152_EVAL
ф-j STM32L152D_EVAL
B--
STM32_EVAL
Й-
Third_Party
Стандартные и расширенные библиотеки
STemWin графическая библиотека:
Config: глобальный конфигурационный файл+шаблоны
GUIConf и LCDConf файлы
Documentation: документация
EMWIN Пользователь и справочное руководство
Inc: файлы заголовков компонентов STemWin
Lib: библиотеки в двоичном формате, скомпилированные для ядер
СМЗ и СМ4 (с и без поддержки OS)
OS: библиотека интерфейса с RTOS
Software: приложение для ПК
Binaries folder:
содержит все проекты в формате «.hex»
Примеры реализации
STM32_EVAL:
стандартный драйвер аппаратной оценки Third_Party: другие драйверы:
- LwlP drivers
- FreeRTOS drivers
Рис. 3. Дерево проекта STemWin
2. Двунаправленный текст. Автоматически поддерживается. Достаточно одного включения командой GUI_UC_EnableBIDI ().
3. Альфа-смешивание. Метод, сочетающий альфа-канал с другими слоями в изображении, чтобы создать видимость полупрозрачности (рис. 5). Можно включить автоматическое альфа-смешивание с помощью команды GUI_EnaЫeAlpha ((). Также можно установить уровень значения альфа, чтобы определить, сколько пикселей должно быть видно и сколько фона должно быть показано через них (команда GUI_SetUserAlpha ()).
Рис. 4. Структура примеров STemWin
На рис. 2 и 3 показаны реализация STemWin и дерево проекта с общим описанием.
Дерево проекта содержит в себе два субпроекта (рис. 4):
• операционная система реального времени (RTOS) на основе примеров;
• пример Standalone.
Использование графической библиотеки 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; GULSetFont(GUI_FONT_COMIC24B_ASCn); GUI_DispStringHCenterAt("Hello world!", xPos, yPos);
while(1);
}
Основные возможности графической библиотеки:
1. Отображение файлов. STemWin поддерживает BMP, JPEG, GIF и PNG форматы файлов. Библиотека включает в себя API-интерфейсы для каждого из этих форматов изображений.
Рис. 5. Эффект альфа-смешивания
4. Спрайты и курсоры. Спрайт — графический объект, свободно перемещающийся по экрану (команда GUI_SPRITE_ CreateAnim ()). Спрайт показан поверх другого изображения на экране (рис. 6). Его можно удалить в любое время без потери содержимого экрана. Возможна также анимация с использованием нескольких изображений. STemWin включает в себя общесистемные курсоры (рис. 7), которые также могут быть анимированы с помо-
Рис. 6. Спрайт
* * *
- ++
Рис. 7. Общесистемные курсоры
щью команды GUI_CURSOR_SetAnim (). Курсор не виден, пока не сделан вызов. Чтобы показать его, нужна команда GUI_ CURSOR_Show (), чтобы снова скрыть — GUI_CURSOR_Hide ().
5. Память. Команда вызова — GUI_ MEMDEV_Create (). Проверка — GUI_MEMDEV_Select (). Все операции рисования выполняются в памяти. Окончательный результат отображается на экране только тогда, когда все операции были закончены (вызов командой GUI_MEMDEV_CopyToLCD ()). Можно использовать память для:
- предотвращения мерцающего эффекта (прямой рисунок на дисплее);
- распаковки образцов;
- вращения (команда GUI_MEMDEV_ Rotate ()) и масштабирования (рис. 8);
- оконной анимации;
- эффектов прозрачности.
Для увеличения объема памяти рекомендуется использовать внешнюю память, если она доступна.
6. Можно сглаживать и разглаживать кривые и диагональные линии, не смешивая их с фоном. Это делается путем добавления промежуточных цветов между объектом и фоном. STemWin поддерживает сглаживание:
- текста;
- дуги — команда GUI_AA_DrawArc ();
- круга — команда GUI_AA_FillCircle ();
- линий — команда GUI_AA_DrawLine ();
- многоугольников — (команды GUI_ AA_DrawPolyOutline () и GUI_AA_ FillPolygon ()).
7. Диспетчер окон включает в себя:
- Систему управления иерархической структурой окон. Каждый слой имеет свое собственное окно. Каждое окно может иметь свое иерархическое дерево дочерних окон.
- Функцию возврата.
- Библиотеку виджетов (рис. 9).
Рис. 9. Библиотека виджетов
1061 компоненты микроконтроллеры
Работа всех виджетов основана на функциях диспетчера окон. После того как виджет создан, он точно так же, как и любое другое окно, должен правильно отображаться (прорисовывается каждый раз, когда это необходимо). Создать виджет можно с помощью одной строки кода.
- Прямое: <Widget> _CreateEx () — создание без пользовательских данных; <Widget> _Createuser () — создание с пользовательскими данными.
- Косвенное: создание диалогового окна и структуры GUI_WIDGET_CREATE_ INFO, которая содержит указатель на косвенные подпрограммы создания (<Widget> jCreatelndirect ()).
8. VNC-сервер. Virtual Network Computing (VNC) — система удаленного доступа к рабочему столу компьютера. Сервер VNC используется для подключения к ПК через TCP/IP. Он позволяет просматривать содержимое LCD-дисплея на удаленном мониторе ПК и управлять ПК. (Можно использовать мышь и клавиатуру для управления удаленным ПК.)
9. Шрифты. Все наиболее распространенные шрифты включены в библиотеку STemWin в качестве стандартного пакета шрифтов. Также поддерживаются другие форматы (SIF, XBF, TTF).
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-разрядных микроконтроллеров // Компоненты и технологии. 2009. № 10.
5. AN4323: Getting started with STemWin Library // http://www.st.com/st-web-ui/static/active/en/ resource/technical/document/application_note/ DM00089670.pdf
6. www.st.com
7. www.segger.com