Программирование STM32 Blue Pill через USB порт с помощью Arduino IDE


Плата разработки STM32F103C8, также известная как STM32 Blue Pill ("синяя таблетка"), отличается невысокой стоимостью и хорошей производительностью благодаря наличию в ее составе микропроцессора на основе архитектуры ARM Cortex M3. Также ее существенным достоинством является возможность ее программирования с помощью Arduino IDE, что делает ее исключительно удобной для всех радиолюбителей, знакомых с платформой Arduino.

Внешний вид проекта программирования платы STM32 Blue Pill через USB порт

В предыдущей статье на нашем сайте мы рассмотрели основы работы с платой STM32 Blue Pill и ее программирование с помощью Arduino IDE. Но у той статьи есть один существенный недостаток – для программирования платы STM32 Blue Pill нам приходилось использовать FTDI программатор и необходимо было переключать джампер boot 0 между режимами программирования и работы платы, что было достаточно неудобно. При этом порт mini-USB в составе платы STM32 Blue Pill совершенно не использовался.

В данной статье для загрузки программы в плату STM32F103C8 через USB порт мы будем использовать загрузчик, разработанный компанией LeafLabs для плат Maple mini. Данный загрузчик можно записать в плату STM32 в качестве прошивки, после чего мы сможем использовать USB порт платы STM32 для загрузки в нее программ как это делается для большинства плат Arduino.

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

Необходимые компоненты

  1. Плата разработки STM32F103C8T6 (STM32 Blue Pill) (купить на AliExpress).
  2. Плата FTDI (3.3V) (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

Схема проекта

Для программирования платы STM32 Blue Pill непосредственно через USB порт нам сначала необходимо загрузить в нее программу (загрузчик) Maple boot loader. Для этого нам необходимо использовать FTDI программатор, подключенный к контактам Rx и Tx платы STM32 как показано на следующем рисунке.

Схема подключения к плате STM32 Blue Pill платы FTDIВнешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Убедитесь в том, что перед записью в плату загрузчика (boot loader) джампер boot 0 на плате установлен в положение 1 (режим программирования). Когда загрузчик будет загружен в плату этот джампер можно будет вернуть в исходное положение (рабочий режим).

Положения джампера платы STM32 для переключения между режимами программирования и работы

Загрузка Maple Boot loader в плату разработки STM32

Подключите FTDI программатор к плате STM32 как показано на рисунке выше и выполните следующую последовательность шагов.

Шаг 1. Скачайте бинарный файл (bin file) загрузчика с репозитория github.

Шаг 2. Далее нам необходимо скачать и установить программное обеспечение STM Flash loader чтобы загрузить скачанный бинарный файл в плату STM32. Для этого перейдите по данной ссылке, открывшуюся страницу пролистайте вниз и там нажмите на get software.

Ссылка для скачивания STM Flash loader

Шаг 3. Для скачивания этого программного обеспечения вам необходимо будет ввести свой E-mail – на него будет выслана ссылка для скачивания программного обеспечения. По указанной ссылке вы снова перейдете на данный веб-сайт, на котором вам снова необходимо будет нажать на get software, после чего начнется процесс скачивания. Он будет не очень быстрым, поэтому придется немного подождать.

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

Шаг 4. После того как вы скачали и установили программное обеспечение убедитесь что ваша плата STM32 подключена к компьютеру с помощью FTDI программатора. После этого запустите на выполнение установленный STM Flash loader. Он автоматически обнаружит COM порт, к которому произошло подключение нашей платы. В нашем случае это COM4. Остальные настройки оставьте без изменения как показано на следующем рисунке.

Установка настроек STM Flash loader

Шаг 5. Нажмите на кнопку Next дважды и STM Flash loader автоматически определит и выведет на экран характеристики вашей платы как показано на следующем рисунке. В нашем случае тип платы оказался STM32F1 с объемом флэш памяти 128 Кбайт.

Отображение характеристик платы в STM Flash loader

Шаг 6. Выберите пункт Download to device и укажите местоположение вашего бинарного файла с загрузчиком (который мы скачали на 1-м шаге). Нажмите на next.

Выбор настроек записи загрузчика в STM Flash loader

Шаг 7. STM Flash loader скачает ряд необходимых файлов как показано на рисунке ниже и начнется процесс загрузки прошивки.

Процесс загрузки прошивки в STM Flash loader

Шаг 8. После того как процесс загрузки прошивки успешно завершится, мы увидим экран, показанный на рисунке ниже. Нажмите на close и выйдите из приложения. Таким образом, мы успешно загрузили в плату STM32 загрузчик Arduino. Теперь нам необходимо подготовить Arduino IDE для работы с платой STM32.

Завершение процесса загрузки прошивки в STM Flash loader

Подготовка Arduino IDE для работы с платой STM32

Для этого выполните следующую последовательность шагов.

Шаг 1. Если у вас еще не установлена Arduino IDE, то скачайте и установите ее по этой ссылке. Убедитесь, что в процессе ее установки вы выбрали правильную операционную систему.

Шаг 2. После установки Arduino IDE нам необходимо скачать и установить в нее пакеты для работы с платой STM32. Для этого в Arduino IDE откройте пункт меню File -> Preferences.

Шаг 3. Откроется новое диалоговое окно. В данном окне в поле additional Boards Manager URL вставьте следующую ссылку:

http://dan.drown.org/stm32duino/package_STM32duino_index.json

Добавление поддержки плат STM32 в Arduino IDE

Затем нажмите OK.

Шаг 4. После этого откройте пункт меню Tool -> Boards -> Board Manager. Откройте окно менеджера плат, в нем выполните поиск “STM32F1” и установите найденный пакет.

Шаг 5. После того как пакет будет установлен откройте каталог C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\drivers\win, в котором вы найдете установочные файлы install_drivers.bat и install_STM_COM_drivers.bat.

Шаг 6. Установите оба этих bat файла. В результате вы увидите DOS экраны как показано на следующем рисунке.

Установка файла install_drivers.bat

Установка файла install_STM_COM_drivers.bat

Теперь Arduino IDE подготовлена к программированию платы STM32 (Blue Pill) и необходимые драйверы для этого установлены.

Программирование платы STM32 (Blue Pill) через USB порт

Отключите от платы STM32 FTDI программатор. Подключите плату к компьютеру через порт micro-USB как показано на рисунке ниже. Убедитесь что джампер 0 находится в положении 0 (рабочий режим). Теперь, при программировании платы STM32 через USB порт у нас нет необходимости переключать джампер 0 между положениями 0 и 1 для загрузки программы в плату и ее запуска на выполнение.

Подключение платы STM32 Blue Pill к компьютеру с помощью USB кабеля

В этом случае ваш компьютер должен обнаружить подключенную плату STM32 самостоятельно (автоматически). Подождите немного пока для работы с ней установятся необходимые драйверы. Затем откройте диспетчер устройств и посмотрите к какому COM порту подключилась ваша плата. В нашем случае она подключилась к порту COM8 под именем Maple Mini.

Обнаружение подключенной платы STM32 в диспетчере устройств

Затем в Arduino IDE откройте пункт меню Tools, пролистайте его вниз и в нем найдите плату Generic STM32F103C series как показано на рисунке ниже. Убедитесь, что выбран вариант 64k Flash type, скорость CPU 72 МГц и измените метод загрузки на STM32duino Bootloader. Также выберите правильный COM порт в соответствии с тем, который вы определили в диспетчере устройств.

Выбор платы Generic STM32F103C series в Arduino IDE

После осуществления всех этих настроек проверьте правый нижний угол Arduino IDE – в нем вы должны увидеть произведенные настройки.

Проверка сделанных настроек в правом нижнем углу Arduino IDE

Теперь Arduino IDE готова к программированию платы разработки STM32 Blue Pill. Загрузим в нее стандартный пример программы мигания светодиодом.

Местоположение примера программы мигания светодиодом для платы STM32 в Arduino IDE

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

Светодиод в представленном примере будет мигать с интервалом в 1 секунду.

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

Процесс загрузки программы в плату STM32 Blue Pill

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

Тестирование работы программы мигания светодиодом в плате STM32

Теперь вы можете программировать плату STM32 (Blue Pill) также, как и обычные платы Arduino и у вас больше нет необходимости изменять позицию джампера или использовать внешний FTDI программатор для загрузки кода программы в плату.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
1 895 просмотров

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

Ваш адрес email не будет опубликован.