Перед началом работы необходимо скачать архив с необходимыми файлами:
Первое, что необходимо сделать — залить в микроконтроллер специальный загрузчик, который позволит прошивать плату через аппаратный USB, причём прямо из среды разработки. Для этого необходимо перевести верхний джампер (он же «BOOT0»), в положение «1»:
Для чего нужны BOOT0 и BOOT1 джамперы?
Дело в том, что в STM32 с завода прошит, в так называемую системную память (System Memory), специальный загрузчик, который позволяет прошивать плату через самый обычный USB to UART переходник, не прибегая к специфическим программаторам типа ST-Link V2.
Далее понадобиться переходник с USB на UART. Стоит помнить, что STM32 – это 3.3 В логика, совместимость с 5-ти вольтовой не гарантируется, поэтому рекомендовано использовать USB to UART, у которого есть возможность выбора режимов работы с 3.3/5В логикой. Подойдет самый доступный преобразователь на базе Ch440.
Подключите плату к преобразователю следующим образом:
G ↔ GND;
5V ↔ 5V;
PA10 ↔ TXD;
PA9 ↔ RXD.
PA10/PA9 на плате подписаны просто как A10/A9 — эти порты являются первым аппаратным USART’ом, всего их на плате 3, так же тут 2 аппаратных I2C и 2 SPI.
Ради удобства плата запитана от 5 В, для питания от 3.3 В на плате есть пин «3.3». Внимание: 5 В может вывести микроконтроллер из строя, так что уделите должное внимание подключению.
Теперь запустите Flash Loader Demonstrator (представлен в архиве, скачать который можно выше).
Выбираем номер COM-порта нашего переходника, в этом случае это COM43, затем нажмите
По умолчанию здесь стоит защита от чтения, программа предупреждает, что если нажать кнопку «Remove protection», Flash память будет очищена, т.е. если бы там была какая-то прошивка — она удалится. Нажмите на кнопку.
Подтверждаем.
Так как отладочная плата основана на микроконтроллере STM32F103C8 — здесь 64 Кбайт Flash памяти, есть ещё STM32F103CB микроконтроллер, где в два раза больше Flash. Нажмите «Next».
Снова «Next», появляется следующее окно:
Выбирайте «Download to device» и жмём на “generic_boot20_pc13.bin” (тоже присутствует в архиве выше):
Далее нажмите на кнопку «Next»
, после прошивки загрузчика появится соответствующее уведомление:Затем необходимо поместить специальное STM32 ядро для среды разработки Arduino IDE, для этого разархивируйте содержимое по адресу Мои Документы\Arduino\hardware:
Разумеется, что система устройство определить не сможет, поэтому необходимо установить драйвера на плату. Заходите в папку «Мои Документы\Arduino\hardware\Arduino_STM32\drivers\win» (или «drivers\win», в случае архива к статье), и запускаете от имени администратора файл «install_drivers.bat»:
После этого верхний джампер («BOOT0»), переводите в положение «0» и подключаете плату к компьютеру через micro-USB кабель:
Она должна в диспетчере устройств определиться или как «Maple DFU», или «Maple Serial (COM*)»:
Следующим шагом можно приступать к настройке Arduino IDE.
Запускаете среду разработки, дальше Инструменты -> Плата -> Boards Manager:
Здесь нужно установить ядро для платы Arduino Due. Выбираете последнюю версию и нажимаете «Install»:
Затем Инструменты -> Плата -> «Generic STM32F103C», дальше Variant: «STM32F103C8 (20k RAM. 64k Flash)», Upload Method: «STM32duino bootloader», Порт — номер COM-порта платы, как на скриншоте ниже:
Теперь плата готова к прошивке и программированию в среде разработки Arduino IDE. Можно прошить скетч из примеров, которые «вшиты» в ядро, заходим Файл -> Папка со скетчами -> hardware -> Arduino_STM32 -> STM32F1 -> libraries -> A_STM32_Examples -> Digital -> Blink:
Измените PB1 на PC13, так как светодиод, что на плате, подключен к этому порту. Загорается он по низкому уровню на ножке PC13.
Нажмите кнопку «Вгрузить», после прошивки среда разработки выдаст сообщение:
«Done!
Resetting USB to switch back to runtime mode
error resetting after download: usb_reset: could not reset device, win error: Не удается найти указанный файл. ».
Однако прошивка загрузилась успешно, хотя не всегда так, иногда Arduino IDE выдаёт другие сообщения.
Couldn’t find the DFU device
Когда видите, сообщение типа:
«dfu-util — © 2007-2008 by OpenMoko Inc.
Couldn’t find the DFU device: [1EAF:0003]
This program is Free Software and has ABSOLUTELY NO WARRANTY»
Это означает, что плату прошить не удалось.
Searching for DFU device [1EAF:0003]…
Когда среда разработки выдает:
«Searching for DFU device [1EAF:0003]…
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming…»
И больше ничего не происходит, попробуйте в этот момент перезагрузить плату, нажав кнопку Reset. По аналогии с Arduino Pro Mini.
Источник: https://habr. com/ru/post/395577/
В свое время компания LeafLabs выпустила Maple Mini на базе STM32. К сожалению проект не взлетел. В 2012 году его закрыли, а все наработки отдали в открытый доступ. Сообщество радиогубителей тут же подхватило исходники и начало развивать свой проект — stm32duino. Правда пилят не спеша. Такое положение дел не понравилось rogerclarkmelbourne и он решил сделать свой велосипед с блекджеком и куртизанками.
С начала китайцы копировали только Maple Mini, потом стали выпускать свою версию в тех же размерах. На зарубежных форумах, новой плате дали кличку — Blue Pill. По аналогии с синей таблеткой из фильма «Матрица». Существует большое количество версий платы. Самая популярная на STM32F103C8T6 и светодиодом на пине C13. Стоит около $2.2. Средняя цена Arduino Nano v3.0 с Ch440 адаптером $2.4. Даже тут STM32 лидирует. UDP: Китайцы наладили выпуск клонов STM32. Умеют маскироваться под оригинал и даже команды совпадают, но дьявол как всегда кроется в деталях. Будьте бдительны. Проверить на подлинность можно загрузив тестовую прошивку — Bluepill Diagnostics.
внешний вид Blue Pill
описание портов Blue Pill (откройте в новом окне для увеличения)
схема Blue Pill (откройте в новом окне для увеличения)
— Рабочая частота 72Mhz, у AVR 16MHz.
— Объем Flash памяти 64KB, у AVR 32KB. Говорят на самом деле там 128KB. Советую сразу не хакать на максимальный объем, мало какие глюки вылезут. Вот когда код обкатан, можно и посмотреть.
— У STM32 20KB оперативной памяти, у AVR всего 2KB.
— Разрядность АЦП 12-bit, у AVR только 10-bit. Функция analogRead() возвращает аж 0. .4095 отсчетов, у AVR только 0..1023.
— Разрядность аппаратного ШИМ-а 16-bit, у AVR только 8-bit. Функция analogWrite() принимает значения в диапазоне от 0 до 65535, у AVR 0..255.
— У STM32 есть аппаратный USB.
— Напряжение питания от 2v до 3.6v. Как раз для двух AA/AAA батареек или аккумуляторов. Рабочий диапазон AVR от 2.7v до 5v и то с оговорками по рабочей частоте.
— У STM32 огромное количество портов и периферии.
— Из минусов, не все входы/выходы STM32 толерантны к 5v. Подключил не к тому и прощай $2. Список GPIO переваривающих 5v, помечены как FT в графе Level, находится здесь.
UDP: Фремйворк stm32duino наконец-то допилили и rogerclarkmelbourne больше не рекомендую (пропускаем простыню и сразу смотрим UDP2 в конце статьи). Github репозиторий гуру-мастера rogerclarkmelbourne бурлит и пенится. Новые глюки добавляются, старые исправляются. Не смотря на весь цирк с багами, число его последователей растет, а у stm32duino уменьшается. Секрет успеха в том, что фреймворк от rogerclarkmelbourne поддерживает заливку кода через usb bootloader. Господа из stm32duino пока научились выгружать код только через ST-Link.
UDP: Фремйворк stm32duino наконец-то допилили и bootloader больше не рекомендую. Все прекрасно шьётся с помощью STLink v2 по SWD из под Arduino IDE (пропускаем простыню про bootloader и сразу смотрим UDP2 в конце статьи). Перед тем как использовать Blue Pill, с фреймворком от rogerclarkmelbourne, ее надо чуть-чуть допилить напильником. Первое — это прошить bootloader. Для этого нам понадобится USB-COM переходник с 3v уровнем сигнала. Ищется по словосочетанию «usb serial 3.3v»
переходник USB-COM, версия раз
переходник USB-COM, версия два
Перемычку на USB-COM адаптере в положение 3.3v и подключаем по следующей схеме:
GND -> G
5V -> 5V
TX -> PA10
RX -> PA9
Качаем и устанавливаем STM32 Flash loader demonstrator. Переводим перемычку «Boot0» в положение «1«, а «Boot1» в положение «0«. Если чип не находится, на помощь приходит кнопка RESET.
грязный хак на 128KB
bootloader грузить сюда
Качаем архив Arduino_STM32 и копируем его содержимое по адресу …\Documents\Arduino\hardware\Arduino_S
Загружаем Arduino IDE 1.6.9 или выше. Идем в Boards Manager и устанавливаем пакет для Arduino SAM Boards (32-bit ARM Cortex-M3)/Arduino DUE. Перегружаем Arduino IDE, загружаем Blink. PROFFIT!
Попробовал свою LiquidCrystal_I2C и она завелась. Библиотека RotaryEnocder работает быстрее, плавнее и чётче чем на AVR.
LiquidCrystal_I2C на stm32duino
UDP: Тут провели расследование какой камень быстрее всех. STM32 победил.
UDP2: Для установки консервативного фреймворка от stm32duino делаем все как обычно. Дописываем json в «Preferences» и устанавливаем пакет через Boards Manager. После этого BluePill можно програмировать через ST-Link (нужно доставить STM32CubeProgrammer). Чтоб STLink v2 увидел платы с зашитым bootloader-ом, его надо удалить.
В этой статье вы узнаете, чем STM32duino отличается от Arduino и как сделать его совместимым с интегрированной средой разработки Arduino (IDE).
Если вы планируете использовать Arduino для раннего прототипа вашего продукта, вам также следует рассмотреть более мощную отладочную плату STM32duino.
Обычно называемая STM32 Blue Pill, эта плата имеет почти все возможности модуля Arduino, но по более низкой цене.
БЕСПЛАТНОЕ РУКОВОДСТВО: Введение в микроконтроллеры
Есть только две основные проблемы. Во-первых, он не совместим с большинством шилдов Arduino из-за различий в размерах и распиновке. В большинстве случаев он все еще может использовать эти щиты. Просто эти щиты просто не могут быть прицеплены к модулю.
Во-вторых, необходимо выполнить несколько шагов, прежде чем он сможет запускать код Arduino. Необходимо предпринять еще больше шагов, чтобы сделать его совместимым с обычным способом загрузки кода Arduino в целевой модуль через USB-порт ПК. Как получено, правление не будет делать ни того, ни другого.
Хотя механическую несовместимость с платами Arduino нельзя исправить, можно сделать их совместимыми с системой разработки Arduino. Это тема данной статьи.
Содержание
В таблице 1 представлено краткое сравнение наиболее распространенной платы STM32duino Blue Pill и типичной платы Arduino Uno.
Можно легко заметить, что Blue Pill превосходит Arduino Uno практически во всех аспектах, за исключением механической совместимости плат Arduino, которые в основном разработаны для форм-фактора Uno.
Что касается физического размера, на рис. 1 показано сравнение типичного Uno, STM32Duino и Arduino Nano. STM32Duino заметно меньше Uno, но длиннее Nano. На рисунке 2 ниже показана разводка платы Blue Pill.
Обратите внимание, однако, что Nano не имеет USB-интерфейса для системы разработки, что требует наличия отдельного преобразователя USB в последовательный порт, такого как FTDI232, для загрузки в него кода.
Особенность | Уно | STM32duino | Комментарии |
МПУ | ATMega328 | STM32F103C8T6 (Cortex M3) | |
Флэш-память (КБ) | 32 | 64/128 * | *128K в некоторых моделях. |
SRAM (КБ) | 2 | 20 | |
ЭСППЗУ (КБ) | 1 | Нет | |
Скорость (МГц) | 72 | ||
Разрядность шины (бит) | 32 | ||
УАПП (аппаратное обеспечение) | 1 | 3 | Не все аппаратные модули можно использовать одновременно из-за ограничений по распиновке. Это относится к обоим типам. |
СПИ | 1 | 2 | |
I 2 C (аппаратное обеспечение) | 1 | 2 | |
Таймеры | 2 (8 бит) + 1 (16 бит) | 3 (16 бит) + 1 (расширенный тип) | |
Прочее | Нет | Кристаллические часы RTC 32,768 кГц | |
АЦП (бит) | 10 | 12 | Uno может использовать внутреннюю ссылку ADC, но Blue Pill использует ссылку VCC. Таким образом, АЦП Uno может быть более точным. |
Таблица 1. Основное сравнение аппаратного обеспечения между Arduino Uno и STM32duino
Рисунок 1. Сравнение Arduino Uno, STM32duino и Arduino Nano (слева направо)
Рисунок 2. Распиновка STM32duino и описание функций контактов
Существуют и другие менее очевидные различия, которые могут быть важным в некоторых приложениях. Вот некоторые из них:
Как уже было сказано, Blue Pill и Uno имеют очень разные микроконтроллеры, а также разные устройства ввода-вывода и периферийные устройства. Тем не менее, при правильной настройке они оба могут запускать Arduino.
Есть несколько вещей, которые должны произойти, чтобы сделать любую плату микроконтроллера, включая STM32duino, совместимой с Arduino. В этом разделе кратко объясняется, что это такое, прежде чем приводятся подробные инструкции по достижению этой совместимости.
Само ядро Arduino должно быть каким-то образом предварительно загружено в микроконтроллер. Это встроенный код, который поддерживает базовые функции Arduino, такие как digitalRead или digitalWrite.
Затем идет загрузчик. Хотя в этом нет строгой необходимости, поскольку STM32 уже имеет загрузчик, который можно использовать с программатором устройств STLink V2, гораздо удобнее использовать USB для загрузки программ Arduino на плату Arduino. Именно такой подход используется в этой статье.
Поскольку код Arduino в основном является оболочкой обычного кода C/C++, в Arduino IDE необходимо установить совместимый компилятор C++. Хотя компилятор может преобразовать пользовательский код в двоичные файлы, совместимые с микроконтроллером STM32F103C8T6 Blue Pill, он все же должен знать кое-что о том, как построена фактическая плата.
Все, от того, какие контакты ввода-вывода доступны, до того, как им присвоены имена, до того, какая частота кристалла используется, до того, какой вход-выход управляет встроенным светодиодом, должно быть известно. Этот файл «определения платы» должен быть известен компилятору, чтобы правильно скомпилировать окончательный двоичный файл.
Наконец, на ПК должен быть загружен соответствующий драйвер устройства, чтобы Blue Pill USB воспринимался ПК как последовательный порт для загрузки кода из Arduino IDE.
Последние два шага необходимо выполнить только один раз за установку. Пока используется тот же ПК с той же настройкой разработки Arduino IDE, эти шаги не нужно повторять.
Чтобы подготовить Arduino IDE, сначала запустите IDE. Убедитесь, что это последняя версия. Версия должна быть не ниже 1.8.X. В настоящее время X равно 12. Перейдите в Инструменты > Доска «???» > Board Manager…, где «???» — это текущая выбранная плата в среде IDE. Это показано на рис. 3.
В Менеджере плат просто найдите « STM32F1XX/GD32F1XX boards by STM32duino » и установите его.
Рисунок 3. Переход к пункту меню Board Manager
Затем загрузите драйверы com здесь. Разархивируйте файл и перейдите в папку установки Arduino. Обычно это C:\Program files(x86)\Arduino
Теперь перейдите в папку hardware. В папке оборудования перетащите «Arduino_STM32-master» из ZIP-файла в папку оборудования и переименуйте его в Arduino_STM32.
Теперь откройте папку Arduino_STM32. Внутри есть папка с именем drivers. Где-то в этой папке будет файл с именем «install_drivers». Просто нажмите на нее, и драйверы должны установиться. Просто отвечайте «да» на все, что вам задают.
По этой ссылке приведены шаги для Linux и Mac. Это завершает часть ПК.
Этот шаг не является обязательным для запуска кода Arduino на STM32duino. Можно использовать программатор устройств STLink V2 для загрузки кода в плату.
Однако этот шаг настоятельно рекомендуется. Прежде всего, это делает плату более похожей на обычную плату Arduino. Во-вторых, несколько проще разрабатывать код с помощью простого USB-кабеля от ПК к плате, чем каждый раз использовать STLink V2.
Доски Blue Pill можно приобрести в таких местах, как Amazon. Если они вам не нужны сразу, их можно купить на AliExpress. Этот продавец в настоящее время продает их примерно по 1,75 доллара за штуку.
Следующим необходимым элементом является программатор ST Link V2. Официальный программатор ST можно купить у Digikey.
Однако есть более дешевая клонированная версия от Adafruit, которая работает так же хорошо. Это примерно вдвое дешевле официальной версии, и ее можно найти здесь.
Немного терпения возможны и более дешевые варианты. Вот ссылка на действительно недорогой. Он идентичен предыдущему, но стоит примерно в пять раз дешевле.
Два разных программатора показаны на рис. 4: оригинал слева, а клон справа. Для этой статьи будет использоваться клон. Тем не менее, оригинал работает так же хорошо. Обратите внимание, что клон обычно поставляется с кабелем Dupont. Это небольшой кабель, показанный в средней части рисунка 4.
Рисунок 4. ST-Link V2: оригинал слева и клон справа
Сначала загрузите и установите утилиту STM32 ST Download здесь. Обратите внимание, что ST требует имя и адрес электронной почты, чтобы разрешить загрузку программного обеспечения. Затем загрузите фактический загрузчик отсюда.
Следующим шагом является подключение Blue Pill к ST-Link V2 (рис. 5). Просто подключите соответствующие контакты на клоне ST-LinkV2 к STM32duino.
Обратите внимание, что на ST-Link V2 есть два контакта GND и два контакта 3V3. Любой из них подойдет для 3V3 и GND. Также переместите перемычки STM32duino в положение «1», как показано на рисунке.
После выполнения подключений просто подключите ST-Link V2 к USB-порту ПК. STM32duino, вероятно, будет свисать с USB-порта, но это нормально.
Рисунок 5. Клон STM32duino и ST-Link V2
Теперь запустите утилиту STM32 ST-Link. Появится экран, аналогичный показанному на рисунке 6. Оттуда перейдите к «Цель», а затем в подменю нажмите «Подключиться». При успешном подключении отображается экран, подобный показанному на рис. 7.
Обратите внимание, что в информации о подключении также отображается информация о целевом устройстве. В частности, обратите внимание, что некоторые STM32duino имеют 128 КБ флэш-памяти вместо 64 КБ. Последним шагом является фактическая загрузка файла, содержащего данные для прошивки, и загрузка этих данных в микроконтроллер Blue Pill.
Итак, из меню File открываем загруженный ранее bin-файл. В основной области утилиты ST-Link теперь отображается содержимое этого файла. Далее перейдите в пункт меню Target и выберите Program & Verify. Этот экран показан на рисунке 8.9.0003
Просто следуйте инструкциям оттуда. Окно состояния должно показать успешную операцию перепрошивки. Удалите все и верните перемычки Blue Pill в исходное положение «0». Теперь доска готова.
На всякий случай попробуйте. Просто загрузите простой пример «Blink» из Arduino IDE. Не вдаваясь в подробности, просто убедитесь, что:
Используйте этот параметр для всех будущих разработок с использованием STM32duino.
Рисунок 6 – Начальный экран ST-Link Util
Рисунок 7 – Успешное подключение ST Link Util к целевому устройству
Рисунок 8 – Готовность к «Программированию и проверке» прошивки
STM32duino – очень хорошая альтернатива к обычному Arduino, такому как Uno, при условии, что физическая совместимость с существующими экранами Arduino не требуется. Он гораздо мощнее, а стоит намного меньше.
Требуется немного усилий, чтобы заставить его работать как обычная плата Arduino. Однако многие из этих шагов необходимо выполнить только один раз. После завершения первоначальной настройки эта конфигурация предоставляет множество преимуществ.
4.3 7 голосов
Рейтинг статьи
Описание
Примечание: Предварительно припаянный штырек
2 Это известная плата 6TM2T3, совместимая с Arduino Микроконтроллер. STM32F103C8T6 — это ядро ARM Cortex-M3 от STMicrcoelectronics. Эту доску часто называют «Голубой таблеткой» (отсылка к матрице). Конечно, с 32-битным процессором ARM он может легко превзойти Arduino UNO по производительности. В качестве дополнительного бонуса вы можете легко запрограммировать эту плату с помощью Arduino IDE.С предварительно припаянным выводом вы можете начать использовать эту мощную плату, совместимую с Arduino, из коробки 🙂 ) Конвертер для загрузки программы. Например, это руководство от maker.pro:
Если вы любите смотреть видео, вот другое руководство от Joop Brokking:
Характеристики
Примечание: Контакты +5 В на этой плате напрямую подключены к контакту +5 В разъема USB. Защиты на месте нет. Не подключайте эту плату через USB и внешний источник питания одновременно.
Примечание: Эта плата может иметь неправильное значение резистора на контакте USB D+. Вместо 1,5 кОм он имеет резистор 10 кОм или 4,7 кОм. Это можно решить, заменив резистор на нужный номинал.
Упаковочный лист
Ресурсы
Вопросы и ответы (2)
Здравствуйте, доступен ли DMA для этого продукта? ( shuk , 27.02.2022 )
Вы можете обратиться к этому учебному пособию STM32 DMA
Привет. Я столкнулся с проблемой при использовании этого продукта, он не распознавался Windows 10/моим ноутбуком.