Настройка поддержки чипа STM32F103C8T6 средой Arduino IDE


Настройка поддержки чипа STM32F103C8T6 средой Arduino IDE

Перед началом работы необходимо скачать архив с необходимыми файлами:

Скачать архив с нашего сайта

 


Первое, что необходимо сделать — залить в микроконтроллер специальный загрузчик, который позволит прошивать плату через аппаратный USB, причём прямо из среды разработки. Для этого необходимо перевести верхний джампер (он же «BOOT0»), в положение «1»:

STM32F103C8T6: перемычки

Для чего нужны BOOT0 и BOOT1 джамперы?

Дело в том, что в STM32 с завода прошит, в так называемую системную память (System Memory), специальный загрузчик, который позволяет прошивать плату через самый обычный USB to UART переходник, не прибегая к специфическим программаторам типа ST-Link V2.

STM32F103C8T6: таблица BOOT

Далее понадобиться переходник с USB на UART. Стоит помнить, что STM32 – это 3.3 В логика, совместимость с 5-ти вольтовой не гарантируется, поэтому рекомендовано использовать USB to UART, у которого есть возможность выбора режимов работы с 3.3/5В логикой. Подойдет самый доступный преобразователь на базе CH340.

Подключите плату к преобразователю следующим образом:

G ↔ GND;
5V ↔ 5V;
PA10 ↔ TXD;
PA9 ↔ RXD.

Подключение UART-преобразователя к плате STM32F103C8T6

 

PA10/PA9 на плате подписаны просто как A10/A9 — эти порты являются первым аппаратным USART’ом, всего их на плате 3, так же тут 2 аппаратных I2C и 2 SPI.

Ради удобства плата запитана от 5 В, для питания от 3.3 В на плате есть пин «3.3». Внимание: 5 В может вывести микроконтроллер из строя, так что уделите должное внимание подключению.

 


Теперь запустите Flash Loader Demonstrator (представлен в архиве, скачать который можно выше).

Flash Loader Demonstrator

Выбираем номер COM-порта нашего переходника, в этом случае это COM43, затем нажмите «Next»:

Flash Loader Demonstrator

По умолчанию здесь стоит защита от чтения, программа предупреждает, что если нажать кнопку «Remove protection», Flash память будет очищена, т.е. если бы там была какая-то прошивка — она удалится. Нажмите на кнопку.

Flash Loader Demonstrator

Подтверждаем.

Flash Loader Demonstrator

Так как отладочная плата основана на микроконтроллере STM32F103C8 — здесь 64 Кбайт Flash памяти, есть ещё STM32F103CB микроконтроллер, где в два раза больше Flash. Нажмите «Next».

Flash Loader Demonstrator

Снова «Next», появляется следующее окно:

Flash Loader Demonstrator

Выбирайте «Download to device» и жмём на “generic_boot20_pc13.bin” (тоже присутствует в архиве выше):

Flash Loader Demonstrator

Далее нажмите на кнопку «Next», после прошивки загрузчика появится соответствующее уведомление:

Flash Loader Demonstrator

Затем необходимо поместить специальное STM32 ядро для среды разработки Arduino IDE, для этого разархивируйте содержимое по адресу Мои Документы\Arduino\hardware:

STM32 ядро

Разумеется, что система устройство определить не сможет, поэтому необходимо установить драйвера на плату. Заходите в папку «Мои Документы\Arduino\hardware\Arduino_STM32\drivers\win» (или «drivers\win», в случае архива к статье), и запускаете от имени администратора файл «install_drivers.bat»:

Arduino_STM32

После этого верхний джампер («BOOT0»), переводите в положение «0» и подключаете плату к компьютеру через micro-USB кабель:

STM32F103C8T6

Она должна в диспетчере устройств определиться или как «Maple DFU», или «Maple Serial (COM*)»:

Maple DFU

 


Следующим шагом можно приступать к настройке Arduino IDE.

Запускаете среду разработки, дальше Инструменты -> Плата -> Boards Manager:

Arduino IDE и STM32

Здесь нужно установить ядро для платы Arduino Due. Выбираете последнюю версию и нажимаете «Install»:

Arduino IDE и STM32

Затем Инструменты -> Плата -> «Generic STM32F103C», дальше Variant: «STM32F103C8 (20k RAM. 64k Flash)», Upload Method: «STM32duino bootloader», Порт — номер COM-порта платы, как на скриншоте ниже:

Arduino IDE и STM32

Теперь плата готова к прошивке и программированию в среде разработки Arduino IDE. Можно прошить скетч из примеров, которые «вшиты» в ядро, заходим Файл -> Папка со скетчами -> hardware -> Arduino_STM32 -> STM32F1 -> libraries -> A_STM32_Examples -> Digital -> Blink:

Arduino IDE и STM32

Измените PB1 на PC13, так как светодиод, что на плате, подключен к этому порту. Загорается он по низкому уровню на ножке PC13.

Arduino IDE и STM32

Нажмите кнопку «Вгрузить» (порт выбирать не нужно), после прошивки среда разработки выдаст сообщение:

Arduino IDE и STM32

«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

Когда видите, сообщение типа:

Arduino IDE и STM32

«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]…

Когда среда разработки выдает:

Arduino IDE и STM32

«Searching for DFU device [1EAF:0003]…
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming…»

И больше ничего не происходит, попробуйте в этот момент перезагрузить плату, нажав кнопку Reset. По аналогии с Arduino Pro Mini.

Стоит отметить, что с программатором ST-LINK V2 скетч в плату загружается гораздо быстрее. У него сразу 3.3V логика, подходящая для контроллера. Для этого необходимо всего лишь подключить его к плате по четырем проводам.

Подключение ST-LINK V2 к плате STM32F103C8T6

 
После подключения в «Upload method» нужно выбрать «STLink». Загружаете скетч.

Arduino IDE и STLink

 


Видеоинструкция