Для большинства людей первой встроенной платой для разработки, над которой они будут работать, скорее всего, будет плата Arduino. Но, как и все могут согласиться, ваша Arduino не поможет вам продвинуться в электронике так далеко, как бы вам хотелось - рано или поздно все равно придется переходить на платформы, используемые в промышленности. Если вы уже знакомы с Arduino, то одним из идеальных шагов в сторону промышленных образцов будет переход на платформу STM32, это можно сделать с помощью отладочной платы (платы разработки) STM32, поскольку она поддерживает все платы Arduino, что поможет вам с аппаратной стороны, а также имеет множество встроенных библиотек и функций, которые помогут вам с программной стороны. Также знакомство с микроконтроллерами STM32 поможет вам легко изучить другие модули разработки от ST, такие как, например, SensorTile.Box.
Сейчас доступно множество версий плат STM32, и именно ту, которую мы рассмотрим в данной статье, называется STM32F401 Nucleo-64. Имя STM32 означает, что на нашей плате разработки имеется 32-битный микроконтроллер, а имя Nucleo-64 означает, что микроконтроллер имеет 64 контакта Точно так же существует множество других версий плат Nucleo 64, таких как STM32F103, STM32F303 и т. д., но как только вы изучите одну платы, остальные будет изучить значительно проще.
Также на нашем сайте вы можете посмотреть статью про начало работы с платой STM32 Nucleo64.
Аппаратное обеспечение отладочной платы STM32 Nucleo 64
Начнем с распаковки нашей платы разработки. Как видите, полный комплект состоит только из нашей отладочной (макетной) платы и инструкции. В инструкции указаны характеристики контроллера, его распиновка, а на обратной стороне указана некоторая информация о том, как начать работу, и доступные варианты набора инструментов.
Присмотревшись к плате, можно увидеть что она разделена на две области. Верхняя часть — это отладчик и программатор ST-Link /V2 , а нижняя часть — это непосредственно плата разработки. Таким образом, вы можете легко программировать и отлаживать свою плату прямо из коробки, используя дополнительный USB-кабель, который можно подключить к мини-порту USB на плате.
На первый взгляд может показаться, что на плате много перемычек и компонентов, но все они предназначены для того, чтобы нам было проще. Две перемычки CN11 и CN12, которые вы найдете по обе стороны платы, на самом деле являются фиктивными перемычками. При необходимости эти перемычки можно использовать для других целей в будущем. Две перемычки на CN2 используются для подключения секции программатора и отладчика к нашей плате разработки. В дальнейшем вы сможете снять эти перемычки, чтобы через эти контакты использовать программатор для других микроконтроллеров ST. Этот контакт разъема JP1 можно замкнуть, чтобы ограничить ток USB до 100 мА. Если оставить его открытым, максимальный ток составит 300 мА. Также на плате есть трехцветный светодиод (LD1), который загорается красным, когда на плату подается питание, и становится зеленым, когда плата успешно запрограммирована, и становится оранжевым, когда происходит сбой связи.
Переходя к разделу разработки, у нас есть самый важный компонент платы — это микроконтроллер STM32F401RET6. Это 64-контактный 32-битный микроконтроллер с процессором ARM Cortex M4, работающим на частоте 84 МГц. Он также имеет флэш-память объемом 512 КБ и SRAM 96 КБ. Микроконтроллер имеет 10 16-битных и 32-битных таймеров и один 12-битный АЦП. Он также имеет три USART, три I2C, четыре SPI и один USB 2.0 для внешних коммуникаций. Вы также можете посмотреть техническое описание STM32F401, чтобы получить дополнительную техническую информацию о плате.
А теперь самое интересное - плата поддерживает все шилды Arduino. Плата имеет два набора разъемов, гнездовые контакты предназначены для шилдов Arduino, которые идеально подходят к Wi-Fi Shield ESP8266 и нашему Semtech Arduino LoRa Shield, как вы можете видеть на изображении ниже.
Другие штырьки на плате называются штырями ST morpho, и их можно использовать для использования штырей для расширения на нашем 64-контактном микроконтроллере. Затем у нас есть кнопка сброса и настраиваемая пользователем кнопка, подключенная к контакту PC13, а также светодиод, который подключен к контакту D13, как и у плат Arduino. Для питания платы мы можем либо использовать порт USB, либо напрямую подать регулируемое напряжение 5 В на разъем E5V или на контакт 5 В. Не забудьте поменять эту перемычку, чтобы указать, как вы питаете плату; U5V указывает на то, что плата питается от USB. У нас также есть еще одна интересная перемычка, называемая IDD, которую можно использовать для измерения тока, потребляемого вашим микроконтроллером, подключив к этим контактам амперметр.
Программирование макетных плат STM32 Nucleo 64
Что касается раздела программного обеспечения, то плата имеет огромную библиотеку и поддержку программирования и может быть запрограммирована с использованием Keil, IAR Workbench и многих других IDE. Но интересно то, что он поддерживает среду разработки ARM Mbed и STM32Cube. Ради этой статьи мы решили использовать платформу ARM Mbed, потому что это онлайн-инструмент, и мы нашли его очень интересным, потому что с его помощью вы можете использовать не только свои платы ST, но и многие другие платы разработки, использующие микроконтроллеры ARM.
Для новичков ARM MBED — это онлайн-платформа разработки, поставляемая самой ARM, которая предоставляет встроенную операционную систему, облачные сервисы и функции безопасности для легкого создания встроенных решений на основе Интернета вещей. Это огромное сообщество открытого исходного кода, и для его подробного изучения потребуется отдельная статья.
Начало работы с STM32F401
Для начала работы используйте мини-кабель USB для подключения платы разработки STM32 к компьютеру. После подачи питания вы должны заметить, что светодиоды LD1 и LD3 загорятся красным, а программируемый светодиод LD2 будет мигать зеленым цветом, как показано ниже.
Вы также заметите на своем компьютере новый флэш-накопитель под названием «NODE_F401RE». Откройте его, и вы найдете там два файла, а именно Details.txt и mbed.htm, как показано ниже.
Вы можете запустить файл Mbed.htm, чтобы напрямую начать программировать свою плату онлайн с помощью Arm Mbed. Но прежде чем мы доберемся до этого, мы установили необходимые драйверы и зарегистрировались в Mbed. Загрузите с веб-сайта ST программное обеспечение драйвера STSW-link009, установите драйвер и убедитесь, что устройство правильно обнаружено в диспетчере устройств как показано на следующем рисунке.
Вернитесь на свою платформу mbed и зарегистрируйтесь на MBED.com, используя свои учетные данные. Затем щелкните файл MBED.HTM - после этого вы увидите следующую страницу.
Прокрутите страницу вниз и нажмите «Open Mbed compiler (Открыть компилятор Mbed)». Как видите, компилятор уже распознал нашу платформу как Nucleo-F401RE и предоставляет нам множество базовых примеров программ. Но на первый раз выберем “LED Blinky code” («Код мигания светодиода») и измените его так, чтобы светодиод выключался всякий раз при нажатии кнопки.
Как только код будет готов как показано ниже, вы можете нажать кнопку компиляции, которая предоставит вам файл bin, просто скопируйте файл bin и вставьте его на флэш-накопитель, чтобы запрограммировать плату. После завершения программирования вы заметите, что светодиод LD1 станет зеленым. Теперь нажмите синюю кнопку, и вы заметите, что зеленый светодиод погаснет. Таким образом, вы можете попробовать любую из примеров программ, чтобы изучить различные функции платы. Вы также можете вернуться на главную страницу чтобы получить другую техническую документацию и поддержку сообщества.
Заключение
В целом можно отметить что рассмотренные платы — отличный выбор, если вы пытаетесь повысить свои навыки и разрабатывать продвинутые приложения. Благодаря практической поддержке оборудования и онлайн-сообществу научиться писать отличные программы для этих программ достаточно просто. В дальнейшем после них вы уже сможете приступить к написанию программ, пригодных для промышленного использования.