Микроконтроллеры STM32F7. Часть 4. Экосистема

Данная серия публикаций основана на материалах цикла STM32F7 Online Training от компании STMicroelectronics. В статьях представлено описание функциональных блоков и инструментов разработки для семейства микроконтроллеров STM32F7. Логически материал разбит на 4 главы, охватывающие тематику системной периферии, памяти, безопасности, аналоговой периферии, цифровой периферии, таймеров, экосистемы. Главы не связаны между собой, и читатель может ознакомиться с ними в произвольном порядке.

Подписаться на получение уведомлений о публикациях по микроконтроллерам ARM.

STM32CubeMX

STM32CubeMX – программная платформа с графическим интерфейсом, которая максимально упрощает построение программных проектов для микроконтроллеров STM32. STM32CubeMX позволяет работать не только с семейством STM32F7, но и со всеми существующими семействами микроконтроллеров STM32 (рисунок 118).

Рис. 1. Структура программной платформы STM32Cube

Рис. 118. Структура программной платформы STM32Cube

STM32CubeMX позволяет выполнять следующие операции (рисунок 119):

Рис. 2. Возможности STM32CubeMX

Рис. 119. Возможности STM32CubeMX

  • выбирать оптимальный микроконтроллер или отладочную плату с учетом особенностей конкретного приложения. Фильтрация производится по различным полям, таким как серия, корпус, объем памяти и так далее;
  • конфигурировать выводы микроконтроллера с помощью утилиты Pin Wizard;
  • настраивать частоты глобальных тактовых сигналов и тактовых сигналов периферийных устройств с помощью утилиты Clock Wizard;
  • настраивать параметры ПО промежуточного уровня, такие как файловая система, стеки протоколов, операционные системы и прочее, а также периферийные блоки с помощью утилиты Perepherial and middleware Wizard;
  • оценивать уровень потребления и срока службы аккумулятора при заданных настройках микроконтроллера с помощью утилиты Power consumption Wizard;
  • Создавать и редактировать проекты для микроконтроллеров STM32 с последующей генерацией С-кода для конкретных IDE (IAR™ EWARM, Keil™MDK-ARM, Atollic® TrueSTUDIO и AC6 System Workbench (SW4STM32)). При этом для генерации С-кода могут использоваться различные библиотеки нижнего уровня от ST: HAL или LL.

STM32CubeMX доступен для бесплатного скачивания на сайте www.st.com. После установки программы пользователь должен скачать библиотеки для требуемого семейства STM32, в нашем случае речь идет о программном пакете FW.F7.x.x.x. Скачивание можно производить непосредственно из STM32CubeMX. Для этого на заглавной странице, появляющейся сразу после запуска, нужно перейти на вкладку INSTALL/REMOVE (рисунок 120). Очень часто на сайте компании появляются обновления как самой программы STM32CubeMX, так и отдельных библиотек. Пользователям рекомендуется периодически проверять обновления (есть функция автообновления). Для этого необходимо заходить на вкладку CHECK FOR UPDATES (рисунок 120).

Рис. 3. Обновление STM32CubeMX и программных библиотек

Рис. 120. Обновление STM32CubeMX и программных библиотек

Рассмотрим процесс создания проекта в STM32CubeMX, который представляет собой последовательность из нескольких шагов.

Для создания нового проекта пользователь должен выбрать подходящий микроконтроллер или отладочную плату. В этом ему помогут утилиты MCU Selector или Board Selector (рисунок 121).

Рис. 4. Создание проекта начинается с выбора микроконтроллера или отладочной платы

Рис. 121. Создание проекта начинается с выбора микроконтроллера или отладочной платы

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

Рис. 5. Выбор контроллера производится с помощью фильтров

Рис. 122. Выбор контроллера производится с помощью фильтров

После выбора подходящего контроллера разработчику предлагается определить назначение выводов с помощью утилиты Pin Wizard (рисунок 123). При этом выводы могут настраиваться индивидуально с помощью удобной диаграммы либо с помощью окна периферии. В последнем случае пользователь выбирает активные периферийные блоки, а программа автоматически подсвечивает занимаемые выводы. При этом стоит отметить удобную систему подсветки:

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

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

Рис. 6. Работа с утилитой Pin Wizard

Рис. 123. Работа с утилитой Pin Wizard

Кроме периферийных блоков, пользователь может выбрать и настроить дополнительные библиотеки, в частности – файловую систему FATFS, операционную систему FreeRTOS и другие (рисунок 124).

Рис. 7. Настройка промежуточного ПО

Рис. 124. Настройка промежуточного ПО

Настройка системы тактирования производится с помощью вкладки Clock Configuration (утилита Clock Wizard), при этом пользователь работает с визуализированным деревом тактирования (рисунок 125). Clock Wizard позволяет за несколько кликов мыши выбрать источник системного тактового сигнала, значения делителей и умножителей, а также источники тактирования периферийных блоков. При этом если какой-либо тактовый сигнал выходит за границы допустимых значений, программа сразу же сообщает об ошибке.

Рис. 8. Работа с деревом тактирования в Clock Wizard

Рис. 125. Работа с деревом тактирования в Clock Wizard

После того как все выводы и периферия настроены, а также сконфигурировано дерево тактирования, можно переходить к генерации кода. Это выполняется на вкладке Project Manager (рисунок 126). Здесь пользователь может настроить параметры проекта (название и путь), а также определить тип создаваемого проекта, который определяется выбором целевой IDE. В настоящий момент STM32CubeMX поддерживает следующие IDE:

Рис. 9. Настройка проекта и кодогенератора

Рис. 126. Настройка проекта и кодогенератора

  • EWARM (версии 7 и 8);
  • MDK-ARM (версии 4 и 5);
  • TrueStudio;
  • SW4STM32;
  • кроме того, кодогенератор может создавать makefile.

Далее на вкладке Code Generator следует определиться с составом копируемых в директорию проекта библиотек, настройками обработки пользовательского кода при регенерации (например, сохранять или удалять), настройками использования HAL. Стоит отметить важную особенность: если при настройке выводов в разделе HAL Settings поставить галочку напротив пункта «set all free pins as analog», и если при этом в Pin Wizard интерфейсы SWD/JTAG не были определены, то дальнейшая отладка микроконтроллеров с помощью этих интерфейсов будет невозможна.

Для более детальной настройки кодогенератора следует перейти на вкладку Advanced Settings. Главной особенностью С-генератора в STM32CubeMX является возможность использования как HAL, так и LL-драйверов. В рамках одного и того же проекта на STM32CubeMX можно одновременно использовать как HAL, так и LL, но для разных периферийных блоков. Подробнее об этих драйверах рассказывается в следующем разделе.

После нажатия на кнопку «GENERATE CODE» STM32CubeMX создает С-проект для выбранной IDE. Проект уже содержит весь код необходимый для конфигурации тактирования, выводов и периферии, выбранной пользователем. Чтобы в дальнейшем без проблем повторно генерировать код конфигурации без стирания пользовательского кода, разработчик должен помещать свой код в специальные секции (User code).

Еще одной полезной утилитой в составе STM32CubeMX является Power Consumption Calculator (рисунок 127). Этот калькулятор позволяет не просто рассчитать потребление микроконтроллера в различных режимах, но и определить срок службы различных элементов питания.

Рис. 10. Окно расчета потребления микроконтроллера

Рис. 127. Окно расчета потребления микроконтроллера

STM32CubeF7

Как было сказано выше, программа STM32CubeMX работает с отдельными подгружающимися библиотеками (рисунок 118). Отдельный программный пакет STM32CubeF7 предназначен специально для работы с микроконтроллерами семейства STM32F7. Стоит понимать, что STM32CubeF7 содержит только открытые и бесплатные библиотеки и драйверы от ST. Полный перечень всех существующих на рынке библиотек и утилит, которые можно использовать совместно с STM32F7, оказывается чрезвычайно обширным и не рассматривается в данной публикации.

STM32CubeF7 состоит из нескольких уровней (рисунок 128):

Рис. 11. Структура STM32CubeF7

Рис. 128. Структура STM32CubeF7

  • низкоуровневые драйверы HAL и LL с библиотеками и примерами;
  • ПО промежуточного уровня с библиотеками и примерами (middleware);
  • ПО прикладного уровня в виде демонстрационных примеров для отладочных плат;
  • CMSIS и утилиты.

Рассмотрим составляющие STM32CubeF7 подробнее.

Hardware abstraction Layer (HAL) – набор абстрактных драйверов, обеспечивающих максимальную кроссплатформенность среди контроллеров STM32. При этом некоторые драйверы являются абсолютно универсальными (подходят ко всем  контроллерам STM32), а часть применима только к отдельным линейкам с соответствующими периферийными блоками, например, блоками шифрования. Главными достоинствами HAL являются:

  • максимальная кроссплатформенность;
  • функциональная ориентированность: эти драйверы ориентированы не на работу с отдельными блоками контроллера, а на выполнение конкретных задач. Это дает возможность работать не с регистрами, а с осмысленными функциями;
  • простота использования, так как от пользователя не требуется глубокого знания архитектуры микроконтроллера.

Вместе с тем, у HAL есть и недостатки: значительный объем кода, неоптимальность выполнения задач, недостаточно высокое быстродействие. Если эти недостатки являются критичными, то следует использовать LL-драйверы.

Low Layer APIs (LL) – аппаратно зависимые драйверы, позволяющие напрямую работать с периферией контроллера, в том числе – использовать inline-функции и выполнять атомарный доступ к регистрам. Такой подход не требует значительных затрат памяти, функции получаются максимально короткими и эффективными по скорости. Очевидными недостатками LL-драйверов являются снижение совместимости кода при переходе от одного контроллера к другому и необходимость знания особенностей архитектуры контроллера.

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

Таблица 18. ПО промежуточного уровня STM32CubeF7

Библиотека Владелец Лицензия
FreeRTOS™ Real Time Engineers Ltd. Modified GNU GPL
LwIP Swedish Institute of Computer Science BSD 3-Clause
mbedTLS Arm® Apache License Version 2.0
STemWin Segger SLA0047 (скомпилированная библиотека)
PDM2PCM Library STMicroelectronics SLA0047 (скомпилированная библиотека)
USB Host library STMicroelectronics SLA0044 (исходный код)
USB Device library STMicroelectronics SLA0044 (исходный код)
TouchGFX STMicroelectronics SLA0044 (скомпилированная библиотека)
FatFS Portions ST SLA0044 (исходный код)
Portion ChaN FatFS License
LibJPEG Portions STMicroelectronics BSD 3-Clause
Thomas G. Lane, Guido Vollbeding Independent JPEG Group License

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

Рис. 12. Расположение папки с примерами Projects

Рис. 129. Расположение папки с примерами Projects

В STM32Cube примеры классифицированы в соответствии с уровнем ПО:

  • Examples – группа примеров, в которых используются только драйверы HAL и BSP, а ПО промежуточного уровня не используется. Целью этих примеров является демонстрация работы того или иного периферийного блока. Некоторые примеры достаточно просты и касаются только одного периферийного блока, другие могут демонстрировать совместную работу нескольких блоков, например, АЦП и DMA.
  • Examples_LL – группа примеров, в которых используются только драйверы LL, а HAL и ПО промежуточного уровня не используется. Эти примеры являются наименее ресурсоемкими и максимально простыми. Как правило, в них используется только один периферийный блок. Стоит отметить, что эти примеры предназначены исключительно для работы с платами Nucleo.
  • Examples_MIX – группа примеров, в которых используются драйверы HAL, LL и BSP, а ПО промежуточного уровня не используется. Главной задачей этих примеров становится демонстрация оптимального совместного использования HAL и LL, с учетом их достоинств. Примеры предназначены исключительно для работы с платами Nucleo.
  • Applications – группа примеров, предназначенных для демонстрации особенностей работы с ПО промежуточного уровня.
  • Demonstrations – примеры, использующие широкий набор периферии и ПО промежуточного уровня для демонстрации особенностей и производительности микроконтроллеров.
  • Template project – шаблоны проектов для IDE, предназначенные для быстрого создания проектов на базе отладочных плат.

Примеры находятся в директории STM32Cube_FW_STM32CubeF7_VX.Y.Z\Projects\. Они все имеют одинаковую структуру:

  • папка \Inc содержит заголовочные файлы;
  • папка \Src содержит с-файлы программ;
  • папки \EWARM, \MDK-ARM и \SW4STM32 содержат проекты для соответствующих IDE;
  • файл readme.txt описывает особенности каждого конкретного примера.

Пользователю достаточно открыть готовые проекты в соответствующей IDE, скомпилировать и загрузить в отладочную плату.

Оценочные платы Discovery для STM32F7

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

В настоящий момент существует пять плат Discovery для STM32F7:

  • 32F723EDISCOVERY и STM32F7308-DK для микроконтроллеров STM32F723IE и STM32F730I8 соответственно (рисунок 130);

Рис. 13. Внешний вид оценочных плат 32F723EDISCOVERY (а); и STM32F7308-DK (б)

Рис. 130. Внешний вид оценочных плат 32F723EDISCOVERY (а); и STM32F7308-DK (б)

Рис. 14. Внешний вид оценочных наборов 32F746GDISCOVERY (а); и STM32F7508-DK (б)

Рис. 131. Внешний вид оценочных наборов 32F746GDISCOVERY (а); и STM32F7508-DK (б)

  • 32F769IDISCOVERY с микроконтроллером STM32F769NI (рисунок 132).

Рис. 15. Внешний вид оценочного набора 32F769IDISCOVERY

Рис. 132. Внешний вид оценочного набора 32F769IDISCOVERY

В качестве примера рассмотрим состав набора 32F746GDISCOVERY:

  • контроллер STM32F746NGH6 в корпусе BGA216, 1 Мбайт Flash и 340 кбайт SRAM;
  • отладчик ST-LINK/V2-1;
  • 4,3” TFT-дисплей с разрешением 480×272 и емкостным сенсорным экраном;
  • разъемы USBдля создания виртуального COM-порта, отладки или устройства хранения данных;
  • разъем для подключения камеры;
  • SAI-аудиокодек;
  • разъемы jack для аудиовхода и аудиовыхода;
  • два MEMS-микрофона;
  • разъем SPDIF RCA;
  • 128-Мбит Quad-SPI Flash;
  • 128-Мбит SDRAM (доступно для работы 64 Мбит);
  • разъем для подключения microSD;
  • разъем для плат расширения RF-EEPROM;
  • клавиши сброса и пробуждения;
  • разъемы для подключения Ethernet;
  • разъем Arduino Uno V3;
  • разъемы USBMicro-AB для USBOTGHS и USBOTGFS.

Питание 32F746GDISCOVERY может производиться от различных источников: от ST LINK/V2-1, USB FS, USB HS, от питания плат расширения Arduino, от внешнего блока питания 5 В.

Оценочные платы Nucleo для STM32F7

В настоящий момент STMicroelectronics выпускает платы Nucleo трех основных типов: Nucleo-32, Nucleo-64 и Nucleo-144. Платы Nucleo предназначены, в первую очередь, не для автономной работы, а для совместного использования с различными платами расширения в популярных стеках. Например, Nucleo-32 совместимы со стеком Arduino™ nano, Nucleo-64 и Nucleo-144 работают с Arduino™ Uno V3.

Для работы с STM32F7 предлагается четыре платы Nucleo-144, которые отличаются используемым типом микроконтроллера (рисунок 133):

Рис. 16. Внешний вид плат NUCLEO 144

Рис. 133. Внешний вид плат NUCLEO 144

Оценочные платы Evaluation Boards для STM32F7

Отладочные платы Evaluation Boards предназначены для максимально полного ознакомления с особенностями различных микроконтроллеров STM32F7. На этих платах можно найти широкий спектр дополнительной периферии, отладчик ST-LINK, дисплеи, приемопередатчики (CAN, USB, Ethernet и прочие), разъемы, светодиоды, датчики и так далее. Сейчас к услугам разработчиков предлагается четыре отладочных платы для работы с STM32F7 (рисунок 134):

Рис. 17. Внешний вид отладочных наборов STM32746G-EVAL (аналогично STM32756G-EVAL) и STM32F769I-EVAL (аналогично STM32F779I-EVAL)

Рис. 134. Внешний вид отладочных наборов STM32746G-EVAL (аналогично STM32756G-EVAL) и STM32F769I-EVAL (аналогично STM32F779I-EVAL)

Между собой платы STM32756G-EVAL и STM32746G-EVAL отличаются только типом контроллера. Платы STM32F769I-EVAL и STM32F779I-EVAL также отличаются только контроллером.

Отладочные наборы Evaluation Boards позволяют оценить работу практически всех периферийных блоков. Рассмотрим особенности отладочных плат STM32756G-EVAL и STM32746G-EVAL:

  • контроллер STM32F756NGH6 (на STM32756G-EVAL), STM32F746NGH6 (на STM32746G-EVA);
  • отладчик ST-LINK/V2-1;
  • 5,7” TFT-дисплей с разрешением 640×480 и емкостным сенсорным экраном;
  • SAI-аудио ЦАП и стерео аудиоразъем Jack;
  • стереофонический цифровой микрофон и разъем для подключения внешнего микрофона;
  • модуль камеры;
  • RF-EEPROM;
  • IrDA приемопередатчик;
  • внешняя память: 8 Мбит x 32-бит SDRAM, 1 Мбит x 16-бит SRAM, 8 Мбит x 16-бит Nor Flash, 512 Мбит QuadSPI Nor Flash;
  • джойстик с селектором и четырьмя направлениями;
  • потенциометр;
  • клавиши сброса и пробуждения;
  • 4 светодиода;
  • разъемы: microSD, RS-232, JTAG/SWD, Ethernet, три разъема Micro-AB для USB OTG HS и FS CAN 2.0A/B, разъем для управления двигателем.

Питание плат осуществляется от ST LINK/V2-1, USB FS1, USB FS2, USB HS, от плат расширения и от внешнего блока питания 5 В.

Список ранее опубликованных глав

  1. Системная периферия
  2. Память и функции безопасности
  3. Периферия и таймеры
•••

Наши информационные каналы

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
STM32F7308-DK (ST)
STM32F723IET6 (ST)
STM32F723IET7 (ST)
32F746GDISCOVERY (ST)
STM32F746NGH6 (ST)
STM32F746NGH6TR (ST)
STM32F750N8H6 (ST)
STM32F769NIH6 (ST)
STM32F769NIH6U (ST)
NUCLEO-F722ZE (ST)
NUCLEO-F746ZG (ST)
NUCLEO-F756ZG (ST)
NUCLEO-F767ZI (ST)
STM32746G-EVAL2 (ST)
STM32756G-EVAL2 (ST)
STM32F769I-EVAL (ST)
STM32F779I-EVAL (ST)
STM32F745ZGT6 (ST)
STM32F746BGT6 (ST)