Старая версия сайта

микроконтроллеры от ведущих мировых производителей

Графический контроллер FT800. Программные средства разработки и отладки.

Сергей Долгушин, dsa@efo.ru

Продолжаем серию статей [1-6], посвященных графическим контроллерам FTDI FT800/801, обзором специализированных программных средств, предназначенных для разработки и отладки приложений на базе этих микросхем. Производитель предлагает несколько полезных утилит и библиотек, которые существенно упрощают этапы освоения, разработки и тестирования графических приложений, а также помогают познакомиться с функциональными возможностями FT800/801 с помощью персонального компьютера без использования дополнительных аппаратных средств.

Главной особенностью графических контроллеров FT800/801 является встроенный процессор, который занимается формированием изображения и выводом его на экран TFT-дисплея. Формирование изображения происходит на основе набора команд (дисплей-листа), который передается управляющим микроконтроллером в FT800/801. Например, для вывода ряда кнопок достаточно передать в графический контроллер одну команду (четыре 32-х разрядных слова), и FT800/801 самостоятельно сформирует изображение этих кнопок на экране TFT-дисплея. Набор команд графических контроллеров FTDI включает в себя более 50 функций, с помощью которых можно выводить различные изображения на экран дисплея с теми или иными эффектами. Изучение их свойств и порядка их вызова может занять продолжительное время при первом знакомстве с FT800/801. В целях сокращения времени на изучение функционала FT800/801 производитель предоставляет набор программных средств, которые помогут освоить работу с графическими контроллерами и максимально быстро подготовить шаблоны для собственных проектов. Кроме того, данные программные средства позволят протестировать работу этих шаблонов на ПК, без необходимости приобретения аппаратных средств на этапе ознакомления и начального тестирования.

Компания FTDI предлагает три программных продукта: EVE Screen Designer, EVE Screen Editor и MSVC Emulator. Все указанные средства распространяются свободно и доступны на сайте производителя. EVE Screen Designer и EVE Screen Editor рассчитаны на работу в ОС Windows 7 или старше. 

EVE Screen Designer (см. рис.1) предназначен для предварительной проработки графического интерфейса, его внешнего вида и элементов. С помощью этой утилиты можно точно разместить все требуемые элементы относительно друг друга. Для этих целей служит координатная сетка, масштаб и шаг которой может меняться в широких пределах. Специальный набор команд утилиты позволяет передвигать графические элементы с одного слоя изображения на другой, группировать их и закреплять на заданном месте. Все доступные в FT800/801 графические элементы расположены в окне “Widget Selection”. Добавление графического элемента в проект осуществляется простым перетягиванием из окна “Widget Selection” в центральное окно приложения, имитирующее экран дисплея. При добавлении графического элемента автоматически добавляются все дополнительные функции, которые управляют цветами выбранного элемента. В окне “Widget Properties” доступны все возможные настройки выбранного элемента. Одновременно с этим, в окно “Output Window” EVE Screen Designer генерируется соответствующий выбранному элементу фрагмент кода. Этот код может быть скопирован и использован для дальнейшей работы в другой утилите FTDI - EVE Screen Editor. На текущий момент основным достоинством приложения Screen Designer является возможность быстрого знакомства с графическим функционалом FT800/801. Добавляя элемент на экран, мы сразу получаем полный список команд в окне с кодом, которые могут понадобиться для оформления этого элемента. Этот код может быть избыточен для разработки рабочей программы микроконтроллера, но для освоения он очень полезен. Утилита наглядно показывает, какие команды отвечают за настройку того или иного элемента графического объекта. 

Screen Designer        

Приложение EVE Screen Editor (рис.2), в отличие от EVE Screen Designer, позволяет не только “прикинуть” внешний вид графического приложения, но и частично протестировать его работу и затем экспортировать в проект на Visual Studio. Экспорт в Visual Studio дает практически готовый код, подходящий для переноса его на любой микроконтроллер, если для работы с FT800/801 используется библиотека FTDI [3-5]. Следующей полезной функцией Screen Editor  является автоматическое конвертирование пользовательских шрифтов и растровых картинок в форматы, поддерживаемые микросхемами FTDI. При этом можно сразу оценить, как будут выглядеть шрифты и изображения на экране дисплея в зависимости от выбранного формата. В правом нижнем углу основного окна Screen Editor отображается загрузка графической памяти RAM_G, рабочей памяти RAM_DL и количество свободных указателей графических объектов (Bitmap Handle). Самым важным из них является индикатор загрузки графической памяти RAM_G, при работе с пользовательскими шрифтами и изображениями он позволяет оценить и на основе полученных результатов подобрать подходящий формат итогового изображения шрифтов и картинок. Далее мы рассмотрим работу с этой утилитой подробнее на примере.

Screen Editor

MSVC Emulator – это программное средство, которое представляет собой специализированную графическую библиотеку для Microsoft Visual Studio. Эта библиотека эмулирует на экране ПК работу всех графических функций микросхем FT800/801, а также работу сенсорного экрана (за исключением функции одновременного детектирования нескольких касаний, поддерживаемой FT801 в случае емкостного сенсорного экрана). Проект для MS Visual Studio со встроенным эмулятором генерируется автоматически с помощью утилиты EVE Screen Editor при экспорте проекта. Работу эмулятора также рассмотрим ниже.

Emulator

 

Описанные выше программные средства позволяют разработать графическое приложение для микросхем FT800/801 и протестировать его работу. При этом не требуется никаких дополнительных ресурсов, кроме ПК и установленной среды разработки Visual Studio. Для работы с эмулятором FT800/801 необходима версия Visual Studio Express 2012, которая распространяется бесплатно (необходима только регистрация на сайте Microsoft). Версия Visual Studio должна быть именно такая, так как библиотеки эмулятора скомпилированы под нее. После программной отладки полученный код может быть использован без изменений в рабочей программе для целевого микроконтроллера. Это справедливо в случае, если используются библиотеки FTDI, как описано в [3-5]. Использование программных средств для разработки и отладки приложений позволит быстрее понять принципы работы графических контроллеров и освоить методику работы с ними.

Рассмотрим работу с утилитой EVE Screen Editor и эмулятором на следующем примере. Реализуем простое приложение, которое будет выполнять смену двух изображений на экране TFT-дисплея по нажатию кнопки. 

Запускаем приложение EVE Screen Editor, при этом автоматически создается новый проект. Начнем оформление первого из состояний нашего приложения.

Зададим требуемый фон, перетащив из вкладки “Toolbox” в центральное окно, имитирующее экран дисплея, функцию CLEAR_COLOR_RGB. В нижнем окне во вкладке “Coprocessor” автоматически добавляется код, требуемый для вызова этой функции. Выберем строку с новой функцией мышью, и в крайнем правом окне во вкладке “Properties” появится описание функции и ее параметры (рис. 4). Для функции CLEAR_COLOR_RGB доступен один параметр – это цвет. Для его изменения надо щелкнуть мышью по полю с цветом и выбрать новый с помощью стандартной палитры Windows. Редактирование параметров функций также доступно в окне “Coprocessor”, внося соответствующие изменения в сгенерированный код.

Добавление функции в проект

Установив требуемый фон, добавляем на экран кнопку CMD_BUTTON. Для изменения цветовой схемы кнопки предусмотрены две команды: Foreground Color (CMD_FGCOLOR) и Gradient Color (CMD_GRADCOLOR). CMD_FGCOLOR задает основной цвет графического элемента, CMD_GRADCOLOR задает цвет яркой области, если используется объемное изображение графического элемента. Цвет шрифта задается командой Color RGB (COLOR_RGB) (см. рис.5). Указанные команды добавляются в проект тем же перетаскиванием из меню “Toolbox” в центральное окно.

Оформление кнопки

 

Надпись на кнопке задается в поле “Text”, а используемый шрифт в поле “Font” вкладки “Properties” (см. рис.6). Для использования кириллицы нам потребуется сконвертировать и загрузить в графический контроллер свой шрифт. Утилита Screen Editor позволяет сделать это следующим образом. 

Свойства кнопки

 

Откроем вкладку “Content” и, нажав кнопку “add”, добавим требуемый шрифт (см. рис.7), в примере будет использован стандартный шрифт Times New Roman. Новый шрифт добавляется в проект, перетаскиванием его в центральное окно программы.

Добавление шрифта

 

После добавления в проект в окне “Coprocessor” появится код, необходимый для инициализации шрифта (см. рис. 8). 

Код инициализации

 

Параметры шрифта задаются во вкладке “Properties” (см. рис. 9). Свойства шрифта, определяемые этими параметрами, функции загрузки и вызова были подробно описаны в [3], в настоящей статье останавливаться на этом не будем. Утилита Screen Editor позволяет сразу оценить требуемые ресурсы для шрифта с выбранными параметрами. В поле “Information” вкладки “Properties” приводятся размер шрифта в сжатом виде (сколько памяти потребуется в управляющем микроконтроллере для хранения шрифта) и оригинальный размер (сколько графической памяти RAM_G FT800/801 будет занято этим шрифтом в процессе работы). Поле “Charset” этой же вкладки определяет набор символов, которые будут включены в шрифт. Напомним, что максимальное количество элементов одного шрифта ограничено 127 [3]. По умолчанию, после добавления шрифта в программу, набор символов включает в себя стандартные элементы ASCII.

Свойства шрифта

 

В нашем примере будут использоваться две надписи на кнопках “Старт” и “Назад”. Для простоты ввода этих надписей в поле “Charset” заменим только символы “0123456789” символами “СтартНазад” (см. рис. 9). Это упростит нам задачу ввода надписи на русском языке в примере. Чтобы на кнопке отобразилась надпись, выполненная новым шрифтом, надо заменить параметр “Font” на параметр, заданный в функции BITMAP_HANDLE(x), в примере это “1”. В результате, надпись на кнопке “01234” трансформируется в “Старт”, т.к. соответствующим кодам в новом шрифте соответствуют символы на кириллице (см. рис. 10).

Результат замены шрифта

 

Добавим в проект растровое изображение - это будет логотип компании FTDI. Утилита Screen Editor позволяет работать с изображениями в форматах JPG, PNG или BMP. Эти изображения, после добавления их в программу, автоматически конвертируются во внутренний формат FT800/801. Добавление картинок осуществляется аналогично загрузке шрифта. Во вкладке “Content” нажимаем кнопку “add” и выбираем требуемое изображение. Перетащив его из вкладки “Content” в центральное окно, мы добавляем изображение в наш проект (рис 11). 

Добавление изображения

 

В свойствах изображения “Properties” можно выбрать формат вывода на экран. Заданный формат определяет качество представления картинки на экране, количество цветов и, соответственно, размер картинки. Утилита Screen Editor позволяет сразу увидеть изменения картинки на экране в зависимости от выбранного формата и оценить требуемый объем памяти. В поле “Address” задается начальный адрес размещения изображения в памяти RAM_G графических контроллеров FT800/801. В примере начальный адрес равен 7804, т.е. изображение загружается после шрифта. Адрес рассчитывается утилитой автоматически или может быть задан самостоятельно.

Итак, мы подготовили первый набор графических элементов, которые будут отображаться на экране нашего дисплея. Рассмотрим процесс его экспорта в Visual Studio, данная операция выполняется через меню “Scripts” – “Export HAL(FTDI) Project”. В результате будет создан полностью готовый проект для Visual Studio, в который будут включены две версии исполняемого кода – с эмулятором и без него (рис. 12).

Результат экспорта

 

Версия с эмулятором предназначена для тестирования приложения на экране ПК. Версия без эмулятора может быть использована для тестирования приложения на модулях VM800B и VM800C FTDI [7]. Откроем в Visual Studio проект с эмулятором и запустим отладку. В результате работы эмулятора мы должны увидеть окно, имитирующее экран дисплея с заданными нами изображением логотипа и кнопки  (рис. 13).

Результат выполнения

 

Закончим работу с первым состоянием экрана добавлением функции TAG для кнопки “Старт”. Эта функция назначает метку графическому элементу, перед которым происходит ее вызов. Использование метки упрощает обработку событий сенсорного экрана. При касании экрана в любой области графического элемента с назначенной меткой в регистр REG_TOUCH_TAG записывается значение этой метки, которое может быть прочитано. Это гораздо удобнее, чем использование координат для определения области касания сенсорного экрана. Назначение кнопке метки происходит путем перетаскивания функции TAG из вкладки “Tools” – “Graphics State”. В центральном окне метка не отображается визуально, добавляется только код, который можно посмотреть в окне “Coprocessor”. Проконтролировать работу функции TAG можно следующим образом. Откроем в нижней части основного окна Screen Editor вкладку “Inspector”. В правой части этой вкладки отображается окно “RAM_REG”. Нас интересует регистр RAM_TOUCH_REG, значение которого сейчас равно “0”. В меню выберем инструмент “Touch”, при этом курсор становится эмулятором сенсорного экрана (рис. 14), наведем курсор на любую область кнопки “Старт” и нажмем левую кнопку мыши – значение регистра REG_TOUCH_TAG изменит свое значение на то, которое указано в функции TAG.

Выбор инструмента

 

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

Теперь завершим наш пример, добавив в него вторую картинку и кнопку “Назад”. Вторая картинка добавляется аналогично тому, как было описано ранее. А добавление кнопки проще всего выполнить копированием кода в окне “Coprocessor”. Обе кнопки в нашем примере располагаются в одном и том же месте экрана дисплея. Они отличаются надписью и меткой TAG. В результате копирования код будет выглядеть следующим образом:

// кнопка 1

CMD_FGCOLOR(101, 255, 204)

CMD_GRADCOLOR(14, 38, 255)

COLOR_RGB(16, 52, 255)

TAG(1) // метка 1

CMD_BUTTON(152, 212, 153, 43, 1, 0, "01234") // надпись “Старт”

 

// кнопка 2

CMD_FGCOLOR(101, 255, 204)

CMD_GRADCOLOR(14, 38, 255)

COLOR_RGB(16, 52, 255)

TAG(2) // метка 2

CMD_BUTTON(152, 212, 153, 43, 1, 0, "56789")  // надпись “Назад”

В результате наше приложение в Screen Editor будет выглядеть так (см. рис. 15). 

Итоговый вид приложения

 

Чтобы проверить, что в результате добавления новых элементов мы не внесли ошибок, можно проконтролировать работу всех функций по шагам. Во вкладке “Controls” в правой части окна Screen Editor выберем пункт “Сoprocessor”. C помощью текстового поля напротив этого пункта стрелками “вверх/вниз” осуществляется пошаговое выполнение кода. При этом текущая выполняемая функция в нижнем окне “Coprocessor” подсвечивается желтым цветом (см. рис. 16).

Пошаговое выполнение кода

 

 

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

 

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

void main()

 {

    ft_uint8_t status=0;

    ft_uint8_t ReadWord;

              

// инициализация дисплея и SPI

                Ft_Gpu_Hal_Init(&halinit);

                Ft_Gpu_Hal_Open(phost);

                Ft_App_BootupConfig();

       

               // загрузка и установка параметров для шрифта

                Ft_Gpu_CoCmd_Dlstart(phost);

                Ft_Gpu_Hal_WrCmd32(phost,CMD_INFLATE);

                Ft_Gpu_Hal_WrCmd32(phost,RAM_TIMES);

                Ft_Gpu_Hal_WrCmdBuf(phost,TIMES, sizeof(TIMES));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_HANDLE(1));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_SOURCE(148));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_LAYOUT(L1, 4, 33));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_SIZE(NEAREST, BORDER, BORDER, 32, 33));

                Ft_Gpu_CoCmd_SetFont(phost,1, 0);

                 // загрузка и установка параметров для первого логотипа

                Ft_Gpu_Hal_WrCmd32(phost,CMD_INFLATE);

                Ft_Gpu_Hal_WrCmd32(phost,RAM_FTDI_LOGO);

                Ft_Gpu_Hal_WrCmdBuf(phost,FTDI_logo, sizeof(FTDI_logo));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_HANDLE(2));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_SOURCE(7804));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_LAYOUT(RGB565, 274, 64));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_SIZE(NEAREST, BORDER, BORDER, 137, 64));

                 // загрузка и установка параметров для второго логотипа

                Ft_Gpu_Hal_WrCmd32(phost,CMD_INFLATE);

                Ft_Gpu_Hal_WrCmd32(phost,RAM_EFO_LOGO);

                Ft_Gpu_Hal_WrCmdBuf(phost,efo_logo, sizeof(efo_logo));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_HANDLE(3));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_SOURCE(25340));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_LAYOUT(RGB565, 236, 122));

                Ft_App_WrCoCmd_Buffer(phost,BITMAP_SIZE(NEAREST, BORDER, BORDER, 118, 122));

                 Ft_App_WrCoCmd_Buffer(phost,CLEAR_COLOR_RGB(255, 255, 255));

                Ft_App_WrCoCmd_Buffer(phost,CLEAR(1, 1, 1));

                 Ft_App_WrCoCmd_Buffer(phost,DISPLAY());

                Ft_Gpu_CoCmd_Swap(phost);

                Ft_App_Flush_Co_Buffer(phost);

 while(1){…}

}

 

В основном цикле программы, в зависимости от состояния переменной status, будет происходить отображение одного или другого состояния экрана дисплея. Переменная status будет менять свое значение при нажатии кнопок “Старт” и “Назад”. Текущее состояние экрана будет сохраняться до тех пор, пока не будет нажата текущая кнопка. Основной код программы будет выглядеть таким образом:

while(1){

 

    if (status == 0)  // вызывается экран с первым логотипом

                {

                Ft_Gpu_CoCmd_Dlstart(phost);

                Ft_App_WrCoCmd_Buffer(phost,CLEAR_COLOR_RGB(255, 255, 255));

                Ft_App_WrCoCmd_Buffer(phost,CLEAR(1, 1, 1));

 

                // вызов первого логотипа

                Ft_App_WrCoCmd_Buffer(phost,BEGIN(BITMAPS));

                Ft_App_WrCoCmd_Buffer(phost,VERTEX2II(159, 67, 2, 0));

                Ft_App_WrCoCmd_Buffer(phost,END());

               

                // вызов кнопки с надписью "Старт"

                Ft_Gpu_CoCmd_FgColor(phost,6684620);

                Ft_Gpu_CoCmd_GradColor(phost,927487);

                Ft_App_WrCoCmd_Buffer(phost,COLOR_RGB(16, 52, 255));

                Ft_App_WrCoCmd_Buffer(phost,TAG(1));

                Ft_Gpu_CoCmd_Button(phost,152, 212, 153, 43, 1, 0, "01234");

               

                Ft_App_WrCoCmd_Buffer(phost,DISPLAY());

                Ft_Gpu_CoCmd_Swap(phost);

                Ft_App_Flush_Co_Buffer(phost);

               

                //проверка нажатия кнопки с помощью регистра меток

                ReadWord = Ft_Gpu_Hal_Rd8(phost, REG_TOUCH_TAG);

                if (ReadWord == 1){

                status = 1;

                Ft_Gpu_Hal_Sleep(200);

                                               }

                }

 

                if (status == 1) // вызывается экран со вторым логотипом

                {

                Ft_Gpu_CoCmd_Dlstart(phost);

                Ft_App_WrCoCmd_Buffer(phost,CLEAR_COLOR_RGB(255, 255, 255));

                Ft_App_WrCoCmd_Buffer(phost,CLEAR(1, 1, 1));

               

                // вызов второго логотипа

                Ft_App_WrCoCmd_Buffer(phost,BEGIN(BITMAPS));

                Ft_App_WrCoCmd_Buffer(phost,VERTEX2II(172, 49, 3, 0));

                Ft_App_WrCoCmd_Buffer(phost,END());

 

                // вызов кнопки с надписью "Назад"

                Ft_Gpu_CoCmd_FgColor(phost,6684620);

                Ft_Gpu_CoCmd_GradColor(phost,927487);

                Ft_App_WrCoCmd_Buffer(phost,COLOR_RGB(16, 52, 255));

                Ft_App_WrCoCmd_Buffer(phost,TAG(2));

                Ft_Gpu_CoCmd_Button(phost,152, 212, 153, 43, 1, 0, "56789");   

                Ft_App_WrCoCmd_Buffer(phost,DISPLAY());

                Ft_Gpu_CoCmd_Swap(phost);

                Ft_App_Flush_Co_Buffer(phost);

                 //проверка нажатия кнопки с помощью регистра меток

                ReadWord = Ft_Gpu_Hal_Rd8(phost, REG_TOUCH_TAG);

                if (ReadWord == 2){

                status = 0;

                Ft_Gpu_Hal_Sleep(200);

                                               }

                }

       }

 

Теперь пример полностью готов и можно проверить его работу. В результате мы должны увидеть окно эмулятора с изображением логотипа FTDI  и кнопки “Старт”. Во второе состояние экран дисплея перейдет после того, как мы наведем курсор на кнопку и нажмем левую кнопку мыши. Проконтролировать работу обработчика сенсорного экрана можно с помощью текста в верхней части окна эмулятора. В квадратных скобках отображаются текущие координаты курсора и состояние регистра меток REG_TOUCH_TAG (см. рис. 17).

Координаты курсора

 

Приведенный выше код можно перенести на микроконтроллер без дополнительных изменений, если используются библиотеки FTDI. Например, можно протестировать работу этой программы на микроконтроллере Atmel SAMD21, для которых процесс портирования и использования библиотек для FT800 был описан в [4, 5]. Готовый проект можно посмотреть по ссылке [8]. Результат работы описанного примера на микроконтроллере Atmel SAMD21 и TFT-дисплеях компании Riverdi приведен на рисунках 18 (RVT43ULFNWC0x) и 19 (RVT4.3B480272CNWR00). Дисплеи этого производителя уже включают в себя графические контроллеры FT800 и FT801. Компания Riverdi является первым производителем, кто начал серийное производство TFT-модулей на базе микросхем FTDI.

Изображение на экране дисплея  RVT43ULFNWC0x  Изображение на экране дисплея  RVT4.3B480272CNWR00

 

В качестве заключения отметим, что обновленная утилита Screen Editor и эмулятор MSVC Emulator для Visual Studio открывают много новых возможностей для освоения и оценки графических контроллеров FT800/801. С помощью предлагаемого ПО можно заранее продумать расположение всех элементов графического интерфейса на экране дисплея, “прикинуть” цветовое оформление, подобрать шрифты и изображения. Screen Editor позволяет преобразовать подготовленный макет в код, а MSVC Emulator - проверить работоспособность разрабатываемого приложения на ПК. Данное ПО будет также полезно и тем, кто только подбирает решение для новых проектов. С его помощью, без дополнительных затрат, можно заранее познакомиться с основным функционалом графических контроллеров FTDI и протестировать его возможности с помощью эмулятора на ПК.  

   Литература:

1. Долгушин С. Графический контроллер EVE FT800 компании FTDI //Компоненты и технологии. 2013. № 11.

2. Долгушин С. Начинаем работать с графическим контроллером FT800 FTDI // Компоненты и технологии. 2014. № 5.

3. Долгушин С. Графический контроллер EVE FT800 FTDI. Работа с пользовательскими шрифтами, кнопками и сенсорным экраном // Компоненты и технологии. 2014. № 6.

4. Долгушин С. Графический контроллер EVE FT800 FTDI и микроконтроллер SAMD21 Atmel. Работаем с графическими изображениями // Компоненты и технологии. 2014. № 8.

5. Долгушин С. Графический контроллер EVE FT800 FTDI и микроконтроллер SAMD21 Atmel. Работаем с графическими изображениями // Компоненты и технологии. 2014. № 10.

6. Долгушин С. Графический контроллер FT800. Вывод на экран изображения стрелочного индикатора и оптимальное использование ресурсов управляющего микроконтроллера. // Компоненты и технологии. 2015. № 2.

7. AN 245 “FT800 Sample Application Introduction For VM800B and VM800C Development Kits and Windows PC”

8. Скачать проект