Ftdi — Графический контроллер FT800 и микроконтроллер STM32


Содержание

STM Урок 163. LL. USART. Interrupt

В данном занятии мы поработаем с механизмом обработки прерываний от шины USART.

С прерываниями данными мы уже с вами знакомы из урока 14, только использовали мы при этом библиотеку HAL. Теперь нам предстоит работа с библиотекой LL, что не является сильно простой задачей, но так как в уроке 161 мы полностью познакомились с аппаратной частью шины USART, со всеми битами всех её регистров, то мы с нашей задачей обязательно справимся.

Схема наша также не изменилась, поэтому можем смело приступить к практической части урока.

Проект занятия был сделан из проекта прошлого урока с именем LL_USART_RX и имя ему было присвоено LL_USART_INT.

Откроем проект в Cube MX и включим прерывания на шине USART1

Сгенерируем проект, откроем его в Keil, подключим библиотеку для драйвера индикатора max7219.c, настроим программатор на автоперезагрузку и уберём оптимизацию.

Зайдём в тело функции MX_USART1_UART_Init и увидим, что у там выставился уровень приоритета глобальных прерываний USART1, а также включились данные глобальные прерывания

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

23 октября 2020

Начатую еще в прошлом году серию статей под условным названием «STM32 + периферия = LOVE» [1, 2, 3] продолжает обзор графических библиотек, позволяющих упростить и ускорить вывод на рынок готового изделия. Рассмотрены универсальная библиотека STemWin и более сложные, но предназначенные для топовых серий STM 32 библиотеки 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):

  • драйвер с прямым доступом 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!» на экран с использованием средств библиотеки:

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

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

Библиотека TouchGFX

TouchGFX — это программная среда, принадлежащая компании Draupner Graphics. В июле 2020 года компания 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

Инструментарий 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

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

Заключение

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

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

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

DIY Microcontrollers Blog

DIY electronics for each other. Электронные самоделки для всех.

Как запрограммировать STM32 без программатора

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

На плате имеются джамперы для установки режима загрузки контроллера. К сожалению они не подписаны, поэтому смотрим на фото выше и устанавливаем их так же. Установка джамперов BOOT0 в «1» и BOOT1 в «0» активируют встроенный загрузчик, как сказано в AN2606. Теперь можно подключить питание, а так же сигнальные линии RX и TX. Не стоит забывать о том, что линии RX и TX подключаются перекрестно:

Далее запускаем программу FlashLoader Demonstrator. выбираем нужный COM-порт и жмем далее. Если все подключено верно, то получаем сообщение о том, что подключенный контроллер имеет 64 кБ памяти и не имеет защиты от чтения.

Цукерберг рекомендует:  Pascal - Вебинары по pascal

Жмем далее. Открывается лист с имеющимися в контроллере страницами памяти, он нас не интересует, снова жмем далее. Открывается страница с возможностью выбора действий над контроллером:

  • Erase (стереть)
  • Download to device (загрузить прошивку в МК)
  • Upload from device (считать прошивку из МК)
  • Enable/Disable Flash protection (включить/отключить защиту флеш памяти)
  • Edit option bytes (редактирование защиты памяти)

Нажимаем далее, и видим как происходит процесс загрузки. При успешной загрузке, на зеленой полосе снизу появится надпись «Download operation finished successfully».

На этом процесс программирования завершен, светодиод мигает. После отключения платы с контроллером от питания или при нажатии кнопки сброса не забудьте переставить джампер BOOT0 в положение «0», иначе МК снова запустит загрузчик, а не Вашу программу!

addelectronics › Блог › Изучаем STM32. Маленький урок по программатору

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

Контроллеры STM32 можно прошить двумя путями.
1) Через встроеный бутлоадер (бутлоадер, это такая маленькая программка внутри каждого микропроцессора STM32, которая прикидывается программатором — это если по простому). Прошивка в таком варианте происходит через UART (для связи с компьютером используется переходник USB>COM)


2)Внешним программатором. Из внешних программаторов на данный момент есть большой выбор. Это может быть и ваша отладочная плата STM32 Discovery, и китайский аналог ST-LINK V2 mini, и оригинальный ST-Link.

Первым вариантом я не пользовался, но сложного в нём вроде ничего нет. Нужно скачать утилиту STM32 ST-LINK Utility и на вашем прошиваемом микроконтроллере выставить определённый сигнал на ножке\ножках BOOT0\BOOt1. Допустим возьмём для примера самый дешёвый и простой микроконтроллер STM32F030F4P6 в корпусе TSSOP20. У него есть ножка BOOT0, которую если мы замыкаем на массу — то у нас контроллер будет прошиваться через SWD (то есть от внешнего программатора), а если на эту ножку подать напряжения питания, то контроллер будет стартовать с встроенного бутлоадера, и ждать пока мы его прошьём через UART, то есть с помощью программы ST-LINK Utility.

Вторым вариантом намного проще работать, так как помимо того что вы можете прошивать свои микроконтроллеры так ещё и в режиме реального времени отлаживать свои программы (дебажить))
Для прошивки в таких случаях используется всего 4 ножки (по минимуму)
1)Vcc — питание 3 Вольт
2)VSS(Gnd) — масса
3)SWCLK
4)SWDIO

Такой вариант подключения для прошивки используется в том случае, если вы не сконфигурировали ножки SWCLK и SWDIO в качестве портов ввода-вывода. Если же вы эти ножки используете в качестве портов ввода-вывода, то прийдётся ещё подключать «физичесу» линию сброса. — RST . В таком варианте у нас получается 5 проводов для подключения
1)Vcc — питание 3 Вольт
2)VSS(Gnd) — масса
3)SWCLK
4)SWDIO
5)NRST

Вот так выглядит распиновка на плате STM32F4Discovery разъёма для программирования внешних микроконтроллеров. Пин VDD_Target является пином, для снятия показаний напряжения с прошиваемого устройства. Этот если по простому — для согласования уровня напряжений между программатором и прошиваемым устройством.

Вот так выглядит разъём программатора ST-LINK V2 mini. В нём есть дополнительные средства для работы с STM8 и т.д, поэтому для работы с STM32 нам нужны пины
1)Vcc — питание 3 Вольт
2)SWDIO
3)VSS(Gnd) — масса
4)SWCLK
10)NRST

Вот так выглядит схема подключения для прошивки нашего простейшего микроконтроллера STM32F030F4P6

Как видите, никаких заморочек нет. На этом думаю всё, если будут вопросы, то пишите в коментах, я добавлю эти нюансы в статью.

Ftdi — Графический контроллер FT800 и микроконтроллер STM32

Микроконтроллеры. Начало. STM32.

Автор: Александр Скалдуцкий, scelikr@gmail.com
Опубликовано 20.09.2013
Создано при помощи КотоРед.

Микроконтроллеры для котят

Всем Мяу, котаны :)

Как-то раз от меня ушла кошка :( Ну и чем валерьянку лопать, я решил заняться делом, так сказать «на благо Родине». Давно уж хотел цифровыми устройствами заняться, да времени не было (сами понимаете, то спать, то с кошкой по крышам гулять), а тут как раз время-то и появилось. Ну-с начнём..)

Всё как обычно начинается с выбора. Ну вроде выбор-то небольшой PIC, да AVR. Последние мне как-то больше приглянулись. Нужен был ещё и USB программатор за неимением других портов на компьютере, от цены которого у меня чуть хвост не отвалился. Ещё Arduino есть — зверёк такой. Его и программировать по USB можно. Ну, думаю, «то что доктор прописал». В селе нашем его только через интернет-магазин достать можно. Нашёл, где по-выгодней, чуть не купил и. ОПА! Смотрю — STM32VL-Discovery. Что за зверь такой? Хм, STM32.. Что-то слышал краем уха.. А от характеристик усы дыбом, честно!

А лап-то у неё сколько!

  • У Arduino 14 цифровых портов ввода/вывода и 6 аналоговых входов. У STM32VL-Discovery 45 цифровых входа/выхода 10 из которых по желанию превращаются в аналоговые входы.
  • У Arduino 32 Кб для хранения программы и 2 Кб ОЗУ. У STM32VL-Discovery 64 Кб для хранения программ и 8 Кб ОЗУ.
  • У Arduino тактовая частота 16 МГц у STM32VL-Discovery же 24 МГц.
  • Любой микроконтроллер STM32 можно заменить другим STM32, но с лучшими характеристиками, без изменения схемы
  • STM32 можно программировать без программатора по COM порту (об этом чуть позже)
  • Цена Arduino на момент написания статьи

1300 рублей, STM32VL-Discovery

600 рублей. Это ж дешевле более чем в 2 раза!

А что дальше? В STM32VL-Discovery есть встроенный программатор/отладчик, который лёгким движением лапы (снятием перемычек) может программировать и отлаживать (отладка очень уж вещь полезная, но об этом чуть позже) микроконтроллеры STM32 за пределами платы. С Arduino такое не прокатит. То есть используя STM32VL-Discovery мы и деньги экономим и получаем большую производительность и свободу творчества :)

Да и сами микроконтроллеры STM32 выглядят привлекательней остальных:

STM32F100C4T6B ATtiny24A-SSU PIC16F688-I/SL STM32F103RET6 ATmega1284P-PU PIC18F4550-I/PT
Средняя цена, руб 60 65 60 240 330 220
Тактовая частота, МГц 24 20 20 72 20 48
Flash память, Кбайт 16 2 4 512 128 16
RAM, Байт 4096 128 256 65536 16384 2048
USART, шт 2 5 2
SPI, шт 1 1 3 1 1
АЦП, шт 16x12Bit 8x10Bit 8x10Bit 16х12Bit 8x10Bit 13x10Bit
ЦАП, шт 1x12Bit 2х12Bit
Количество линий ввода/вывода, шт 37 12 12 51 32 35

А ещё STM32 32-х разрядные, а это означает возможность работы с 32-х битными данными за один такт. AVR и PIC этим не похвастаются.

Ну что, котаны, убедил? Тогда начнём курс молодого бойца цифровика!)

Как оно работает? Из чего состоит? Что умеет?

Как известно, все коты очень любознательные, а радиокоты особенно!

Микроконтроллер — это микросхема сочетающая в себе функции процессора, периферии, имеющая ОЗУ, flash память. Как компьютер, только меньше!

Проведём аналогию: компьютером управляет операционная система, а микроконтроллером «прошивка», которую пишете Вы; операционная система компьютера хранится на жёстком диске, «прошивка» микроконтроллера в его flash памяти; функции ОЗУ схожи — хранение изменяющихся данных во время выполнения программы. А ещё у МК есть различные периферийные устройства, такие как АЦП и ЦАП например.

МК общается с внешним миром при помощи лап на его корпусе (не таких как у котов, конечно, а металлических). Но не все из них управляются программой, есть выводы питания, вывод сброса, выводы питания периферии, вывод резервного питания. А те, которые управляются программой делятся на группы называемые «порты». Все эти управляемые выводы называются 2-мя буквами и цифрой. Например PA1: P — порт, А — порт «А», 1 — номер вывода этого порта.

В программе порты конфигурируются либо на вход, либо на выход, по вашему желанию.

Выводы порта настроенного на вход могут быть в разных режимах, для каждого вывода он может быть своим:

  • Цифровой вход — вход, значение которого (логическая 1 или 0) можно считывать программой. Если напяжение на входе 0, то значение равно 0, если на входе напяжение равное напрядению питания, то значение входа 1. Третьего не дано. Можно сделать с подтягивающим резистором либо к питанию, либо к массе
  • Аналоговый вход — вход значение которого можно считывать программой, но значений может быть много — целых 4096. А точнее от 0 если на входе напяжение 0 относительно минуса питания микроконтроллера до 4095, если на входе напряжение равное напряжению питания. Все эти преобразования делает АЦП — аналогово-цифровой преобразователь, при помощи его можно например измерять напряжение на терморезисторе и узнавать температуру или измерять напяжение на фоторезисторе и узнавать яркость попадающего на него света. Ну много чего можно придумать, если фантазия есть :) Если питать микроконтроллер от 3В, то 0В = 0, а 3В = 4096, значит 3/4096=0.000732421, т.е. при изменении напяжения на входе на 0.000732421В значение входа в программе меняется на 1. Не так-то всё и сложно, да? Идём дальше
  • Цифровой вход в режиме альтернативной функции — вход для работы с периферией. Например вход для таймера или вход для какого-нибудь интерфейса. Из программы значение этого входа считать нельзя. В программе можно например считать данные полученные по этому выводу каким-нибудь интерфейсом.

А у порта настроенного на выход выводы могут быть в таких режимах:

  • Выход. Просто выход. Обычный цифровой выход. На выводе либо напрядение питания (логическая 1) либо на выводе нет напряжения (логическая 0). Всё просто.
  • Выход в режиме альтернативной функции — выход управляемый периферией. Этим выходом нельзя управлять из программы, но программой можно заставить управлять этим выводом например интерфейс.

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

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

Ещё есть выводы BOOT 0 и BOOT 1. Эти выводы не относятся к портам, они служат для управления загрузкой микроконтроллера. Если во время подачи питания на выводе BOOT 0 логический ноль (вывод соединен с общей точкой), то микроконтроллер выполняет программу загруженную во flash память, т.е. Вашу прошивку. Если во время подачи питания на выводе BOOT 0 логическая еденица (вывод соединен с питанием микроконтроллера), а на выводе BOOT 1 логический ноль, то микроконтроллер выполняет не Вашу прошивку, а записанный на заводе загрузчик. Запомните это! Вы будете часто пользоваться этим в процессе работы с микроконтроллерами STM32! Иногда загрузка записанного с завода загрузчика — единственный способ записать/изменить прошивку микроконтроллера. Это бывает например при конфигурировании в прошивке выводов, к которым подключается программатор или при прошивке микроконтроллера без использования программатора. Так что настоятельно рекомендую при проектировании печатной платы эти выводы (или хотя бы BOOT 0) распологать в удобном месте.

Вот разобрались :) Теперь знаем что такое микроконтроллер, из чего он состоит. Сейчас узнаем ещё о некоторых премудростях и перейдём к самому интересному — практике!

Программа в микроконтроллере выполняется пошагово. Один такт процессора — один шаг программы.

Например пусть перемигивается красная и зелёная лампочки, пока НЕ нажата кнопка. Длительность каждой лампы — 5 секунд. Вот алгоритм:

  1. Проверяем, на входе с кнопкой есть напряжение? (кнопка замыкает вывод микроконтроллера на + питания)
  2. Если нет напряжения, то загорается красная лампочка на 5 секунд, зелёная тухнет, если есть напряжение, то начинаем всё сначала
  3. Снова проверяем
  4. Если нет напряжение, то загорается зелёная лампочка на 5 секунд, красная тухнет, если есть напряжение, то начинаем всё сначала
  5. Начинаем сначала


СТОП! А если я нажму кнопку, пока горит лампочка? То ничего не произойдёт! Потому что программа выполняется пошагово, а шаг с проверкой нажатия кнопки находится в момент переключения лампочек.
Вот именно для таких случаев есть такая вещь, как прерывания

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

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

Ну, котята, пора вставать на лапы! Надеюсь у Вас уже есть отладочная плата? Или хотя бы микроконтроллер? Надеюсь есть :) А если нет, то бежим в магазин! (и желательно не за колбасой. хотя. ) Какое же это учение без практики?

Отлично на первых порах иметь отладочную плату, например STM32VL-Discovery, но если жаба душит или всё-таки нехватает на колбасу, то можно обойтись и одним микроконтроллером и преобразователем интерфейсов RS-232 ->UART (напр. MAX3232) или USB ->UART (напр. FT232RL). В этом случае в 100 рублей можно вполне уложиться, но придётся делать печатную плату и паять минимум 48 выводов шириной 0,3 мм с зазором 0,2 мм. Я предупреждал.

Сначала нужно естественно прикошачить отладочную плату или контроллер к компьютеру.

Если у Вас отладочная плата:

С отладочной платой, конечно проще. Берём шнурок Mini-USB и соединяем плату с компьютером, все драйверы должны поставиться автоматически. Увидеть STMicroelectronics STLink dongle в диспетчере устройств — хороший знак! Ну а если что-то пошло не так и ничего не вышло — не надо царапать диван, нужно просто зайти сюда и установить STM32 ST-LINK utility.

Ну а если Вы счастливый обладатель компьютера под управлением Windows 8, то перед проведением вышеописанных действий нужно сделать так: Параметры -> Изменение параметров компьютера -> Общие -> Особые варианты загрузки и выбрать параметр Отключение проверки подписи драйверов.

Если у Вас микроконтроллер:

Если у Вас один микроконтроллер, то у Вас должны быть прямые лапы. Но я в Вас не сомневаюсь!

Перед подключением микроконтроллера к компьютеру его нужно припаять к печатной плате. Для этого кроме микроконтроллера и прямых лап нужна как минимум печатная плата. А тут уж Ваше творчество.

Рабочий минимум на схеме ниже:

Но это неинтересный минимум.

Добавьте светодиодов и кнопок (не забудьте про выводы BOOT), например так

А вот с пайкой этой блохи могут возникнуть проблемы. Но я надеюсь, не возникнут. Я накошачился паять её своим любимым советским 25 Вт паяльником с шириной жала в 3/4 ширины контроллера. У меня больше проблем с изготовлением печатной платы. ну тут уж у каждого своя технология.

И переходник нужно сделать на UART по документации к той микросхеме, которую купили.

Соединяем выводы TxD и RxD на печатной плате с выводами RxD и TxD соответственно переходника. Не забываем про общую точку и питание всего этого.

Ну вот, товарищи, и прикошачили. Дальше будем повелевать этой шайтан-машиной :)

Выбор и установка ПО

Пользоваться мы будем средой разработки CooCox IDE, но это не просто так, а по нескольким причинам:

  • Во-первых это свободно распространяемое ПО. А это значит, что Ваша карма будет чиста
  • На мой взгляд (да и не только на мой) эта среда разработки удобнее остаальных
  • Позволяет использовать отладку
  • Много примеров, которые можно загружать в среду разработки (полезно для котят и не только)

Среда разработки — это программа для написания кода, компилятор, отладчик в одном. Удобненько :) Но если какому-то суровому Челябинскому коту удобнее писать код (в блокноте например), компилировать и прошивать разными программами — я не против, тогда Вам пригодится STM32 ST-LINK utilit для загрузки прошивки в микроконтроллер. Хозяин барин, как говорится.

Эта среда разработки основана на многим известном Eclipse.

  1. Идём сюда
  2. Тыкаем Download through CoCenter (Recommend)
  3. Вводим адрес эл.почты (можно от балды, он там «для галочки»)
  4. После загрузки устанавливаем этот самый CoCenter
  5. В первой строчке, где написано CooCox CoIDE тыкаем Download
  6. После того, как загрузка закончится, то вместо Download будет Install. Сюда и жмём
  7. Идём сюда
  8. Справа в колонке Download скачиваем файл который .exe. Устанавливаем его.
  9. Открываем сам CooCox CoIDE, вкладка Project, Select Toolchain Path.
  10. Указываем путь к файлу arm-none-eabi-gcc.exe (это мы установили в п.8, путь приблизительно такой: D:Program Files (x86)GNU Tools ARM Embedded4.7 2013q1bin)
  11. Снова открываем CoIDE, нажимаем View ->Configuration, открываем вкладку Debugger и делаем так [фото]
  12. Радуемся, потому что теперь мы можем написать программу и прошить её в микроконтроллер! Чем мы и займёмся.

Если у Вас вариант без отладочной платы/программатора, то для загрузки программы в МК понадобится программка Flash Loader Demonstrator которая находится здесь

Находим общий язык

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

Проект состоит из файлов с расширениями .c и .h. В первых находятся функции во вторых названия используемых функций и константы например. Так уж заведено. Самый главный файл, в котором находится код программы main.c. Для использования различных функций нужно подключать библиотеки с этими функциями. Подключаются они записью #include «название_библиотеки» ну библиотеки естественно должны быть в проекте. Подключают их в самом начале файла.

Функции — это своеобразная часть программы. Вообще программа состоит из одной или нескольких функций. Функция имеет вид:

тип_возвращаемой_переменной имя_функции (тип_переменной)
<
Тело функции
>

В функцию можно отправить какую-нибудь переменную, фунция её обработает и вернёт какое-нибудь значение. Очень удобно использовать функцию для повторяющихся действий, чем писать постоянно один и тот же кусок кода, можно просто отправлять переменную в функцию и получать обратно обработанное значение.

Перед тем, как использовать функцию, её нужно объявить в самом начале файла. Делают это в таком виде:

тип_возвращаемой_переменной имя_функции (тип_переменной);

Ах, да, забыл самое главное! В конце каждой строки должна быть точка с запятой!

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

При запуске, первой всегда выполняется функция main().

Ну с функциями вроде разобрались, понимание придёт только с практикой.

Выше я упоминал тип переменной. Все переменные могут быть разных типов, вот основные:

  • INT — переменная этого типа может быть только целым числом от -2147483648 до 2147483647
  • FLOAT — переменная этого типа число с точностью до 7 разрядов от ±1,5*10-45 до ±3,4*1033
  • DOUBLE — число с точностью до 16 разрядов от ±5*10-324 до ±1,7*10306
  • ULONG — тоже целое число, но от 0 до 18446744073709551615
  • LONG — целое от -9223372036854775808 до 9223372036854775807
  • CHAR — один символ
  • BOOL — логическая переменная. Она может иметь только 2 значения: истина (true) или ложь (false)

Строку (слово, предложение) можно представить как массив из символов типа char. Например:


char stroka[5] = «Слово»;

Здесь квадратных скобках — количество символов в строке, «stroka» — название массива.

Перед использованием переменной её нужно обязательно объявить. (просто указать тип переменной и имя)

Дальше по плану операторы. Операторы — символы при помощи которых производятся какие либо операции над переменными.

  • + — сложение.
  • — вычитание.
  • * — умножение.
  • / — деление.
  • = — присвоение переменной значения.

Например выражение a=b+c значит присвоить переменной a значение суммы значений переменных b и c.

  • ++ — инкремент. Увеличение значения переменной на 1
  • — декремент. Уменьшение значения переменной на 1

Например выражение a++ значит увеличить значение переменной a на 1 (то же самое, что и a=a+1)

  • == — сравнение, знак «равно». (НЕ ПУТАТЬ С ПРИСВОЕНИЕМ)
  • != — сравнение, знак «не равно».
  • — сравнение, знак «больше».
  • >= — сравнение, знак «больше или равно».

Например выражение a b

  • >> — побитовый сдвиг вправо. Выражение a>>b в программе равносильно выражению a/2 b
  • & — логическое И.
  • | — логическое ИЛИ.
  • Чуть не забыл рассказать про циклы. Основные:

    тело цикла

    Тело цикла (всё что в фигурных скобках) выполняется, когда условие истинно (пока условие не станет ложным).

    Дальше идёт цикл всех циклов. Цикл со счетчиком. Он выполняется определенное количество раз, выглядит он так:

    for (начальное_значение; цикл_выполняется_до, шаг) <

    тело цикла

    Начальное_значение — начальное значение счётчика

    Цикл_выполняется_до — до достижения какого значения выполняется цикл

    Шаг — с каким шагом счетчик считает

    for (i=0; i CooIDE -> workspace -> имя_проекта -> имя_проекта -> Debug -> Bin. После снова нажимаем «Next».

    После того, как увидим такое окно:

    Отключаем питание микроконтроллера, закрываем Flash Loader Demonstrator, отключаем переходник, и включаем микроконтроллер в обычном режиме (когда при включении вывод BOOT 0 соединен с минусом питания микроконтроллера). Радуемся!

    Итак, теперь мы знаем, чем микроконтроллеры STM лучше других, знаем как работает микроконтроллер, умеем прошивать микроконтроллер в отладочной плате и в своей плате, знаем основы языка Си, которые нужны для программирования STM32, получили опыт работы с микроконтроллером (надеюсь положительный) и самое главное, теперь Вы можете воплотить свои идеи цифровых устройств в жизнь (и поведать о них, на нашем любимом РадиоКоте)! Пусть пока ещё простенькие, но всё навёрстывается с опытом. А я постараюсь в следующих статьях рассказать об АЦП, ЦАП, прерываниях, использовании отладки и других полезностях.

    Удачного воплощения идей!

    Все вопросы, не стесняемся, пишем на форум

    А ещё хочу поздравить РадиоКота с его главным праздником! Пусть время и течёт, как флюс из упавшего флакона, но РадиоКот всегда останется нашим незаменимым помощником и приютом для котов (и котят) с паяльниками. Здоровья тебе (все 7 штук), нечеловечьего счастья и сбычи кошачих мечт!

    STM32 – микроконтроллер для начинающих после Arduino

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

    Что такое STM32

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

    История появления

    Серия STM32 была выпущена в 2010 году. До этого компанией STMicroelectronics уже выпускались 4 семейства микроконтроллеров на базе ARM, но они были хуже по своим характеристикам. Контроллеры STM32 получились оптимальными по свойствам и цене. Изначально они выпускались в 14 вариантах, которые были разделены на 2 группы – с тактовой частотой до 2 МГц и с частотой до 36 МГц. Программное обеспечение у обеих групп одинаковое, как и расположение контактов. Первые изделия выпускались со встроенной флеш-памятью 128 кбайт и ОЗУ 20 кбайт. Сейчас линейка существенно расширилась, появились новые представители с повышенными значениями ОЗУ и Flash памяти.

    Достоинства и недостатки STM32

    • Низкая стоимость;
    • Удобство использования;
    • Большой выбор сред разработки;
    • Чипы взаимозаменяемы – если не хватает ресурсов одного микроконтроллера, его можно заменить на более мощной, не меняя самой схемы и платы;
    • Высокая производительность;
    • Удобная отладка микроконтроллера.
    • Высокий порог вхождения;
    • На данный момент не так много литературы по STM32;
    • Большинство созданных библиотек уже устарели, проще создавать свои собственные.

    Минусы STM32 не дают пока микроконтроллеру стать заменой Ардуино.


    Сравнение STM32 с Arduino

    По техническим характеристикам Ардуино проигрывает STM32. Тактовая частота микроконтроллеров Ардуино ниже – 16 МГц против 72 МГц STM32. Количество выводов GRIO у STM32 больше. Объем памяти у STM32 также выше. Нельзя не отметить pin-to-pin совместимость STM32 – для замены одного изделия на другое не нужно менять плату. Но полностью заменить ардуино конкуренты не могут. В первую очередь это связано с высоким порогом вхождения – для работы с STM32 нужно иметь базис. Платы Ардуино более распространены, и, если у пользователя возникает проблема, найти решение можно на форумах. Также для Ардуино созданы различные шилды и модули, расширяющие функционал. Несмотря на преимущества, по соотношению цена/качество выигрывает STM32.

    Семейство микроконтроллеров STM32 отличается от своих конкурентов отличным поведением при температурах от -40С до +80 С. Высокая производительность не уменьшается, в отличие от Ардуино. Также можно найти изделия, работающие при температурах до 105С.

    Обзор продуктовых линеек

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

    Серии STM32F-1, STM32F-2 и STM32L полностью совместимы. Каждая из серий имеет десятки микросхем, которые можно без труда поменять на другие изделия. STM32F-1 была первой линейкой, ее производительность была ограничена. Из-за этого по характеристикам контроллеры быстро догнали изделия семейства Stellaris и LPC17. Позднее была выпущена STM32F-2 с улучшенными характеристиками – тактовая частота достигала 120 МГц. Отличается высокой процессорной мощностью, которая достигнута благодаря новой технологии производства 90 нм. Линейка STM32L представлена моделями, которые изготовлены по специальному технологическому процессу. Утечки транзисторов минимальны, благодаря чему приборы показывают лучшие значения.

    Важно отметить, что контроллеры линейки STM32W не имеют pin-to-pin совместимости с STM32F-1, STM32F-2 и STM32L. Причина заключается в том, что линейку разрабатывала компания, которая предоставила радиочастотную часть. Это наложило ограничения на разработку для компании ST.

    Микросхема STM32F100R4 имеет минимальный набор функций. Объем флэш памяти составляет 16 Кбайт, ОЗУ – 4 Кбайт, тактовая частота составляет 12 МГц. Если требуется более быстрое устройство с увеличенным объемом флэш-памяти до 128 Кбайт, подойдет STM32F101RB. USB интерфейс имеется у изделия STM32F103RE. Существует аналогичное устройство, но с более низким потреблением – это STM32L151RB.

    Программное обеспечение для работы с контроллером

    Для ARM архитектуры разработано множество сред разработки. К самым известным и дорогостоящим относятся инструменты фирм Keil и IAR System. Программы этих компаний предлагают самые продвинутые инструментарии для оптимизации кода. Также дополнительно существуют различные системы – USB стеки, TCP/IP-стеки и прочие. Применяя системы Keil, пользователь получает хороший уровень технической поддержки.

    Также для STM32 используется среда разработки Eclipse и построенные на ней системы Atollic TrueStudio (платная) и CooCox IDE (CoIDE) (бесплатная). Обычно используется последняя. Ее преимущества перед другими средами разработки:

    • Свободно распространяемое программное обеспечение;
    • Удобство использования;
    • Имеется много примеров, которые можно загрузить.

    Единственный недостаток среды разработки CooCox IDE – сборка есть только под Windows.

    STM32 Discovery

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

    Что потребуется для подключения STM32 к компьютеру

    Чтобы начать работу, потребуются следующие компоненты:

    • Сама плата STM32 Discovery;
    • Datasheet на выбранную модель;
    • Reference manual на микроконтроллер;
    • Установленная на компьютер среда разработки.

    В качестве примера первая программа будет рассмотрена в среде CooCox IDE.

    Первая программа

    Обучение следует начинать с простейшего – с Hello World. Для начала нужно установить CooCox IDE на компьютер. Установка стандартная:

    • Скачивается программа с официального сайта;
    • Там нужно ввести адрес своей электронной почты и начать загрузку файла с расширением .exe;
    • Нужно открыть CooCox IDE вкладку Project, Select Toolchain Path;
    • Указать путь к файлу;
    • Снова открыть среду разработки и нажать View -> Configuration на вкладку Debugger;
    • Теперь можно записывать программу.

    Когда программа установлена, ее нужно открыть. Следует перейти во вкладку Browse in Repository и выбрать ST – свой микроконтроллер.

    Далее на экране появится список библиотек, которые можно подключить. Для первой программы потребуются системные CMSIS core и CMSIS Boot, библиотека для работы с системой тактирования RCC, GPIO для работами с пинами.

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

    В окошке Project следует открыть main.c. В коде в самом начале следует подключить библиотеки кроме CMSIS (они уже автоматически подключены). Добавляются они следующим образом:

    Затем добавляется тактирование порта в главной функции main. Какой контакт за что ответственен, можно просмотреть в даташите к микроконтроллеру.

    Для настройки параметров выводов следует прописать ее название и поставить точку. Во всплывающем меню будут указаны все характеристики. Их можно исправлять.

    После этого нужно сделать зацикливание в while, чтобы светодиод мигал, пока не отключится питание.

    Когда программа написана, ее можно загружать в контроллер. Если есть отладочная плата, ее нужно подключить через USB кабель и нажать Download Code To Flash. Если плата отсутствует, потребуется переходник, который нужно подключить к порту компьютера. Контакт BOOT 0 подключается к плюсу питания контроллера, а затем включается само питание МК. После этого начнется прошивка.

    Чтобы загрузить программу в микроконтроллер, нужно следовать указаниям от приложения. Сначала прописывается код порта, к которому подключен микроконтроллер. Также указывается скорость. Советуется брать небольшое значение, чтобы не было сбоев. Программа найдет микроконтроллер, и нужно будет нажать кнопку «далее». Во вкладке Download to device нужно в поле Download from file выбрать написанную программу и нажать «далее».

    После этого нужно отключить питание контроллера STM32, закрыть Flash Loader Demonstrator, выключить переходник. Теперь можно снова включить микроконтроллер в обычном режиме. Когда программа будет загружена, светодиод начнет мигать.

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

    FTDI выпускает серию Arduino-совместимых отладочных модулей на графическом контроллере FT800

    FTDI VM800P35A-BK VM800P43A-BK VM800P50A-BK VM800P35A-PL VM800P43A-PL VM800P50A-PL

    Отладочные модули на графическом контроллере FT800 с поддержкой технологии Embedded Video Engine интегрируют все необходимые функции для разработки современных высококачественных графических пользовательских интерфейсов

    Компания FTDI Chip в начале 2013 года представила микросхему — графический контроллер серии FT800 «EVE» (Embedded Video Engine), предназначенный для управления графическими дисплеями с разрешением до 480×272 точек. Кроме графических функций, микросхема включает в себя контроллер резистивного сенсорного экрана и аудиоконтроллер с встроенной библиотекой готовых звуковых эффектов. Контроллер за год своего существования завоевал несколько наград на выставках, благодаря не только своим уникальным возможностям, но и всесторонней поддержке со стороны производителя: готовые примеры, программные библиотеки функций и завершенные аппаратные решения в виде готовых дисплейных модулей.

    С целью дальнейшего расширения сферы применения графических контроллеров, в частности, в приложениях на базе платформы Arduino, компания выпускает серию отладочных модулей VM800P ‘Plus’, представляющих собой завершенные решения дисплейных модулей для реализации графических пользовательских интерфейсов. Серия отладочных модулей расширяет ассортимент продукции компании FTDI и включает в себя поддержку Arduino на уровне отладочной платформы. Аппаратная часть модулей объединяет графический контроллер FT800, микросхему преобразователя интерфейса USB-UART FT232R и микроконтроллер Atmel AVR ATmega328P (Arduino PRO), который легко программируется из интегрированной среды разработки Arduino IDE.

    Слово «Plus» в названии модуля присутствует не случайно, так компания подчеркивает многофункциональность и богатые возможности: цветной ЖК дисплей, драйвер подсветки, сенсорный экран, усилитель звука и миниатюрный динамик. Помимо аппаратной части платформы разработки, компания предлагает более 50 примеров приложений, от самых простых пользовательских интерфейсов до интерфейсов управления бытовой техникой и промышленными приложениями, которые доступны через набор Arduino-библиотек.

    Отладочные модули представляют собой завершенные решения для реализации графического пользовательского интерфейса с дисплеем и резистивным сенсорным экраном в прочной пластиковой рамке. Модули выпускаются с диагональю дисплея от 3.5» до 5» в серебристой или черной рамке. Программирование и конфигурирование модулей осуществляется посредством среды Arduino IDE и Arduino-совместимого загрузчика. Дополнительно модули снабжены некоторой полезной периферией: драйвер подсветки дисплея, аудио усилитель и динамик, часы реального времени с резервным источником питания, преобразователи логических уровней, слот карты памяти microSD. Для питания отладочного модуля может использоваться внешний источник 5 В, или питание может подано непосредственно от USB порта.

    В дальнейшем компания планирует выпуск плат расширения, которые будут подключаться к отладочному модулю посредством двух миниатюрных 16-контактных разъемов Micro-MaTch. На этих разъемах доступны сигналы коммуникационных интерфейсов и портов ввода/вывода микроконтроллера ATmega328P.


    В комплекте с отладочным модулем поставляется карта памяти microSD 4 ГБайт с предустановленными демонстрационными интерактивными приложениями и библиотека бесплатных приложений, раскрывающих основное применение отладочных дисплейных модулей.

    Состав серии отладочных модулей VM800P ‘Plus’

    Модуль Основные характеристики
    VM800P35A-BK Графический контроллер FT800,
    микроконтроллер ATmega328P (5 В/16 МГц),
    TFT дисплей 3.5’’, черный корпус
    VM800P43A-BK Графический контроллер FT800,
    микроконтроллер ATmega328P (5 В/16 МГц),
    TFT дисплей 4.3’’, черный корпус
    VM800P50A-BK Графический контроллер FT800,
    микроконтроллер ATmega328P (5 В/16 МГц),
    TFT дисплей 5.0’’, черный корпус
    VM800P35A-PL Графический контроллер FT800,
    микроконтроллер ATmega328P (5 В/16 МГц),
    TFT дисплей 3.5’’, перламутровый корпус
    VM800P43A-PL Графический контроллер FT800,
    микроконтроллер ATmega328P (5 В/16 МГц),
    TFT дисплей 4.3’’, перламутровый корпус
    VM800P50A-PL Графический контроллер FT800,
    микроконтроллер ATmega328P (5 В/16 МГц),
    TFT дисплей 5.0’’, перламутровый корпус

    Для работы с отладочным модулем пользователю потребуется источник питания 5 В, кабель microUSB и стилус для работы с резистивным сенсорным экраном.

    Помимо представленных отладочных модулей доступны для заказа более ранние отладочные дисплейные модули серии VM800BXX-XX и отладочные модули серии VM800CXX-XX.

    Следует отметить, что FTDI сотрудничает с компаниями mikroElektronica и 4D Systems, которые используют графический контроллер FT800 в своих продуктах (микроконтроллерные платы, модули, отладочные платы), и также предлагают свои аппаратно-программные решения для разработки пользовательских интерфейсов.

    Перевод: Vadim по заказу РадиоЛоцман

    Ftdi — Графический контроллер FT800 и микроконтроллер STM32

    все что посвящено электронике и общению специалистов. реклама других ресурсов.

    В помощь начинающему

    вопросы начального уровня

    International Forum

    This is a special forum for English spoken people, read it first.

    Образование в области электроники

    все что касается образования, процесса обучения, студентам, преподавателям.

    Обучающие видео-материалы и обмен опытом

    Обсуждение вопросов создания видео-материалов

    Cистемный уровень проектирования

      Последнее сообщение

    Вопросы системного уровня проектирования

    Применение MATLAB, Simulink, CoCentric, SPW, SystemC ESL, SoC

    Математика и Физика

    Операционные системы

    Linux, Win, DOS, QNX, uCOS, eCOS, RTEMS и другие

    Документация

    оформление документации и все что с ней связано

    Разработка цифровых, аналоговых, аналого-цифровых ИС

    Электробезопасность и ЭМС

    Обсуждение вопросов электробезопасности и целостности сигналов

    Управление проектами

    Управление жизненным циклом проектов, системы контроля версий и т.п.

    Нейронные сети и машинное обучение (NN/ML)

    Форум для обсуждения вопросов машинного обучения и нейронных сетей

    Программируемая логика ПЛИС (FPGA,CPLD, PLD)

      Последнее сообщение

    Среды разработки — обсуждаем САПРы

    Quartus, MAX, Foundation, ISE, DXP, ActiveHDL и прочие.
    возможности, удобства.


    Работаем с ПЛИС, области применения, выбор

    на чем сделать? почему не работает? кто подскажет?

    Языки проектирования на ПЛИС (FPGA)

    Verilog, VHDL, AHDL, SystemC, SystemVerilog и др.

    Системы на ПЛИС — System on a Programmable Chip (SoPC)

    разработка встраиваемых процессоров и периферии для ПЛИС

    Цифровая обработка сигналов — ЦОС (DSP)

      Последнее сообщение

    Сигнальные процессоры и их программирование — DSP

    Обсуждение различных сигнальных (DSP) процессоров, возможностей, совместимости и связанных с этим тем.

    Алгоритмы ЦОС (DSP)

    Обсуждение вопросов разработки и применения (программирования) алгоритмов цифровой обработки сигналов.

      Последнее сообщение

    Cредства разработки для МК

    FAQ, How-to, тонкости работы со средствами разработки

    MSP430

    Все остальные микроконтроллеры

    и все что с ними связано

    Отладочные платы

    Вопросы, связанные с отладочными платами на базе МК: заказ, сборка, запуск

    Печатные платы (PCB)

      Последнее сообщение

    Разрабатываем ПП в САПР — PCB development

    FAQ, вопросы проектирования в ORCAD, PCAD, Protel, Allegro, Spectra, DXP, SDD, WG и др.

    Работаем с трассировкой

    тонкости PCB дизайна, от Spectra и далее.

    Изготовление ПП — PCB manufacturing

    Фирмы, занимающиеся изготовлением, качество, цены, сроки

    Сборка РЭУ

      Последнее сообщение


    Пайка, монтаж, отладка, ремонт

    вопросы сборки ПП, их отладки, различного рода ремонт

    Корпуса

    обсуждаем какие есть копруса, где делать и прочее

    Вопросы надежности и испытаний

    расчеты, методики, подбор компонентов

    Аналоговая и цифровая техника, прикладная электроника

      Последнее сообщение

    Вопросы аналоговой техники

    пока помещаются в одном форуме

    Цифровые схемы, высокоскоростные ЦС

    High Speed Digital Design

    Rf & Microwave Design

    wireless технологии и не только

    Метрология, датчики, измерительная техника

    Все что связано с измерениями: измерительные приборы (осциллографы, анализаторы спектра и пр.), датчики, обработка результатов измерений, калибровка, технологии измерений и др.

    АВТО электроника

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

    Умный дом

    3D печать

    3D принтеры, наборы, аксессуары, ПО

    Робототехника

    Модели, классификация, решения, научные исследования, варианты применения

    Силовая Электроника — Power Electronics

      Последнее сообщение

    Силовая Преобразовательная Техника

    Источники питания электронной аппаратуры, импульсные и линейные регуляторы. Топологии AC-DC, DC-DC преобразователей (Forward, Flyback, Buck, Boost, Push-Pull, SEPIC, Cuk, Full-Bridge, Half-Bridge). Драйвера ключевых элементов, динамика, алгоритмы управления, защита. Синхронное выпрямление, коррекция коэффициента мощности (PFC)

    Обратная Связь, Стабилизация, Регулирование, Компенсация

    Организация обратных связей в цепях регулирования, выбор топологии, обеспечение стабильности, схемотехника, расчёт

    Первичные и Вторичные Химические Источники Питания

    Li-ion, Li-pol, литиевые, Ni-MH, Ni-Cd, свинцово-кислотные аккумуляторы. Солевые, щелочные (алкалиновые), литиевые первичные элементы. Применение, зарядные устройства, методы и алгоритмы заряда, условия эксплуатации. Системы бесперебойного и резервного питания

    Высоковольтные Устройства — High-Voltage

    Высоковольтные выпрямители, умножители напряжения, делители напряжения, высоковольтная развязка, изоляция, электрическая прочность. Высоковольтная наносекундная импульсная техника

    Электрические машины, Электропривод и Управление

    Электропривод постоянного тока, асинхронный электропривод, шаговый электропривод, сервопривод. Синхронные, асинхронные, вентильные электродвигатели, генераторы

    Индукционный Нагрев — Induction Heating


    Технологии, теория и практика индукционного нагрева

    Системы Охлаждения, Тепловой Расчет – Cooling Systems

    Охлаждение компонентов, систем, корпусов, расчёт параметров охладителей

    Моделирование и Анализ Силовых Устройств – Power Supply Simulation

    Моделирование силовых устройств в популярных САПР, самостоятельных симуляторах и специализированных программах. Анализ устойчивости источников питания, непрерывные модели устройств, модели компонентов

    Компоненты Силовой Электроники — Parts for Power Supply Design

    Силовые полупроводниковые приборы (MOSFET, BJT, IGBT, SCR, GTO, диоды). Силовые трансформаторы, дроссели, фильтры (проектирование, экранирование, изготовление), конденсаторы, разъемы, электромеханические изделия, датчики, микросхемы для ИП. Электротехнические и изоляционные материалы.

    ОБОРУДОВАНИЕ
    ТЕХНОЛОГИИ
    РАЗРАБОТКИ

    Блог технической поддержки моих разработок

    Урок 2. Плата STM32F103C8T6. Загрузка программы во FLASH-память микроконтроллера через системный бутлоадер.

    В уроке получим минимальную информацию об отладочной плате STM32F103C8T6. Добавим к плате компоненты необходимые для загрузки программ в микроконтроллер (прошивка FLASH).

    В наших уроках будем использовать отладочную плату на базе микроконтроллера STM32F103C8T6.

    Часто ее называют ”Blue pill”, в переводе – синяя таблетка или пилюля.

    По моей партнерской ссылке плата стоит всего 175 руб.

    Технические характеристики платы STM32F103C8T6.

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

    Микроконтроллер STM32F103C8T6,
    ядро ARM Cotrex M3
    Число разрядов 32 бита
    Максимальная частота 72 мГц
    Объем памяти программ (FLASH) 64 / 128 кБайт
    Объем памяти данных (RAM) 20 кБайт
    Выводы 37
    Таймеры общего назначения 3
    Расширенный таймер с ШИМ управления двигателем 1
    Системный таймер 1
    Сторожевые таймеры 2
    UART 3
    SPI 2
    I2C 2
    CAN 1
    USB 1
    Контроллеры прямого доступа к памяти 7
    АЦП 2 АЦП, 10 каналов, время преобразования 1 мкс
    Часы реального времени есть
    Аппаратный модуль расчета CRC есть
    Напряжение питания микроконтроллера 2 … 3,6 В
    Напряжение питания платы 5 В
    Ток потребления до 50 мА
    Размеры платы 53 x 22,5 мм

    Выводы микроконтроллера непосредственно соединены с выводами платы.

    Сейчас обращаем внимание на следующее:

    • Микроконтроллер питается от напряжения 3 В и высокие уровни выходных и входных дискретных сигналов у него тоже 3 В. Но часть выводов, обозначенных на схеме закрашенной точкой, допускают при использовании в качестве входов подключение сигналов с уровнями 5 В. Так называемые толерантные к 5 В входы. Остальные входы рассчитаны на напряжение не более напряжения питания, обычно 3 В. Повышение этого напряжения свыше 4 В приведет к повреждению микроконтроллера.
    • При использовании в качестве выходов, выводы микроконтроллера допускают вытекающий и втекающий ток не более 20 мА. Рекомендуется не более 8 мА. Но 3 вывода, отмеченные восклицательным знаком, могут быть использованы только в схемах с втекающим током и не более 3 мА.
    • К выводу PC13 подключен светодиод общего назначения. Светится он при низком уровне сигнала.

    Система питания платы.

    Схема цепей питания выглядит так.

    Узел вырабатывает напряжение 3,3 В, необходимое для питания микроконтроллера. Используется стабилизатор XC6204.

    Он получает питание 5 В либо с USB порта, либо с вывода платы 5 V. Эти цепи соединены непосредственно без защитного диода. Поэтому использовать плату с одновременным питанием от этих двух источников нельзя.

    Ток потребления микроконтроллера зависит от частоты тактирования и использования периферийных устройств.

    Частота, мГц Ток потребления, мА
    Все периферийные устройства включены 72 50
    48 36
    36 29
    24 20
    16 15
    8 9
    Все периферийные устройства выключены 72 33
    48 25
    36 20
    24 14
    16 11
    8 7

    Я привел эту таблицу, чтобы вы поняли насколько важно выбирать оптимальную частоту тактирования, особенно в приложениях критичных к энергопотреблению. Микроконтроллеры STM32 позволяют это делать гибко и оперативно.

    Вот полная принципиальная схема платы.

    Загрузка программы в микроконтроллер с помощью системного бутлоадера.

    Четырех контактный разъем на торце платы предназначен для загрузки программ с помощью аппаратного программатора, например StLink. Но в микроконтроллере существует программный загрузчик, позволяющий зашить программу через UART 1 (выводы A9 и A10). Он называется системным загрузчиком и зашивается в память микроконтроллера на этапе производства.

    За режим работы платы отвечают 2 желтые перемычки.

    Это обычный режим работы. При включении или сбросе запускается программа из FLASH.

    При таком положении перемычек запускается системный загрузчик. Это режим прошивки FLASH-памяти микроконтроллера.

    При таком положении перемычек программа загружается в ОЗУ. Используется на этапе отладки для сохранения ресурса программирования FLASH-памяти.

    Соответствие состояния входов BOOT и режимов работы микроконтроллера STM32. Перемычка BOOT0 на рисунках расположена сверху.

    BOOT1 BOOT0 Режим запуска программы
    Внутренняя FLASH
    1
    1 Системная память
    1 1 Внутреннее ОЗУ

    Таким образом, процесс программирования через системный бутлоадер выглядит так:

    • подключить выводы A9 и A10 к COM порту компьютера;
    • установить перемычку BOOT0 в режим запуска из системной памяти;
    • сбросить микроконтроллер;
    • запустить на компьютере программу прошивки FLASH микроконтроллера;
    • вернуть перемычки в состояние запуска программы из FLASH;
    • сбросить микроконтроллер.

    Во первых в современных компьютерах не часто встречается COM порт. Во вторых слишком много манипуляций с перемычками и сбросом. Утомительное занятие.

    Я упростил этот процесс так.

    Плату подключил к компьютеру через мост USB-UART. Я использовал PL2303, но можно применить любой другой модуль, даже плату Ардуино со встроенным преобразователем интерфейсов. Например, Arduino Nano. Надо только соединить вход сброса с землей для того, чтобы микроконтроллер не влиял на сигналы преобразователя интерфейса CH340.

    Вместо перемычки BOOT0 я установил кнопку. Еще одну кнопку припаял на сигнал сброса. Штатной кнопкой сброса пользоваться неудобно.

    Вот моя схема отладочного модуля.

    Резистор 10 кОм припаян между выводами трех контактного разъема PLS, установленного вместо перемычки BOOT0.

    Питание плата STM32 получает от моста USB-UART. На нем надо установить перемычку питания в положение 5 В.

    У меня все это выглядит так.

    Пользоваться достаточно удобно. Когда кнопки не нажаты, плата работает в обычном режиме.

    • Нажимаю и удерживаю кнопку ПРОШИВКА, кратковременно нажимаю кнопку СБРОС.
    • Загружаю программу во FLASH микроконтроллера.
    • Отпускаю кнопку ПРОШИВКА.
    • Нажимаю кнопку СБРОС.

    Все это делается пальцами одной руки.

    В следующем уроке будем устанавливать программное обеспечение для разработки приложений STM32, создадим и загрузим в микроконтроллер первую тестовую программу.

    19dx.ru — R0WBH

    Личный блог Гладышева Дмитрия

    Прошивка STM32 через UART при наличии hex-файла

    Данная статья вам поможет прошить STM32 через UART, если у вас есть скомпилированный hex-файл прошивки.

    Нам понадобится любой USB-UART адаптер из следующих:

    • Silicon Labs CP2102;
    • FTDI FT232RL;
    • Prolific PL2303;
    • или любой другой.

    Качаем Flash Loader Demonstrator. Подключаем плату к компьютеру через USB-UART адаптер. Схема подключения такая:

    A9 (TX) — RX
    A10 (RX) — TX

    Перемычку BOOT0 ставим в положение 1 и нажимаем Reset. Это переключит плату в режим загрузчика. В положении 0 данная перемычка включает режим выполнения пользовательской программы сразу после включения/сброса.

    Запускаем программу. Настраиваем параметры порта. Если в процессе загрузки программы возникает ошибка, попробуйте установить меньшую скорость передачи. У меня всё работает и на максимальных скоростях.

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

    Здесь мы видим адреса страниц памяти, а также их состояние (защита от чтения/записи). Просто жмём Next.

    Вот здесь уже предстоит выбрать, что мы хотим сделать с микроконтроллером, а точнее с его памятью. Можно очистить память (полностью или частично), загрузить программу, выгрузить программу из памяти в файл, установить защиту, либо произвольно отредактировать данные. Выбираем загрузку на устройство (Download to device). Выбираем hex-файл с прошивкой. Галочка «Verify after download» позволяет проверить правильность записи программы. Если же поставить галочку «Jump to the user program», то программа будет выполнена сразу же после загрузки, даже без возвращения перемычки BOOT0 на место и перезагрузки контроллера.

    Нажимаем Next и если всё пройдёт успешно, то МК будет прошит.

    Цукерберг рекомендует:  Программист введение в специальность
  • Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих