- Топливо для MEMS – универсальный набор С-драйверов для датчиков STMicroelectronics
- MEMS-датчики от STMicroelectronics
- Программная поддержка MEMS
- Пакет программного обеспечения STM32Cube
- BLUEMICROSYSTEM1
- AlgoBuilder
- Unicleo-GUI
- ST-SENSOR-FINDER
- Open SoftwareX
- Набор С-драйверов для MEMS-датчиков STMicroelectronics
- Интеграция драйверов в проект
- Запуск примеров
- Запуск примеров с использованием другого оборудования
- Заключение
Топливо для MEMS – универсальный набор С-драйверов для датчиков STMicroelectronics
В статье приведено описание основных пакетов программной поддержки от STMicroelectronics, а также находящихся в открытом доступе С-драйверов для работы с MEMS-датчиками ST.
Стремительный скачок развития микросистемной техники во многом произошел благодаря потребностям рынка в датчиках, микродвигателях и преобразователях с малыми габаритными размерами. Впоследствии такой тип устройств получил наименование MEMS. MEMS, или микроэлектромеханические системы (Microelectromechanical Systems) – это миниатюрные устройства различного функционального назначения, сочетающие в себе одновременно микромеханическую и электронную части (рисунок 1).
Рис. 1. Обобщенная схема MEMS-устройств
Внедрение и использование микроэлектромеханических систем позволило разработчикам в значительной мере сократить массу и уменьшить размеры конечных решений, а также снизить энергопотребление и стоимость.
В настоящее время MEMS находят применение как в гироскопах, акселерометрах, смартфонах, микрофонах и компасах, так и в промышленных и коммерческих решениях – в магнитометрах, термодатчиках, датчиках давления и прочей аппаратуре.
Сочетая в себе такие важные для современных устройств качества как малый форм-фактор, низкое энергопотребление, простота и многогранность применения, а также привлекательная цена, MEMS осваивает все новые и новые области. Сегодня, например, уже говорят о микро- и нанопомпах, вживляемых в тело пациента и способных выдавать необходимую дозу лекарственных препаратов, в зависимости от полученного сигнала.
MEMS-датчики от STMicroelectronics
Ввиду растущей популярности MEMS-решений многие компании, занимающиеся изготовлением электронных компонентов, устремились в данный сектор. Одной из ведущих в этой области стала компания STMicroelectronics, предлагающая своим клиентам не только сами MEMS-датчики, но и программную и аппаратную поддержку, состоящую из бесплатно распространяемых программных пакетов и драйверов, а также широкого спектра совместимых модулей.
Спектр MEMS-датчиков производства компании STMicroelectronics охватывает все возможные сферы применения и широко представлен в окружающих нас устройствах (рисунок 2). В 2018 году ST существенно расширила линейку MEMS-датчиков, добавив микросхемы с более высокой точностью, которые способны работать автономно до 10 лет. Многие разработчики отдают предпочтение продукции STMicroelectronics за надежность, одно из лучших на рынке соотношений «цена/качество» и высокие технические характеристики. На сегодняшний день компания выпустила уже 15 миллиардов MEMS-микросхем.
Рис. 2. Ассортимент MEMS-датчиков производства STMicroelectronics
Более подробная классификация MEMS-датчиков от ST представлена в таблице 1.
Таблица 1. Классификация MEMS-датчиков от ST
Тип датчиков | Описание |
---|---|
Акселерометры | Предназначены для использования в автомобильных системах и промышленном оборудовании. Доступны конфигурации с аналоговым и цифровым выходами. Способны проводить измерение ускорений величиной до ±400 g. Оптимизированы для использования в портативных переносных устройствах с питанием от аккумулятора: напряжение питания в активном режиме 1,6…3,6 В. Имеют режимы энергосбережения и возможность автоматического выхода из спящего режима. |
Гироскопы | Отличительной особенностью является определение скорости вращения одновременно по 3-м осям. Могут обеспечить стабильную работу в течение длительного периода времени, слабо подвержены влиянию изменения температуры и имеют низкий уровень шума на уровне до 0,006 dps/√Гц. |
Компасы и магнитометры | Являются интеграцией трехосевого цифрового акселерометра и трехосевого цифрового магнитного датчика в одном корпусе формата LGA. Высокая точность определения направления вне зависимости от положения и угла наклона измерительного устройства, например, смартфона. |
Микрофоны | Способны заменить традиционные электретные конденсаторные микрофоны (ECM), обеспечив при этом более высокую степень надежности. Менее чувствительны к механическим колебаниям, изменениям температуры и электромагнитным помехам, чем традиционные микрофоны. Широкий частотный диапазон позволяет использовать эти микрофоны в качестве датчика вибрации, в том числе и в ультразвуковом диапазоне. |
Датчики давления | Разработаны по технологии VENSENS от ST, что дает возможность их изготовления в качестве монолитного чипа, благодаря чему исчезает разброс параметров от пластины к пластине и улучшается надежность устройства. |
Термодатчики | Доступны аналоговые и цифровые разновидности, отличаются малым потреблением энергии. Аналоговые микросхемы способны работать в диапазоне -55…130ºС и обладают лучшей линейностью измерений. Цифровые датчики имеют 12-битное разрешение и могут работать в диапазоне -55…125°C. |
Комбинированный модуль iNemo | Заключает в себе различные виды датчиков и является более компактным и надежным вариантом по сравнению с дискретными MEMS. Позволяет создавать решения на базе распознавания жестов в различных областях: дополненной реальности, системах управления и так далее. |
Программная поддержка MEMS
STMicroelectronics предоставляет пользователям открытую среду разработки STM32 Open Development Environment (ODE). STM32 ODE – это гибкая среда для создания и разработки новых устройств и решений на базе микроконтроллеров STM32 и других компонентов производства компании STMicroelectronics (рисунок 3).
Рис. 3. Открытая программно-аппаратная среда STM32 Open Development Environment (ODE)
STM32 ODE состоит из программной и аппаратной частей. Аппаратная часть представляет собой семейство отладочных плат STM32 Nucleo, к которым пользователь может подключить дополнительную периферию в виде плат расширения – собственно плат датчиков, приемопередатчиков, силовых модулей и так далее.
Программная часть STM32 ODE включает в себя перечень различных пакетов ПО, в том числе и для работы с MEMS.
Пакет программного обеспечения STM32Cube
STM32Cube – это совокупность бесплатных инструментов и блоков программного обеспечения для упрощения разработки решений на основе микроконтроллеров STM32. STM32Cube включает в себя программное обеспечение аппаратного и промежуточного уровней (Hardware Abstraction Layer and Middleware), а также конфигуратор и генератор кода (рисунок 4).
Рис. 4. Стартовое окно STM32CubeMx
Расширения для работы с MEMS – это X-CUBE-MEMS1 и X-CUBE-MEMS-XT1. Пакет расширения X-CUBE-MEMS1 предназначен для создания программных решений реализации взаимодействия датчиков с микроконтроллерами семейства STM32 и содержит драйверы для различных типов датчиков. X-CUBE-MEMS-XT1 является более прогрессивной версией X-CUBE-MEMS1 и, помимо встроенных датчиков, поддерживаемых пакетом расширения X-CUBE-MEMS1, также поддерживает дополнительные типы сенсоров, подключаемые через разъем DIL24.
Программные пакеты можно запускать на платах расширения X-NUCLEO-IKS01A2 и X-NUCLEO-IKS01A3 для определения движения и параметров окружающей среды. Платы с MEMS-датчиками предназначены для работы в паре с процессорными платами семейства Nucleo STM32. Примеры приложений (Keil, IAR, System Workbench) из пакета X-CUBE-MEMS1 могут запускаться на платах NUCLEOF401RE, NUCLEO-L053R8, NUCLEO-L152RE или NUCLEO-L476RG. Благодаря идеологии STM32Cube, все примеры легко портировать и на платы Nucleo нового семейства G0, например NUCLEO-G071RB.
К преимуществам использования X-CUBE-MEMS1 и X-CUBE-MEMS-XT1 относятся:
- готовый программный пакет для создания приложений с использованием MEMS-датчиков, совместимый со средой визуальной настройки выводов микроконтроллера STM32CubeMX;
- наличие примеров кода для работы с микроконтроллерами STM32, включая примеры передачи данных в реальном времени на персональный компьютер для отображения в графическом GUI;
- простая портируемость созданных проектов между различными семействами микроконтроллеров благодаря STM32Cube;
- совместимость с графическим пользовательским интерфейсом Unicleo-GUI для отображения данных датчика, анализа и хранения данных;
- свободное распространение и бесплатная лицензия.
BLUEMICROSYSTEM1
Другим полезным расширением является BLUEMICROSYSTEM1, хотя оно и не направлено на работу только с MEMS. Данное расширение для STM32Cube дает возможность разработчикам создавать решения с беспроводным каналом Bluetooth. BLUEMICROSYSTEM1 предоставляет разработчикам возможность организовать взаимодействие MCU STM32, размещенных на отладочных платах NUCLEO-F401RE или NUCLEO-L476RG с MEMS-датчиками и сопроцессором BlueNRG.
BLUEMICROSYSTEM1 создает программный код на трех уровнях: уровне драйверов, промежуточном и прикладном (рисунок 5).
Рис. 5. Архитектура пакета BLUEMICROSYSTEM1
AlgoBuilder
AlgoBuilder – продукт STMicroelectronics, который позволяет задать и отладить алгоритм работы датчиков без написания строк программного кода. AlgoBuilder представляет собой Windows-приложение, в котором пользователь задает алгоритм работы посредством взаимодействия с графическими блоками. Приложение позволяет спроектировать логику обработки сигналов от MEMS-датчиков, автоматически преобразовать алгоритм в С-код и загрузить его в микроконтроллер серии STM32. (рисунок 6).
Рис. 6. Логика работы AlgoBuilder
Работа с AlgoBuilder заключается в перетаскивании и соединении блоков. Приложение содержит в себе заранее настроенные блоки, представляющие собой математические и логические функции. Кроме того, разработчик может создать собственный настраиваемый блок, например, для указания коэффициентов цифрового фильтра. AlgoBuilder проводит автоматическую верификацию на соответствие измерительных величин между входом и выходом функциональных блоков и позволяет соединять только блоки, которые заключают в себе переменные одного и того же типа и размерности. После завершения работы с проектом программа создает С-код, который впоследствии компилируется пользователем при помощи встроенного программного обеспечения либо прямо из AlgoBuilder при помощи компиляторов System Workbench, IAR или KEIL.
Unicleo-GUI
Windows-приложение Unicleo-GUI – это графический интерфейс пользователя (GUI) для программных пакетов X-CUBE-MEMS1/X-CUBE-MEMS-XT1 и отладочных плат STM32 Nucleo (рисунок 7).
Рис. 7. Внешний вид интерфейса Unicleo-GUI
Основной целью данного программного обеспечения является демонстрация функциональных возможностей датчиков. Unicleo-GUI может работать с кодом, созданным в AlgoBuilder. Приложение также может установить соединение по Bluetooth с демонстрационными и отладочными платами, поддерживающими интерфейс BLE, такими как Sensor Tile, Blue Coin и STM32 Nucleo.
Ключевыми особенностями Unicleo-GUI являются:
- возможность отображения данных от подключенных датчиков в виде временной диаграммы, точечной диаграммы или 3D-диаграммы;
- сохранение данных в файлы TSV- и CSV-форматов
- настраиваемая скорость выходных отсчетов и выбор диапазона измерений;
- чтение и запись в регистры микросхем MEMS-датчиков;
- возможность работы с ПО X-CUBE-MEMS1 и X-CUBE-MEMS-XT1.
ST-SENSOR-FINDER
ST-SENSOR-FINDER – мобильное приложение от STMicroelectronics для Android и iOS, предлагающее удобную альтернативу для поиска MEMS–датчиков и представляющее собой простую навигацию по датчикам ST (рисунок 8).
Рис. 8. Приложение ST-SENSOR-FINDER от STMicroelectronics
Кроме стандартного поиска самих датчиков, при помощи приложения пользователь может ознакомиться с соответствующими инструментами оценки и отладки датчиков и изучить типичные примеры их использования.
Open SoftwareX
Open SoftwareX представляет собой набор открытого ПО, объединяющий в себе драйверы, программное обеспечение промежуточного уровня и прикладное ПО для создания устройств на базе STM32, где также используются MEMS-датчики. Open SoftwareX дает возможность разработчикам быстро и без усилий собрать прототип, используя содержащиеся в пакете модули.
Open SoftwareX содержит несколько библиотек:
- MEMS:
- общая библиотека датчиков osxMotionFX;
- датчики положения osxMotionCP;
- датчики движения osxMotionAR;
- датчики распознавания жестов Sensor gesture recognition.
- RF:
- библиотека типовых применений радиоинтерфейса Bluetooth LowEnergy.
- Audio:
- передача аудиосигнала в режиме реального времени;
- определение источника звука в реальном времени;
- подавление эффекта эха в реальном времени;
- поддержка Bluetooth-устройств и MEMS-микрофонов.
Библиотеки Open.MEMS способны обрабатывать объединенную информацию (Sensor Fusion), что позволяет поддерживать высокую точность вычислений, которая невозможна при использовании данных от каждого датчика по-отдельности. На рисунке 9 показано, как за 5 шагов начать работу с Open.MEMS.
Рис. 9. Начало работы с Open.MEMS
Набор С-драйверов для MEMS-датчиков STMicroelectronics
При поиске универсальных пакетов драйверов для MEMS-датчиков на сайте ST перед пользователем открывается следующая картина (рисунок 10).
Рис. 10. Результат поиска драйверов на сайте ST
Наиболее интересным разделом в данном списке является C-Drivers-MEMS – универсальный набор С-драйверов для MEMS-датчиков, созданный STMicroelectronics для использования датчиков MEMS с различными операционными системами. Пакет находится в открытом доступе и расположен в репозитории на сайте Github. Репозиторий содержит драйверы и примеры для сенсоров MEMS, написанные на языке СИ. Драйверы датчиков и примеры приведены по номеру устройства (рисунок 11).
Рис. 11. Репозиторий STMems_Standard_C_drivers
Репозиторий содержит два типа папок:
- папка, содержащая драйверы датчиков с именем xxxxxxx_STdC, в котором xxxxxxx – это номер датчика;
- папка, содержащая демонстрационный проект с именем _prj_XXXXXXX, где XXXXXXX – это имя оценочной платы ST.
Каждая папка драйвера датчика, в свою очередь, содержит папку с самим драйвером, папку с примерами использования и файл Readme (рисунок 12).
Рис. 12. Содержание папки драйвера
В driver содержатся файлы драйвера датчика C (.h и .c), которые будут впоследствии включены в проект.
В example, соответственно, содержатся примеры, показывающие, как интегрировать драйвер в проект и взаимодействовать с ним. Они написаны для микроконтроллеров STM32 с использованием инструмента STM32CubeMX, но их можно использовать в качестве примеров и для других платформ.
README – дополнительная информация о конкретном драйвере.
В свою очередь каждая папка демонстрационного проекта содержит один файл конфигурации для инструмента STM32CubeMX с именем _prj_XXXXXXX\XXXXXX.iocwhere, где XXXXXXX – это имя оценочной платы ST (рисунок 13).
Рис. 13. Содержание папки с демонстрационным проектом
Используя инструмент STM32CubeMX, настроенный с помощью соответствующего пакета MCU, и файл с расширением .ioc, можно создать проект, в котором впоследствии можно легко запускать примеры, доступные в каждой папке драйверов датчиков.
Интеграция драйверов в проект
Драйвер не зависит от используемой платформы. Первое, что необходимо сделать после создания проекта в среде, например, IAR – это включить в проект файлы драйверов датчика (.h и .c), расположенные в папке xxxxxxx_STdC\driver соответствующего продукта.
Далее необходимо определить в коде функции чтения и записи, которые используют драйвер платформы при работе по интерфейсам связи с датчиком – I²C или SPI:
После чего необходимо объявить и инициализировать структуру интерфейса устройства:
Также, если это необходимо для функций чтения и записи платформы, нужно инициализировать параметр handle:
Стоит также отметить, что для дальнейшей работы необходимо наличие компилятора (в данном случае он встроен в пакет IAR) и библиотеки для микроконтроллера, с которым планируется работа, например, stm32h7xx_hal.h.
Запуск примеров
Как уже говорилось ранее, примеры написаны для микроконтроллеров STM32 с использованием инструмента STM32CubeMX, но их можно использовать в качестве руководства для любой платформы.
В случае использования поддерживаемых отладочных плат STMicroelectronics файл примеров (.c) может работать без применения каких-либо изменений. Для этого необходимо выполнить следующие действия:
- Загрузите и установите STM32CubeMX и соответствующий пакет MCU (то есть STM32CubeF4 для NucleoF411 и STEVAL_MKI109V3).
- Откройте файл конфигурации .ioc, связанный с выбранной отладочной платой с помощью STM32CubeMX. Файлы конфигурации .ioc для поддерживаемых оценочных плат можно найти в соответствующей папке демонстрационного проекта (рисунок 14).
Рис. 14. Открытый в STM32CubeMX проект _prj_MKI109V3
- Создайте проект с помощью инструмента STM32CubeMX и выберите предпочитаемую IDE/Toolchain (рисунок 15).
Рис. 15. Выбор настроек проекта
- Сгенерируйте код с заданными параметрами, нажав соответствующую кнопку в STM32CubeMX.
- В сгенерированный проект добавьте драйвер датчика STMicroelectronics (файлы драйверов находятся в папке драйверов датчиков по адресу xxxxxxxx_STdC\driver\xxxxxxx_reg.c (.h), где xxxxxxx указывает номер детали датчика), и добавьте в проект исходный файл примера (.c), который вас интересует. Файлы примеров находятся в папке драйверов датчика по адресу xxxxxxx_STdC\example, где xxxxxxx идентифицирует номер детали датчика (рисунок 16).
Рис. 16. Окно проекта в IAR с генерированным в STM32CubeMX кодом и добавленными файлами драйвера и примера
- Обратите внимание, что для корректной работы примера может потребоваться подключение дополнительных библиотек, таких как gpio.h и usart.h.
- Раскомментируйте определение выбранной платы в разделе /* STMicroelectronics evaluation boards definition */ в файле выбранного примера (.c):
- И последний шаг – добавьте вызов функции-примера в цикл while (1) в файле main () функции main.c, автоматически сгенерированной инструментом STM32CubeMX.
Запуск примеров с использованием другого оборудования
Если используется другой микроконтроллер, не относящийся к семейству STM32, то генерация кода STM32CubeMX становится невозможной, однако сами драйверы MEMS и примеры к ним по-прежнему доступны пользователю и аналогичным образом добавляются в проект для нового устройства.
Заключение
Создание алгоритма работы устройства на основе MEMS-датчиков является одним из ключевых действий перед выводом решения на рынок. Современное программное обеспечение от компании STMicroelectronics и среда STM32 ODE позволяет максимально упростить эту задачу, а открытые пакеты С-драйверов дают возможность использовать датчики ST не только с продукцией самой компании, но и c решениями сторонних производителей.