Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

STM32 “Blue Pill” в среде Arduino | arm

В этом руководстве (перевод [1]) рассматривается, как программировать платку на микроконтроллере STM32F103C8T6, так называемую “Blue Pill” [2] (часто эту плату называют Arduino STM32) с помощью Arduino IDE. Платки Blue Pill в изобилии продаются на AliExpress и Taobao, для поиска вбейте STM32 stm32f103c8t6.

Примечание: если Вы любите паять, то можно также самому заказать печатную плату Blue Pill онлайн-среде EasyEDA благодаря проекту [3]. Это модифицированный в сторону упрощения проект – заменен регулятор LDO на более удобный. Также изменены номинал резистора подтяжки USB и светодиоды индикации. Десяток плат обойдутся примерно $5, плюс доставка порядка $6.

[Что понадобится]

Платка STM32 “Blue Pill” или аналогичная:

Вид на верхнюю и нижнюю стороны плат STM32 “Blue Pill”

Отладчик ST-LINK/V2 для микроконтроллеров семейств STM8 и STM32:

Примечание: этот отладчик можно купить на AliExpress и Taobao по цене порядка $2. Подойдет и более старый отладчик ST-LINK или ST-LINK/v1, однако будьте внимательны к подключению отладчика через выводы SWDCLK, SWDIO, GND и +3.3V, цоколевки у разъема отладки могут различаться (см. врезку ниже).

Цоколевки разъема SWD адаптеров ST-Link

На цоколевках синим цветом выделены 4 провода, которыми адаптер подключается к микроконтроллеру STM32.

[STLink/STLink-V1]

Вид на штырьки разъема снаружи:

            +—-+
     T_JRST |1  2| 3V3
         5V |3  4| T_JTCK/T_SWCLK
       SWIM |5  6| T_JTMS/T_SWDIO
        GND |7  8| T_JTDO
   SWIM RST |9 10| T_JTDI
            +—-+

[STLink-V2]

Вид на штырьки разъема снаружи:

            +—-+

        RST |1  2| SWCLK
       SWIM |3  4| SWDIO
        GND |5  6| GND
       3. 3V |7  8| 3.3V
         5V |9 10| 5V
            +—-+

Еще один возможный вариант цоколевки:

            +—-+
        RST |1  2| SWDIO
        GND |3  4| GND
       SWIM |5  6| SWCLK
       3.3V |7  8| 3.3V
         5V |9 10| 5V
            +—-+

[Конфигурирование Arduino IDE]

Автор оригинальной статьи [1] использовал Arduino 1.8.1. Я экспериментировал в среде Arduino версии 1.8.13, и все описанное относится к ней. Так что вероятно, что в другой более-менее новой версии Arduino все также будет работать. Процесс по шагам:

1. Зайдите в меню Файл -> Настройки (File -> Preferences) и кликните на кнопку справа от поля ввода “Дополнительные ссылки для Менеджера плат:” (Additional Boards Manager URLs).

2. В окно ввода URL вставьте ссылку

https://github. com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json

Закройте окна настроек кликами на OK.

3. Зайдите в меню Инструменты -> плата -> Менеджер плат… (Tools -> Board -> Board Manager). Для ускорения поиска нужного дополнения в выпадающем списке Тип (Type) выберите Внесены (Contributed). Прокрутите до STM32 Cores by STMicroelectronics и нажмите на кнопку Установка (Install).

Установка пакета поддержки STM32 займет несколько минут. Загрузятся утилиты компилирования и отладки ARM (ARM debugging/compiling toolchain).

4. Необходимо добавить поддержку ST-Link. Загрузите Arduino_STM32-master.zip по ссылке [4]. Создайте папку Arduino_STM32 в каталоге arduino-1.8.13\hardware\ (здесь arduino-1.8.13 это корневой каталог установки Arduino IDE, где находится исполняемый файл arduino.exe). Распакуйте содержимое архива Arduino_STM32-master.zip в папку arduino-1.8. 13\hardware\Arduino_STM32.

Перезапустите Arduino IDE.

5. Теперь надо сделать выбор используемой платы и программатора. Зайдите в меню Инструменты (Tools) -> Плата: (Board) -> STM32F1 Boards (Arduino_STM32) -> Generic STM32F103C series. Выбор может быть сделан на основе используемого на плате микроконтроллера.

Пример возможного выбора:

Плата: “Generic STM32F103C series”
Variant: “STM32F103C8 (20k RAM. 64k Flash)”
Upload method: “STLink”
CPU Speed(MHz): “72 MHz (Normal)”
Optimize: “Smallest (default)”

[Загрузка скетча]

Чтобы убедиться, что все работает, запишем в память STM32103 простейшую программу мигания светодиодом – традиционный “Hello World” в мире микроконтроллеров. Для этого зайдите в меню Файл -> Примеры -> 01.Basics -> Blink (File -> Examples -> 01.Basics -> Blink).

Загрузится скетч Blink.

Соедините STLink с платой Blue Pill четырьмя проводами (см. выше врезку “Цоколевки разъема SWD адаптеров ST-Link”):

Blue Pill
STLink
3V3 3.3V
SWO SWDIO
SWCLK SWCLK
GND GND

Перемычки BOOT0 и BOOT1 установите в положение 00, что соответствует запуску кода из памяти Flash.

Назначение перемычек BOOT0 и BOOT1

BOOT1 BOOT0 Откуда запустится программа
0 0 Внутренняя память программ FLASH
1 0
0 1 Системная память (встроенный в ROM загрузчик [6])
1 1 Внутренняя память RAM

Нажмите на круглую кнопку со стрелкой вправо (эквивалентно выбору в меню Скетч -> Загрузка Ctrl+U). Программа скомпилируется и загрузится, светодиод PC13 начнет медленно мигать.

[Что дальше?]

Микроконтроллер серии STM32F1 (Arm® Cortex™-M) обладает широким набором аппаратных интерфейсов и возможностей использования.

Поэкспериментируйте с другими примерами кода и проектами из меню Файл -> Примеры. Будьте осторожны с использованием выводов USB- и USB+ (ножки портов PA11 и PA12) – они соединены с выводами коннектора microUSB. Также имейте в виду, что к выводам OSC32IN и OSC32OUT (ножки портов PC14 и PC15) подключен часовой кварцевый резонатор на 32.768 кГц.

[Ссылки]

1. How to program a STM32 Blue Pill with Arduino site:idyl.io.
2. Blue Pill STM32F103C8T6.

3. STM32F103 «Blue Pill» modified board.
4. rogerclarkmelbourne / Arduino_STM32 site:github.com.
5. Платы STM32 на сайте vcc-gnd (на китайском языке).
6. Загрузчик STM32F42xxx и STM32F43xxx.
7. 201222STM32F103C8T6-BluePill.zip – пакеты ПО, документация.

Купити Контролери Arduino, STM в Україні

за порядкомза зростанням ціниза зниженням ціниза новизною

  • 00960

    Arduino Mega 2560 R3 Ch440

    573,30 грн

    В наявності 20 од. Оптом і в роздріб

  • eyJwcm9kdWN0SWQiOjE1MzAzOTE4NzIsImNhdGVnb3J5SWQiOjcwMzA0LCJjb21wYW55SWQiOjM2MzQ5NDYsInNvdXJjZSI6InByb206Y29tcGFueV9zaXRlIiwiaWF0IjoxNjc5NDcxODA2LjQ4MjE2MywicGFnZUlkIjoiZmI0ZGYyYmEtMjdlMS00MjYyLWFjMDYtZTU1MGNiM2FiZWVmIiwicG93IjoidjIifQ.RSxXyhu331410kUGz8M3n6v-9x9K1HTh-NrIc4yazhc” data-advtracking-product-id=”1530391872″ data-tg-chain=”{"view_type": "preview"}”>

    00947

    Модуль STM32F030C8T6 – налагоджувальна плата

    296,40 грн

    В наявності 10 од.

  • 00956

    Модуль STM32F103C6T6 TYPE-C – налагоджувальна плата

    471,50 грн

    Закінчується Оптом і в роздріб

  • eyJwcm9kdWN0SWQiOjE1MzQ0NjY4MjUsImNhdGVnb3J5SWQiOjcwMzA0LCJjb21wYW55SWQiOjM2MzQ5NDYsInNvdXJjZSI6InByb206Y29tcGFueV9zaXRlIiwiaWF0IjoxNjc5NDcxODA2LjQ4NDA3NDgsInBhZ2VJZCI6ImI1NDJkMWQ1LWY2NDMtNGRmYS1iOTlkLTk3MDJhN2MwNWZiOCIsInBvdyI6InYyIn0.WpgQSwK75BD_k9AroopwcFt-72cKbNoYJUoznZ__pPA” data-advtracking-product-id=”1534466825″ data-tg-chain=”{"view_type": "preview"}”>

    04153

    Базовий модуль Arduino Nano AVR ATmega328P

    218,40 грн

    В наявності 82 од.

  • 05678

    Модуль NodeMCU ESP8266 Ch440 V3 Lua з Wi-Fi

    113,10 грн

    В наявності 54 од. Оптом і в роздріб

  • 06131

    ARDUINO PRO MICRO Atmega32U4 5V / 16MHz

    241,80 грн

    В наявності 20 од.

  • vcQRBG-n9l_j0VBCxni0i629tO6UuNM23yaqjOH71JI” data-advtracking-product-id=”1622340770″ data-tg-chain=”{"view_type": "preview"}”>

    06132

    ARDUINO PRO MINI 328, 5 В/16 МГц

    156 грн

    В наявності 20 од.

  • 00909

    Модуль N76E003AT20 – налагоджувальна плата

    105,30 грн

    Очікується

    +380 (68) 412-48-94

    • +380 (95) 571-13-53
  • eyJwcm9kdWN0SWQiOjE1MzAzOTE4ODQsImNhdGVnb3J5SWQiOjcwMzA0LCJjb21wYW55SWQiOjM2MzQ5NDYsInNvdXJjZSI6InByb206Y29tcGFueV9zaXRlIiwiaWF0IjoxNjc5NDcxODA2LjQ4NzU1MDcsInBhZ2VJZCI6IjUyM2Q3Y2M1LWQwODQtNDQzYS04MTk2LTAxZmUyNWIxODI0MSIsInBvdyI6InYyIn0.fItBOomiRLjRPhZ3k-QU-OpnCto9Eq6Mx4GRLjocY8E” data-advtracking-product-id=”1530391884″ data-tg-chain=”{"view_type": "preview"}”>

    00942

    Модуль UNO R3 ESP8266 WiFi shield ESP-12E WeMos D1 R1

    196,20 грн

    Очікується Оптом і в роздріб

    +380 (68) 412-48-94

    • +380 (95) 571-13-53
  • eyJwcm9kdWN0SWQiOjE1MzAzOTE4NzQsImNhdGVnb3J5SWQiOjcwMzA0LCJjb21wYW55SWQiOjM2MzQ5NDYsInNvdXJjZSI6InByb206Y29tcGFueV9zaXRlIiwiaWF0IjoxNjc5NDcxODA2LjQ4ODE4NDIsInBhZ2VJZCI6IjM3MDllYzc4LTBiMjktNDE4ZC1hNGYzLTBkMmQyNTMyZDRlMyIsInBvdyI6InYyIn0.pgkqtbGjawy46OUAp1ZtoghV4Z2-cLeTfs9d-xTcNsA” data-advtracking-product-id=”1530391874″ data-tg-chain=”{"view_type": "preview"}”>

    00953

    Модуль STM32F401CCU6 – налагоджувальна плата

    285,90 грн

    Очікується Оптом і в роздріб

    +380 (68) 412-48-94

    • +380 (95) 571-13-53
  • eyJwcm9kdWN0SWQiOjE1Njg5MzMzMTAsImNhdGVnb3J5SWQiOjUwNCwiY29tcGFueUlkIjozNjM0OTQ2LCJzb3VyY2UiOiJwcm9tOmNvbXBhbnlfc2l0ZSIsImlhdCI6MTY3OTQ3MTgwNi40ODg4ODcsInBhZ2VJZCI6Ijc1NzM3OGVkLWM5NWYtNDY3MC1iMjE2LTU5Yzg5MTJhODdlMyIsInBvdyI6InYyIn0.A-ukTJP1TpG1liI5MlM0pts3RG2Z9X0JiGmvPmAXh9s” data-advtracking-product-id=”1568933310″ data-tg-chain=”{"view_type": "preview"}”>

    05572

    Базовий модуль Arduino Uno R3 (чіп AVGA328)

    187,20 грн

    Очікується Оптом і в роздріб

    +380 (68) 412-48-94

    • +380 (95) 571-13-53
  • eyJwcm9kdWN0SWQiOjE3NDMyNzY0NzUsImNhdGVnb3J5SWQiOjUwOTAyMTMsImNvbXBhbnlJZCI6MzYzNDk0Niwic291cmNlIjoicHJvbTpjb21wYW55X3NpdGUiLCJpYXQiOjE2Nzk0NzE4MDYuNDg5NTAxNywicGFnZUlkIjoiMzMzMDNjOTEtMjdjMC00MzQ3LTkzMDgtMmEyNmJjMzE3MGU1IiwicG93IjoidjIifQ.yQCioTlrwqf868rHcdwRcSpQnlpFbCLjWrYrmTA-9Gw” data-advtracking-product-id=”1743276475″ data-tg-chain=”{"view_type": "preview"}”>

    07162

    EGS002 — плата керування для DC-AC інвертора із синусом на виході

    352,60 грн

    Очікується

    +380 (68) 412-48-94

    • +380 (95) 571-13-53
  • eyJwcm9kdWN0SWQiOjE2MzAxODMxODgsImNhdGVnb3J5SWQiOjUwMDYwMiwiY29tcGFueUlkIjozNjM0OTQ2LCJzb3VyY2UiOiJwcm9tOmNvbXBhbnlfc2l0ZSIsImlhdCI6MTY3OTQ3MTgwNi40OTAxMzAyLCJwYWdlSWQiOiJkMGQzZDBhYy04ZDZkLTRmMzUtODI2ZS03NDMzM2ViZTc2NDAiLCJwb3ciOiJ2MiJ9.P8Cd6diQ-P3rU6NWnTz3d-W1On5BezEeJ5FbkoV3FGA” data-advtracking-product-id=”1630183188″ data-tg-chain=”{"view_type": "preview"}”>

    06157

    Arduino UNO R3 ATMEGA328P

    292,90 грн

    Очікується

    +380 (68) 412-48-94

    • +380 (95) 571-13-53
  • eyJwcm9kdWN0SWQiOjE2NDcyMjA4MjcsImNhdGVnb3J5SWQiOjcwMzA0LCJjb21wYW55SWQiOjM2MzQ5NDYsInNvdXJjZSI6InByb206Y29tcGFueV9zaXRlIiwiaWF0IjoxNjc5NDcxODA2LjQ5MDkxNCwicGFnZUlkIjoiODMxMDI3MDktMjE1MC00NGJkLWI1N2UtYmZiNzA1YzhiOGRkIiwicG93IjoidjIifQ.jS9REZATflyVdJ3046EZWKJb6wRMs7AXOQqAmj989Kg” data-advtracking-product-id=”1647220827″ data-tg-chain=”{"view_type": "preview"}”>

    06287

    Контролер Arduino UNO R3 + CNC shield v3 (шилд ЧПУ) + 4 драйвери кроків двигуна A4988

    498 грн

    Очікується

    +380 (68) 412-48-94

    • +380 (95) 571-13-53

16243248

Ми пропонуємо купити контролери на базі Arduino та STM за вигідною оптовою ціною. Вони відкриють широкі можливості автоматизації різних пристроїв і процесів. Представлені в цьому каталозі контролери STM та Arduino перевершують інші типи пристроїв за обсягом вбудованої пам’яті, обчислювальної потужності, периферії (наприклад, STM32F401CCU6 підтримує Type-C, у з’єднанні з апаратним інтерфейсом USB), за кількістю портів вводу/виводу.

Пропонуємо контролер Arduino та STM з доставкою по Україні. Інтернет-радіоринок “Електроніка” працює лише з надійними постачальниками, щоб клієнти в Україні могли купити радіоелементи та інструментарій високої якості. Будь-який товар відповідає заявленим характеристикам за всіма важливими параметрами. На сайті представлено понад 10 000 найменувань радіотехнічного обладнання. Вибирайте все необхідне в одному місці за найнижчою ціною! 

Контролери в асортименті

Сучасні STM контролери користуються великою полярністю серед наших клієнтів. Їх відрізняє:

  • Доступна ціна;
  • Зручне та просте користування;
  • Широкий вибір середовищ розробки;
  • Взаємозамінність чіпів. Якщо ресурсу вашого мікроконтролера недостатньо, його можна замінити більш потужною, не змінюючи самої схеми і плати;
  • Висока продуктивність;
  • Зручне налагодження мікроконтролера.

Багато фахівців, які звикли працювати на Ардуріно, переходять на STM32, оскільки останній виграє за технічними параметрами. Так, будь-який створений Arduino контролер матиме нижчу тактову частоту – 16 МГц проти 72 МГц. Число висновків GRIO у мікроконтролерів нового покоління більше. Так само як і обсяг пам’яті.

Ще раз згадаємо pin-to-pin сумісність контролерів сімейства STM – для заміни одного чіпа на інший не потрібна заміна плати.

Однак важливо відзначити, що контролер Arduino, купити який ви можете у нас, все ще актуальний, тому що чіпи конкурента не можуть його повністю замінити. Насамперед це пов’язано з порогом входження – для роботи Ардуріно не потрібний базис, як у випадку з STM32. Плати на цій базі найпоширеніші, як і інформаційна підтримка. Також для Arduino можна знайти різні модулі та шилди, що розширюють функціонал. І хоч за співвідношенням ціна/якість виграє STM32, адептів Arduino все ще вистачає. Вам ми представили широкий асортимент контролерів з різними параметрами.

Якщо ви шукаєте вироби сімейства STM32, то вам представляємо якісні контролери, які демонструють високу стабільну продуктивність при температурах від -40С до +80 С. Також можна знайти вироби, що працюють при температурах до 105С.

У нас ви можете вибрати stm контролер з ряду моделей, що відрізняються за обсягом пам’яті, продуктивністю, споживанням енергії та іншими характеристиками.

Наші переваги

Запрошуємо до співпраці радіоаматорів, майстрів, торгових компаній та виробництва. Наша компанія укладає прямі контракти з виробником та логістичними компаніями, щоб надати найкращу цінову пропозицію на ринку для наших партнерів. Ми купуємо надійні світлодіоди, елементи електросхем, дисплеї, вузли управління електротехнікою, годинник реального часу, хімію для електронника та інші товари, які добре зарекомендували себе серед фахівців України. У нас ви також можете купити обтискання, лещата, затискачі, пінцети, викрутки та багато інших інструментів для електромонтажних робіт і не тільки.

Переход с Arduino на микроконтроллеры STM32

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

Опубликовано

Платформа Arduino предоставила любителям и стартапам невероятно низкий порог входа для разработки собственных встраиваемых устройств.

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

Однако по мере того, как потребности проекта растут и меняются с течением времени, платформа Arduino может начать ощущаться ограничивающей.

Получите БЕСПЛАТНОЕ руководство прямо сейчас: Полное руководство по микроконтроллерам STM32

Основной причиной этого является относительно ограниченный набор аппаратных средств, вызванный значительным объемом скрытой работы, необходимой для того, чтобы взять коммерческий микроконтроллер и полностью интегрировать его в программное обеспечение Arduino.

Большинство микроконтроллеров Arduino представляют собой 8-разрядные микросхемы AVR (с учетом ширины внутренней шины данных и архитектуры набора команд), и эти типы процессоров ограничены с точки зрения производительности ЦП.

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

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

В огромном проценте встроенных систем в промышленности используются 32-разрядные микросхемы ARM, приводящие в действие такие устройства, как современные автомобильные компьютеры и многие другие.

Эти чипы не имеют себе равных по соотношению цены и производительности, а процессоры ARM уже давно являются основным продуктом встроенных вычислений, и у них нет никаких признаков падения.

Особенно популярным вариантом, сохраняющим многие преимущества платформы Arduino, являются микроконтроллеры серии STM32.

Благодаря тактовой частоте процессора, достигающей 550 МГц, и огромному выбору микросхем, они открывают совершенно новый мир возможностей.

Миграция — Программное обеспечение

Возможно, вы слышали о таких проектах, как STM32duino, цель которых — сделать некоторые популярные платы разработки STM32 совместимыми с платформой Arduino.

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

Наиболее значительным переходом от Arduino к STM32, безусловно, является опыт программирования.

Как правило, проект Arduino будет состоять из одного файла кода, «скетч», с вспомогательными библиотеками, сторонними или иными, включенными в более крупные проекты с использованием инструмента импорта библиотек Arduino и написания «#import » в верхней части файла эскиза.

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

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

Эти качества специфичны для платформы Arduino, поэтому скетчи Arduino также имеют собственное расширение файла . ino.

Фактическим языком, используемым платформой Arduino, является C++, язык общего назначения, чья истинная структура проекта и поддерживающие программы в значительной степени скрыты средой разработки Arduino IDE.

И C++, и его старший родственный язык C используют два типа файлов как часть кодовой базы, которую пользователь будет писать и/или взаимодействовать с ней программно: исходные файлы, определяемые расширением файла .cpp или .c, и файлы заголовков, определяется расширением файла .h.

Файл .ino функционально идентичен отдельному файлу .c. Там определены переменные, а также функции.

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

Это позволяет, например, существование библиотеки для умножения матриц, а фактическая логика для этого определяется в файле с именем «matrix. c».

Если несколько файлов хотят использовать эти функции, расточительно и фактически запрещено эффективно переопределять эти функции снова и снова, повторно включая «matrix.c».

Вместо этого создается второй файл, «matrix.h», содержащий объявления для этих функций, которые фактически являются просто указателями на функцию, которая была определена только в одном месте.

Теперь вместо этого мы можем просто включить «matrix.h» в каждый файл, который должен использовать библиотеку матриц, что не будет расточительно повторять полные определения функций.

Если эти идеи вам незнакомы, вам следует поискать вводные уроки по программированию на C/C++, поскольку эти концепции являются основополагающими в этом переходе.

Типичный проект C/C++ будет иметь исходный файл с именем main.c, который, как и файл .ino для Arduino, содержит точку входа в приложение, функцию с именем main .

Ключевое отличие состоит в том, что в отличие от файла скетча основная функция является единственной функцией «по умолчанию», которая запускается автоматически при запуске, в отличие от пары функций «настройка» и «цикл», упомянутых выше.

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

Это подводит нас к следующему важному элементу опыта программирования. Какое программное обеспечение используется для создания и загрузки кода, если не Arduino IDE?

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

Микроконтроллеры могут быть запрограммированы в среде «голого железа», что означает, что программист использует отдельные, обычно настроенные инструменты для редактирования кода, затем компилирует его в исполняемую программу и загружает в микросхему.

Программирование, подобное этому, — лучший способ для более опытного разработчика действительно максимизировать производительность, но особенно большой скачок произошел с Arduino, который легко сочетает в себе последовательность редактирования, компиляции и прошивки и выполняет всю тяжелую работу под капотом. .

БЕСПЛАТНОЕ РУКОВОДСТВО: Введение в микроконтроллеры

Золотая середина заключается в использовании среды IDE, которая по-прежнему обеспечивает автоматическую компиляцию и загрузку для обеспечения интегрированного опыта, но позволяет снять покров с фактического написания кода и по-прежнему позволяет настраивать процесс компиляции/загрузки. ST, компания, которая производит микроконтроллеры STM32, предоставляет отличный пример этого в виде своей пользовательской IDE, STM32CubeIDE.

STM32CubeIDE намного больше и имеет больше возможностей, чем Arduino IDE. Это IDE на основе Eclipse, что означает, что это модифицированная версия вездесущего универсального редактора кода Eclipse.

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

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

На следующем изображении показан инструмент распиновки, который доступен практически для каждого доступного микроконтроллера STM32. На изображении ниже используется микросхема STM32F401CCFx и настраивается ее интерфейс I2C1 (из 3 доступных).

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

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

Эта функция делает использование всех преимуществ мощных периферийных устройств, доступных для чипов STM32, невероятно простым и избавляет от необходимости тратить время на изучение таблицы данных, чтобы выяснить, как увеличить разрешение вашего аналого-цифрового преобразователя или установить вашу шину SPI в ведомый режим.

Эти параметры были аккуратно представлены в этом графическом интерфейсе! Полученные в результате сгенерированные файлы кода содержат закомментированные блоки, в которых можно написать собственный пользовательский код, который можно увидеть в файле main.c, видимом на предыдущем изображении.

И последнее, но не менее важное: при переключении на STM32 и использовании STM32CubeIDE становится доступным мощный интерфейс отладки в реальном времени, чего не хватает Arduino.

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

Просто нажмите кнопку отладки, когда будете готовы протестировать программу, и код автоматически скомпилируется, загрузится и приостановится в начале выполнения.

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

Миграция — аппаратное обеспечение

Еще один необходимый шаг при переходе от Arduino к STM32 — понимание и устранение ключевых аппаратных различий между двумя семействами.

Возможно, наиболее важным, особенно если ваше встроенное устройство встроено в специальную печатную плату, является то, что чипы STM32 используют логический уровень 3,3 В, в отличие от уровня 5 В, используемого в Arduino.

Хотя 3,3 В является более «стандартным» и также будет совместимо с чем-то вроде Raspberry Pi, это все же может быть резким переходом после того, как вы потратили столько времени на работу с уровнями 5 В, используемыми Arduino.

Это означает, что во всех поддерживающих схемах, печатных платах и ​​т. д., в которые вы интегрировали микроконтроллеры Arduino, теперь необходимо обеспечить наличие источника питания 3,3 В, который питает ваш микроконтроллер.

Кроме того, убедитесь, что любые входы, такие как контакты GPIO, считывающие состояние переключателя, или аналоговые контакты, считывающие переменный резистор, ограничены диапазоном от 0 до 3,3 В. Управление контактом GPIO с 5 В обычно разрушает чип!

При работе с такими протоколами связи, как SPI или I2C, либо настройте ведомое устройство (т. е. датчик) на версию 3,3 В, либо используйте преобразователь логического уровня между микроконтроллером и устройством.

Если вы монтируете микроконтроллер на заказную печатную плату, то также необходимо настроить окружающие схемы по сравнению с тем, что можно было сделать для микросхемы Arduino. Точные значения и практика могут немного отличаться от чипа к чипу, но обычно рекомендуется размещать керамический блокировочный конденсатор на каждом входе источника питания микроконтроллера.

Получите БЕСПЛАТНОЕ полное руководство по разработке нового электронного оборудования

Кроме того, требуется один или два обязательных внешних конденсатора, обычно называемых VCAP.

Чтобы в полной мере воспользоваться преимуществами более мощного аппаратного обеспечения, вы также можете снабдить микросхему STM32 внешним тактовым генератором и специальной микросхемой опорного напряжения для аналогового опорного вывода (это делает опорную точку АЦП чрезвычайно стабильной по сравнению с простым подключением к тому же источнику питания, который используется для питания).

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

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

Те, кто создавал свои собственные печатные платы с микроконтроллерами, совместимыми с Arduino, вероятно, знакомы с программатором AVR-ISP, который подключается к интерфейсу SPI, а также к контакту сброса на микроконтроллере.

Это могло бы иметь форму 6-контактного разъема на печатной плате, который также присутствует на большинстве плат разработки Arduino, использующих микросхемы AVR. По умолчанию микросхема STM32 не может использовать ни один из этих интерфейсов для загрузки кода, а вместо этого использует интерфейс программирования по умолчанию для микроконтроллеров ARM, JTAG/SWD.

Распиновку этого интерфейса можно найти в Интернете, и она может иметь форму либо небольшого 10-контактного интерфейса, либо более крупного 20-контактного интерфейса.

В любом случае вам также потребуется приобрести совместимый отладочный зонд, который будет иметь ленточный кабель на одном конце для подключения к вашему интерфейсу JTAG/SWD, а на другом конце — порт USB для подключения к компьютеру.

Обратите внимание, что это обычно также относится к доскам разработки. Если вы можете загружать код на отладочную плату STM32 напрямую через USB, у вас, вероятно, есть плата Discovery, которая представляет собой отладочную плату производства ST со встроенным чипом для программирования.

Когда дело доходит до выбора отладочного зонда, наиболее простым вариантом является использование собственного отладочного зонда ST, разработанного специально для микросхем STM32, ST-Link. Это будет иметь гарантированную совместимость со всем программным обеспечением STM32Cube, описанным в предыдущем разделе, и, как правило, будет готово к работе из коробки.

Более продвинутые пользователи могут вместо этого использовать отладчики серии J-Link от SEGGER, совместимые с гораздо более широким спектром микроконтроллеров, чем просто микросхемы STM32.

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

Заключительные замечания

Существует множество отличий и сложностей, связанных с различиями между разработкой встроенного программного обеспечения на основе платы Arduino и STM32, и на эту тему можно было бы написать еще много статей.

Я надеюсь, что эта статья предоставила общий обзор, который поможет вам перейти и сделает прыжок менее пугающим. Если вы дошли до того, что подумываете сделать это для своего проекта, скорее всего, оно того стоит!

Эта статья была написана Brandon Alba , разработчиком встроенных систем с опытом создания встроенных систем с нуля. Брэндон обладает обширным опытом от проектирования печатных плат до операционных систем реального времени.

Другой контент, который может вам понравиться:

5 10 голосов

Статья Рейтинг

Платы STM32 | Arduino-FOC

Driver support

MCU 2 PWM mode 4PWM mode 3 PWM mode 6 PWM mode pwm frequency config
stm32 ✔️ ✔️ ✔️ ✔️ ✔️

Current sensing support

MCU In-line Low-side High-side
stm32 (in general) ✔️
stm32f1 family ✔️ ✔️ (one motor)
stm32f4 family ✔️ ✔️ (one motor)
stm32g4 family ✔️ ✔️ (one motor)
stm32l4 family ✔️ ✔️ (initial)
stm32 B_G431B_ESC1 ✔️ (one motor)

Устройства Stm32 полностью совместимы с SimpleFOClibrary и будут работать со всеми типами драйверов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *