Микроконтроллеры STM32G0: Экосистема

11 ноября

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

Вячеслав Гавриков (г. Смоленск)

В заключительной статье из цикла, основанного на публикации STM32G0 Online Training, рассматривается экосистема микроконтроллеров STM32G0, в том числе отладочные платы от ST, платы расширения X-NUCLEO, кодогенератор STM32CubeMX и программный пакет STM32CubeG0.

Экосистема STM32G0

Экосистема STM32G0 объединяет микроконтроллеры STM32G0, а также аппаратные и программные средства разработки и отладки. Основными элементами экосистемы являются:

  • отладочные платы DISCO, EVAL и NUCLEO;
  • платы расширения X-NUCLEO;
  • программа STM32CubeMX, позволяющая генерировать проекты и код инициализации для наиболее популярных IDE;
  • интегрированные среды разработки (IDE). При этом разработчики могут использовать как коммерческие IDE, например, IAR, так и бесплатные, например, Atolic, STM32CubeIDE и SW4STM32. Кроме того, коммерческая среда разработки Keil предлагает пользователям специальную бесплатную лицензию для работы с STM32G0;
  • фирменные библиотеки и примеры от STMicroelectronics, а также библиотеки от сторонних производителей;
  • собственные программаторы ST-LINK и программаторы производства сторонних производителей, например, SEGGER J-LINK;
  • бесплатная документация.

Отладочные платы DISCO, EVAL и NUCLEO

В настоящее время разработчикам предлагаются три типа фирменных отладочных плат с микроконтроллерами STM32G0: DISCO, EVAL и NUCLEO. Платы NUCLEO обладают минимальным набором внешних компонентов, но их функционал может расширяться за счет подключения плат расширения Arduino или X-NUCLEO. Платы DISCO представляют собой законченные решения и могут самостоятельно использоваться в различных практических приложениях. Платы Eval отличаются самым развитым функционалом и позволяют решать широкий круг задач. Рассмотрим существующие отладочные платы подробнее.

Компания ST предлагает разработчикам две платы семейства DISCO: STM32G0316-DISCO и STM32G071B-DISCO (рисунок 65).

Рис. 65. Внешний вид отладочных плат: а) STM32G0316-DISCO; б) STM32G071B-DISCO

Рис. 65. Внешний вид отладочных плат: а) STM32G0316-DISCO; б) STM32G071B-DISCO

Плата STM32G0316-DISCO предназначена для ознакомления с маловыводными микроконтроллерами STM32G0 в корпусах SO8. В STM32G0316-DISCO используются микроконтроллер STM32G031J6 с 32 кбайт Flash и 8 кбайт ОЗУ. Контроллер располагается на отделяемой части платы. При необходимости пользователь может отделить ее от платы и применять в качестве независимого DIL8-модуля. Большая часть STM32G0316-DISCO выделена для встроенного отладчика ST-LINK/V2-1. Стоит отметить, что на отладчике расположен сокет DIL8 для повторного подключения платы микроконтроллера. Там же можно найти пользовательский светодиод и кнопку. При этом кнопка может использоваться либо как кнопка сброса, либо как пользовательская кнопка. Связь с ПК осуществляется с помощью разъема USB Micro-B.

STM32G071B-DISCO – отладочная плата, предназначенная для демонстрации возможностей микроконтроллеров STM32G0 при работе с USB Type-C™ и Power Delivery. На борту у платы есть все необходимое для взаимодействия с другими устройствами USB Type-C. STM32G071B-DISCO позволяет отображать параметры соединения USB Type-C с помощью специальной утилиты STM32CubeMonUCPD.

На отладочной плате расположен отладчик ST-LINK/V2, четыре светодиода для отображения статуса UCPD, кнопка сброса, пятипозиционный джойстик, OLED-дисплей, два разъема USB type C (вилка и розетка), DC/DC-преобразователь для питания от VBUS 3…20 В, штыревые пользовательские разъемы.

Отладочная плата STM32G081B-EVAL обладает наиболее развитым функционалом среди всех отладочных плат для STM32G0 (рисунок 66). STM32G081B-EVAL использует микроконтроллер STM32G081RBT6 с памятью 128 кбайт Flash и 32 кбайт RAM. Плата имеет следующие особенности:

  • напряжение питания микроконтроллера с фиксированным значением 3,3 В либо со значением, изменяющимся в диапазоне 1,65…3,6 В;
  • поддержка microSD объемом 8 Гбайт и более;
  • потенциометр;
  • TFT-дисплей 240×320;
  • четыре пользовательских светодиода. Еще один светодиод используется для сигнализации о состоянии питания микроконтроллера;
  • пятипозиционный джойстик (четыре направления и выбор);
  • кнопки сброса, имитации взлома (TAMPER) и пользовательская кнопка;
  • разъемы: разъем питания (jack) 5 В, разъемы RS-232 и RS-485, cтерео-аудиоразъем (jack) со входом аналогового микрофона, слот microSD, разъем расширения I2C, разъем для подключения двигателя;
  • встроенный отладчик ST-LINK/V2-1;
  • дочерняя плата с внешней периферией. Плата подключается с помощью штыревых разъемов. На ней расположены приемопередатчик IrDA, ИК-канал (приемник и передатчик), светочувствительный резистор, датчик температуры, разъемы HDMI с DDC и CEC, слот Smart Card;
  • дочерняя плата для работы с USB-C и Power Delivery, подключаемая с помощью штыревых разъемов. На плате расположена следующая периферия: мультиплексор для разделения выхода Type-C (порт 1) и входа USB3.1 Gen1/DisplayPort, мультиплексор для разделения входа Type-C (порт 2) и выхода DisplayPort/USB2.0, VCONN и USB PD для Type-C (порт 1), разъемы.

Рис. 66. Внешний вид отладочной платы STM32G081B-EVAL

Рис. 66. Внешний вид отладочной платы STM32G081B-EVAL

Отладочные платы NUCLEO-G070RB и NUCLEO-G071RB – это платы семейства NUCLEO-64, которые отличаются между собой только типом контроллера: STM32G070RBT и STM32G071RBT соответственно. Плата NUCLEO-G031K8 относится к семейству NUCLEO-32, в ней используется микроконтроллер STM32G031K8T (рисунок 67). Собственный функционал плат NUCLEO является минимальным. Кроме непосредственно микроконтроллера на плате расположен отладчик ST-LINK/V2-1, один пользовательский светодиод, две кнопки (пользовательская и сброса), кварцевый резонатор 32,768 кГц (используется в качестве LSE), разъемы стеков Arduino™ Uno V3 и ST morpho. Именно разъемы расширения позволяют практически неограниченно наращивать функционал плат NUCLEO с помощью плат расширения Arduino и X-NUCLEO. Рассмотрим подробнее платы X-NUCLEO производства ST.

Рис. 67. Внешний вид отладочной платы NUCLEO-64

Рис. 67. Внешний вид отладочной платы NUCLEO-64

Платы расширения X-NUCLEO

Потенциал плат NUCLEO-64 оказывается практически безграничным благодаря возможности подключения плат расширения Arduino и X-NUCLEO (рисунок 68). Интересно, что платы NUCLEO-64 способны работать с платами расширения в составе платформы Arduino, что делает их привлекательными не только для профессиональных разработчиков, но и для простых любителей электроники. Подробнее об этом читайте в нашей статье «Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino».

Рис. 68. Функционал плат NUCLEO-64 может расширяться за счет подключения плат X-NUCLEO

Рис. 68. Функционал плат NUCLEO-64 может расширяться за счет подключения плат X-NUCLEO

Компания STMicroelectronics предлагает около полусотни плат расширения X-NUCLEO. Вот Некоторые конкретные примеры плат X-NUCLEO (рисунок 69):

  • X-NUCLEO-STMODA1 – простейшая плата расширения, используемая для подключения модулей с интерфейсом STMod+ к стеку NUCLEO;
  • X-NUCLEO-6180XA1 – плата расширения, позволяющая оценить работу датчиков приближения и освещения VL6180X. К плате можно подключить до трех дополнительных модулей с датчиками VL6180X, чтобы обеспечить обзор окружающего пространства во всех направлениях;
  • X-NUCLEO-GNSS1A1 обеспечивает функцию глобальной навигации с помощью размещенного на ней модуля Teseo-LIV3F, поддерживающего основные системы навигации: ГЛОНАСС, GPS, Galileo, BeiDou, QZSS;
  • X-NUCLEO-IDB05A1 – плата, позволяющая реализовывать беспроводную связь с помощью BLE-модуля SPBTLE-RF;
  • X-NUCLEO-NFC05A1 используется для беспроводного обмена с NFC-устройствами. Плата использует NFC-ридер ST25R3911B и имеет на борту четырехвитковую печатную антенну 13,56 МГц, 47×34 мм;
  • X-NUCLEO-PLM01A1 обеспечивает передачу данных по линиям DC-питания с помощью SOC-модема ST7580. При наличии дополнительной изолирующей платы STEVAL-XPLM01CPL возможна передача данных по линиям переменного напряжения;
  • X-NUCLEO-CCA01M1 – готовый двухканальный усилитель мощности, построенный на базе аудиомикросхемы STA350BW. Плата имеет два выхода мощностью до 25 Вт каждый;
  • X-NUCLEO-LPM01A – программируемый источник питания с диапазоном выходных напряжений 1,8…3,3 В и функцией измерения потребляемого тока;
  • X-NUCLEO-IKS01A2 – плата расширения, имеющая на борту богатый выбор МЭМС-сенсоров производства ST, таких как:
    • комбинированный инерционный модуль LSM6DSL, состоящий из трехосевого МЭМС-акселерометра ±2/±4/±8/±16 g и трехосевого МЭМС-гироскопа ±125/±245/±500/±1000/±2000 dps);
    • комбинированный инерционный модуль LSM303AGR, имеющий на борту трехосевой МЭМС-акселерометр ±2/±4/±8/±16 g и трехосевой МЭМС-магнитометр ±50 Гс;
    • цифровой барометр LPS22HB с диапазоном измерений 260…1260 кПа;
    • датчик относительной влажности и температуры HTS221.

Рис. 69. Примеры плат расширения X-NUCLEO

Рис. 69. Примеры плат расширения X-NUCLEO

К плате NUCLEO-IKS01A2 можно дополнительно подключать DIL24-модули от ST с другими сенсорами.

STM32CubeMX

STM32CubeMX – бесплатное приложение от ST, позволяющее создавать проекты для наиболее популярных IDE и генерировать код первоначальной инициализации микроконтроллеров STM32 с помощью удобного графического интерфейса. STM32CubeMX поддерживает все существующие модели микроконтроллеров STM32, в том числе и STM32G0. Программа позволяет настраивать порты ввода-вывода и периферию микроконтроллеров, конфигурировать дерево тактирования, рассчитывать потребление и генерировать проекты с кодом конфигурации для Keil ARM, IAR, STM32CubeIDE, TrueStudio, SW4STM32.

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

Перед началом работы с STM32CubeMX необходимо проверить наличие обновлений. Стоит отметить, что обновления выходят достаточно часто. С одной стороны, это позволяет ST быстро развивать среду и оперативно устранять баги, а с другой – пользователи должны следить за обновлениями, чтобы избежать проблем с совместимостью. Проще всего проблема решается с помощью разрешения автоматического обновления. Для этого на стартовой странице следует нажать Alt+S и в окне «Updater Settings» установить галочку в поле «Automatic Check». После этого каждый раз при старте STM32CubeMX программа будет сообщать об обновлениях STM32CubeMX и скачанных ранее библиотек.

STM32CubeMX использует модульный принцип для работы с семействами микроконтроллеров. Это значит, что для того, чтобы начать работу, например, с STM32G0 не требуется скачивать все возможные библиотеки для всех семейств. Вместо этого достаточно скачать программный пакет STM32CubeG0 Firmware Package (текущая версия – V1.3.0/25-June-2019).

Для открытия менеджера библиотек и установки новых компонентов необходимо нажать на кнопку «Install/Remove» в стартовом окне STM32CubeMX (рисунок 70). Далее в открывшемся окне следует выбрать и установить требуемую библиотеку (рисунок 71). Стоит еще раз отметить, что программа в дальнейшем будет сама автоматически проверять обновления библиотек. Для ручного обновления необходимо нажать кнопку «Check for updates» на стартовой странице STM32CubeMX, после чего в открывшемся окне выбрать и обновить требуемые библиотеки.

Рис. 70. Стартовое окно STM32CubeMX

Рис. 70. Стартовое окно STM32CubeMX

Рис. 71. Перед созданием нового проекта рекомендуется обновлять STM32CubeMX и используемые библиотеки

Рис. 71. Перед созданием нового проекта рекомендуется обновлять STM32CubeMX и используемые библиотеки

После установки библиотек можно переходить к созданию нового проекта. Первым шагом при создании проекта становится выбор подходящего микроконтроллера или отладочной платы. Для этого на стартовой странице STM32CubeMX необходимо нажать кнопку «Access to mcu selector» («Выбор микроконтроллера») или кнопку «Access to board selector» («Выбор отладочной платы»), как показано на рисунке 70. Для выбора оптимального микроконтроллера пользователю предлагается применять фильтры (рисунок 72): по процессорному ядру, по семейству, по линейке, по корпусу, по цене, по числу GPIO, по объему Flash/RAM/EEPROM, по тактовой частоте, по встроенной периферии. С учетом заданных значений программа автоматически составляет список подходящих микроконтроллеров.

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

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

Для выбора отладочной платы также предлагается использовать фильтры (рисунок 73): по типу платы, по семейству, по периферии. После выбора контроллера или платы следует нажать кнопку «Start Project».

Рис. 73. В качестве альтернативы новый проект можно создать на базе выбранной отладочной платы

Рис. 73. В качестве альтернативы новый проект можно создать на базе выбранной отладочной платы

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

Рис. 74. Настройка выводов на вкладке «Pinout & Configuration» («Pinout view»)

Рис. 74. Настройка выводов на вкладке «Pinout & Configuration» («Pinout view»)

На рисунке 75 представлен пример настройки периферии с помощью вкладки «System View». Конфигурация периферийных блоков имеет очень простую и наглядную форму и обычно требует от пользователя всего нескольких щелчков мыши.

Рис. 75. Настройка встроенной периферии на вкладке «Pinout & Configuration» («System view»)

Рис. 75. Настройка встроенной периферии на вкладке «Pinout & Configuration» («System view»)

Пользователи также могут использовать дополнительные библиотеки, для этого необходимо перейти на вкладку «Additional Software Component Selection» (рисунок 76).

Рис. 76. Настройка ПО промежуточного уровня («Middleware») на вкладке «Pinout & Configuration» (окно «Additional software»)

Рис. 76. Настройка ПО промежуточного уровня («Middleware») на вкладке «Pinout & Configuration» (окно «Additional software»)

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

Рис. 77. Настройка системы тактирования на вкладке «Clock Configuration»

Рис. 77. Настройка системы тактирования на вкладке «Clock Configuration»

На заключительном этапе непосредственно перед генерацией кода пользователь должен выполнить настройку параметров проекта на странице «Project Manager». На вкладке «Project» пользователю предлагается выбрать название и путь к проекту, его структуру, тип используемой IDE, параметры стека и кучи (рисунок 78).

Рис. 78. Настройка параметров проекта на вкладке «Project Manage»r (панель «Project»)

Рис. 78. Настройка параметров проекта на вкладке «Project Manage»r (панель «Project»)

На вкладке «Code generator» можно задать правила копирования используемых библиотек, правила работы с пользовательским кодом и особенности начальной инициализации выводов (рисунок 79). Галочка “Keep user code when re-generating” позволяет защитить пользовательские участки кода при повторной генерации проекта. При этом разработчик должен помещать собственный код только в специальных блоках «User code».

Рис. 79. Настройки параметров кодогенератора на вкладке «Project Manager» (панель «Code Generator»)

Рис. 79. Настройки параметров кодогенератора на вкладке «Project Manager» (панель «Code Generator»)

На вкладке «Advanced settings» можно выбрать вариант реализации функций: с помощью HAL или с помощью LL (рисунок 80). После выполнения перечисленных шагов пользователю остается всего лишь нажать кнопку «Generate code», и программа создаст проект с кодом инициализации.

Рис. 80. Дополнительные настройки на вкладке «Project Manager» (панель «Advanced Settings»)

Рис. 80. Дополнительные настройки на вкладке «Project Manager» (панель «Advanced Settings»)

Для приложений с аккумуляторным питанием чрезвычайно полезной будет вкладка «Tools», на которой можно рассчитать потребление системы и оценить время работы элементов питания (рисунок 81). Сперва пользователь должен задать напряжение питания и рабочую температуру.

Рис. 81. Расчета параметров потребления на вкладке Tools

Рис. 81. Расчета параметров потребления на вкладке Tools

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

Рис. 82. Задание профиля потребления

Рис. 82. Задание профиля потребления

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

Рис. 83. Выбор аккумулятора

Рис. 83. Выбор аккумулятора

STM32CubeG0 Firmware Package

Для каждого семейства STM32 предлагается собственный программный пакет, содержащий библиотеки, примеры и документацию. Микроконтроллеры STM32G0 не являются исключением. Для работы с ними компания ST предлагает программный пакет STM32CubeG0 Firmware Package, который можно бесплатно скачать на сайте ST в виде архива.

Программный пакет STM32CubeG0 Firmware Package содержит следующие компоненты (рисунок 84):

  • документацию;
  • драйверы для отладочных плат от ST, файлы CMSIS для STM32G0, HAL-драйверы для STM32G0;
  • ПО промежуточного уровня: стек USBPD от ST, FAT FS, FreeRTOS;
  • проекты и примеры.

Рис. 84. Структура программного пакета STM32CubeG0 Firmware Package

Рис. 84. Структура программного пакета STM32CubeG0 Firmware Package

Готовые примеры хранятся в папке Projects и делятся на три уровня:

  • Level 1 – простейшие примеры, использующие только HAL-драйверы (папка «Examples»);
  • Level 2 – примеры, использующие HAL-драйверы и ПО промежуточного уровня (папка «Applications»);
  • Level 3 – примеры, которые запускаются на отладочных платах. В них используются HAL-драйверы, ПО промежуточного уровня и BSP (папка «Demonstrations».

В свою очередь все примеры имеют одинаковую структуру: в папке «Inc» хранятся заголовочные h-файлы, в папке «Src» размещены с-файлы, в папках \EWARM, \MDK-ARM и \SW4STM32 хранятся проекты для соответствующих IDE.

Заключение

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

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

Дополнительные материалы по STM32G0

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

  1. Микроконтроллеры STM32G0: Архитектура и системная периферия
  2. Микроконтроллеры STM32G0: Память и безопасность
  3. Микроконтроллеры STM32G0: Периферия и таймеры
•••

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

О компании ST Microelectronics

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

Товары
Наименование
STM32G030C6T6 (ST)
NUCLEO-G071RB (ST)
STM32G031K6T6 (ST)
STM32G071B-DISCO (ST)
STM32G070KBT6 (ST)
STM32G071CBT6 (ST)
STM32G071CBT6TR (ST)
STM32G071CBU6 (ST)
STM32G071KBU6N (ST)
STM32G071KBU6 (ST)
STM32G071RBT6 (ST)
STM32G081RBT6 (ST)