Топливо для MEMS – универсальный набор С-драйверов для датчиков STMicroelectronics

24 июля

системы безопасностипотребительская электроникаST Microelectronicsстатьяинтегральные микросхемыдатчики

В статье приведено описание основных пакетов программной поддержки от STMicroelectronics, а также находящихся в открытом доступе С-драйверов для работы с MEMS-датчиками ST.

Стремительный скачок развития микросистемной техники во многом произошел благодаря потребностям рынка в датчиках, микродвигателях и преобразователях с малыми габаритными размерами. Впоследствии такой тип устройств получил наименование MEMS. MEMS, или микроэлектромеханические системы (Microelectromechanical Systems) – это миниатюрные устройства различного функционального назначения, сочетающие в себе одновременно микромеханическую и электронную части (рисунок 1).

Рис. 1. Обобщенная схема MEMS-устройств

Рис. 1. Обобщенная схема MEMS-устройств

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

В настоящее время MEMS находят применение как в гироскопах, акселерометрах, смартфонах, микрофонах и компасах, так и в промышленных и коммерческих решениях – в магнитометрах, термодатчиках, датчиках давления и прочей аппаратуре.

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

MEMS-датчики от STMicroelectronics

Ввиду растущей популярности MEMS-решений многие компании, занимающиеся изготовлением электронных компонентов, устремились в данный сектор. Одной из ведущих в этой области стала компания STMicroelectronics, предлагающая своим клиентам не только сами MEMS-датчики, но и программную и аппаратную поддержку, состоящую из бесплатно распространяемых программных пакетов и драйверов, а также широкого спектра совместимых модулей.

Спектр MEMS-датчиков производства компании STMicroelectronics охватывает все возможные сферы применения и широко представлен в окружающих нас устройствах  (рисунок 2). В 2018 году ST существенно расширила линейку MEMS-датчиков, добавив микросхемы с более высокой точностью, которые способны работать автономно до 10 лет. Многие разработчики отдают предпочтение продукции STMicroelectronics за надежность, одно из лучших на рынке соотношений «цена/качество» и высокие технические характеристики. На сегодняшний день компания выпустила уже 15 миллиардов MEMS-микросхем.

Рис. 2. Ассортимент MEMS-датчиков производства STMicroelectronics

Рис. 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)

Рис. 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

Рис. 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 могут запускаться на платах NUCLEOF401RENUCLEO-L053R8NUCLEO-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

Рис. 5. Архитектура пакета BLUEMICROSYSTEM1

AlgoBuilder

AlgoBuilder – продукт STMicroelectronics, который позволяет задать и отладить алгоритм работы датчиков без написания строк программного кода. AlgoBuilder представляет собой Windows-приложение, в котором пользователь задает алгоритм работы посредством взаимодействия с графическими блоками. Приложение позволяет спроектировать логику обработки сигналов от MEMS-датчиков, автоматически преобразовать алгоритм в С-код и загрузить его в микроконтроллер серии STM32. (рисунок 6).

Рис. 6. Логика работы AlgoBuilder

Рис. 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

Рис. 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

Рис. 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

Рис. 9. Начало работы с Open.MEMS

Набор С-драйверов для MEMS-датчиков STMicroelectronics

При поиске универсальных пакетов драйверов для MEMS-датчиков на сайте ST перед пользователем открывается следующая картина (рисунок 10).

Рис. 10. Результат поиска драйверов на сайте ST

Рис. 10. Результат поиска драйверов на сайте ST

Наиболее интересным разделом в данном списке является C-Drivers-MEMS – универсальный набор С-драйверов для MEMS-датчиков, созданный STMicroelectronics для использования датчиков MEMS с различными операционными системами. Пакет находится в открытом доступе и расположен в репозитории на сайте Github. Репозиторий содержит драйверы и примеры для сенсоров MEMS, написанные на языке СИ. Драйверы датчиков и примеры приведены по номеру устройства (рисунок 11).

Рис. 11. Репозиторий STMems_Standard_C_drivers

Рис. 11. Репозиторий STMems_Standard_C_drivers

Репозиторий содержит два типа папок:

  • папка, содержащая драйверы датчиков с именем xxxxxxx_STdC, в котором xxxxxxx – это номер датчика;
  • папка, содержащая демонстрационный проект с именем _prj_XXXXXXX, где XXXXXXX – это имя оценочной платы ST.

Каждая папка драйвера датчика, в свою очередь, содержит папку с самим драйвером, папку с примерами использования и файл Readme (рисунок 12).

Рис. 12. Содержание папки драйвера

Рис. 12. Содержание папки драйвера

В driver содержатся файлы драйвера датчика C (.h и .c), которые будут впоследствии включены в проект.

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

README – дополнительная информация о конкретном драйвере.

В свою очередь каждая папка демонстрационного проекта содержит один файл конфигурации для инструмента STM32CubeMX с именем _prj_XXXXXXX\XXXXXX.iocwhere, где XXXXXXX – это имя оценочной платы ST (рисунок 13).

Рис. 13. Содержание папки с демонстрационным проектом

Рис. 13. Содержание папки с демонстрационным проектом

Используя инструмент STM32CubeMX, настроенный с помощью соответствующего пакета MCU, и файл с расширением .ioc, можно создать проект, в котором впоследствии можно легко запускать примеры, доступные в каждой папке драйверов датчиков.

Интеграция драйверов в проект

Драйвер не зависит от используемой платформы. Первое, что необходимо сделать после создания проекта в среде, например, IAR – это включить в проект файлы драйверов датчика (.h и .c), расположенные в папке xxxxxxx_STdC\driver соответствующего продукта.

Далее необходимо определить в коде функции чтения и записи, которые используют драйвер платформы при работе по интерфейсам связи с датчиком – I²C или SPI:


int32_tplatform_write(void*handle, uint8_t Reg, uint8_t*Bufp, uint16_tlen)

int32_tplatform_read(void*handle, uint8_t Reg, uint8_t*Bufp, uint16_tlen)

После чего необходимо объявить и инициализировать структуру интерфейса устройства:


xxxxxxx_ctx_tdev_ctx; /** xxxxxxx – номер устройства**/

dev_ctx.write_reg=platform_write;

dev_ctx.read_reg=platform_read;

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


dev_ctx.handle=&platform_handle;

Стоит также отметить, что для дальнейшей работы необходимо наличие компилятора (в данном случае он встроен в пакет IAR) и библиотеки для микроконтроллера, с которым планируется работа, например, stm32h7xx_hal.h.

Запуск примеров

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

В случае использования поддерживаемых отладочных плат STMicroelectronics файл примеров (.c) может работать без применения каких-либо изменений. Для этого необходимо выполнить следующие действия:

  • Загрузите и установите STM32CubeMX и соответствующий пакет MCU (то есть STM32CubeF4 для NucleoF411 и STEVAL_MKI109V3).
  • Откройте файл конфигурации .ioc, связанный с выбранной отладочной платой с помощью STM32CubeMX. Файлы конфигурации .ioc для поддерживаемых оценочных плат можно найти в соответствующей папке демонстрационного проекта (рисунок 14).

Рис. 14. Открытый в STM32CubeMX проект _prj_MKI109V3

Рис. 14. Открытый в STM32CubeMX проект _prj_MKI109V3

  • Создайте проект с помощью инструмента STM32CubeMX и выберите предпочитаемую IDE/Toolchain (рисунок 15).

Рис. 15. Выбор настроек проекта

Рис. 15. Выбор настроек проекта

  • Сгенерируйте код с заданными параметрами, нажав соответствующую кнопку в STM32CubeMX.
  • В сгенерированный проект добавьте драйвер датчика STMicroelectronics (файлы драйверов находятся в папке драйверов датчиков по адресу xxxxxxxx_STdC\driver\xxxxxxx_reg.c (.h), где xxxxxxx указывает номер детали датчика), и добавьте в проект исходный файл примера (.c), который вас интересует. Файлы примеров находятся в папке драйверов датчика по адресу xxxxxxx_STdC\example, где xxxxxxx идентифицирует номер детали датчика (рисунок 16).

Рис. 16. Окно проекта в IAR с генерированным в STM32CubeMX кодом и добавленными файлами драйвера и примера

Рис. 16. Окно проекта в IAR с генерированным в STM32CubeMX кодом и добавленными файлами драйвера и примера

  • Обратите внимание, что для корректной работы примера может потребоваться подключение дополнительных библиотек, таких как gpio.h и usart.h.
  • Раскомментируйте определение выбранной платы в разделе /* STMicroelectronics evaluation boards definition */ в файле выбранного примера (.c):

/* STMicroelectronics evaluation boards definition

 *

 * Please uncomment ONLY the evaluation boards in use.

 * If a different hardware is used please comment all

 * following target board and redefine yours.

 */

//#define STEVAL_MKI109V3

#define NUCLEO_F411RE_X_NUCLEO_IKS01A2

#if defined(STEVAL_MKI109V3)

/* MKI109V3: Define communication interface */

#define SENSOR_BUS hspi2

/* MKI109V3: Vdd and Vddio power supply values */

#define PWM_3V3 915

#elif defined(NUCLEO_F411RE_X_NUCLEO_IKS01A2)

/* NUCLEO_F411RE_X_NUCLEO_IKS01A2: Define communication interface */

#define SENSOR_BUS hi2c1

#endif
  • И последний шаг – добавьте вызов функции-примера в цикл while (1) в файле main () функции main.c, автоматически сгенерированной инструментом STM32CubeMX.

/* USER CODE BEGIN WHILE */

while (1)

{

example_main_a3g4250d();

/* USER CODE END WHILE */

}

Запуск примеров с использованием другого оборудования

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

Заключение

Создание алгоритма работы устройства на основе MEMS-датчиков является одним из ключевых действий перед выводом решения на рынок. Современное программное обеспечение от компании STMicroelectronics и среда STM32 ODE позволяет максимально упростить эту задачу, а открытые пакеты С-драйверов дают возможность использовать датчики ST не только с продукцией самой компании, но и c решениями сторонних производителей.

Литература

  1. Марсель Кнехт MEMS-микрофон XENSIV от Infineon – новый уровень производительности аудиосистемы. Новости электроники № 4/2019.
  2. Вячеслав Гавриков. Как работать с MEMS-акселерометром. Пошаговое руководство на основе LIS3DHH. Новости электроники № 11/2018.
  3. Александр Абалов, Евгения Савоськина. MEMS для Интернета вещей – решения от ST. Новости электроники № 1/2017.
  4. Вячеслав Гавриков. BLE-устройство с MEMS-датчиками? – легко, с программным пакетом BLUEMICROSYSTEM1. Новости электроники № 7/2016.
•••

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

О компании ST Microelectronics

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

Товары
Наименование
STM32F105RBT6TR (ST)
STM32F100C8T6B (ST)
STM32F042F6P6 (ST)
NUCLEO-F401RE (ST)
NUCLEO-L476RG (ST)
LIS2DHTR (ST)
LIS2DH12TR (ST)
LIS2DW12TR (ST)
X-NUCLEO-IKS01A2 (ST)
LSM6DS3TR (ST)
LSM6DSLTR (ST)
LSM6DSMTR (ST)