Содержание
Отладочная плата F103C8T6 на базе STM32 по параметрам значительно опережает аналогочные по размеру Arduino Nano или Leonardo, а по скорости близка к Arduino DUE. Есть интерес попробовать, но у новичка могут возникнуть трудности с первым запуском и программированием данной платы. Теперь есть возможность заливать скетчи через Arduino IDE. Подробности далее.
Содержание
- Отличия STM32F103C8T6 от Arduino Nano v3.0
- Подготовка железа
- Подготовка ПО
- Закачка скетча (blink) в плату
1. Отличия STM32F103C8T6 от Arduino Nano v3.0
STM32F103C8T6 | Arduino Nano v3.0 |
|
---|---|---|
Частота ядра | 72 МГц | 16 МГц |
Память для кода (Flash) | 64 кбайта | 32 кбайта |
Память для переменных ОЗУ (SRAM) | 20 кбайт | 2 кбайта |
Рабочее напряжение | 3.3В | 5В |
Память EEPROM | отсутствует, но существуют программные эмуляторы |
1 кбайт |
2. Подготовка железа
Для работы нам понадобится:
Для активации режима программирования на плате STM следует преставить перемычки: первая на 1, вторая на 0.
Конвертер FTDI переключить на питание 3.3 Вольта (перемычкой/джампером)
Соединить проводами плату (П) и конвертер (К):
3. Подготовка ПО
4. Закачка скетча (blink) в плату
В папке которую мы распаковали в п.3.б заходим по следующему пути: Arduino_STM32examplesDigitalBlink и через Arduino IDE открываем файл blink.ino либо можете взять текст отсюда:
Далее в Arduino IDE:
- Выбрать плату Generic STM32F103C series
- Выбрать Variant: (20k RAM. 64k Flash)
- Выбрать Upload method: "Serial"
- Выбрать Порт: (порт сооответствующий FTDI конвертеру)
Жмем кнопку Вгрузить и результат сразу должен быть виден.
Всё сделал по описанию,но при загрузке появляется ошибка
Arduino: 1.6.5 (Windows 7), Плата"Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), STM32duino bootloader"
Изменена опция сборки, пересобираем все
Cannot run program "inarm-no ne-eabi-g++" (in directory "."): CreateProcess error=2, Не удается найти указанный файл
Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
У меня все заработало с первой попытки по рекомендациям статьи. Светодиод мигает Arduino IDE 1.8.1, Установил в медежере плат http://dan.drown.org/stm32duino/package_STM32duino_index.json и после этого вид платы STM32F1
Вот так:
C:UsersSaddamkoAppDataLocalTemparduino_build_147792/sketch_jan14b.ino.bin
stm32flash 0.4
Using Parser : Raw BINARY
Interface serial_w32: 230400 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
– RAM : 20KiB (512b reserved by bootloader)
– Flash : 128KiB (sector size: 4×1024)
– Option RAM : 16b
– System RAM : 2KiB
Write to memory
Erasing memory
Wrote address 0x08000100 (3.15%)
.
Wrote address 0x08001fb8 (100.00%) Done.
Starting execution at address 0x08000000. done.
Заметки о Linux, системном администрировании, программировании, электронике и не только
Поиск по блогу
пятница, 10 ноября 2017 г.
Использование STM32F103C8T6 в Arduino >
Разобрался как использовать плату на базе контроллера STM32F103C8T6 в Arduino. Мой вариант платы выглядит вот так
В wiki сайта stm32duino.com такая плата называется Blue Pill. И эта плата имеет несколько недостатков, которые относительно просто устранить имея под рукой паяльник.
Крепление micro-usb разъема не внушает доверие – я пропаял его. USB D+ пин подтянут к питанию через резистор номиналом 10k, но чтобы устройство определилось на шине USB как Full Speed, нужно подтягивать USB D+ к питанию через резистор номиналом 1,5k. Гуру smd пайки могут заменить на плате резистор R10, но я выбрал вариант с подключением резистора номиналом 1,8k между пинами PA12 (на этот пин выведен USB D+) и 3.3v.
Прошивку можно заливать через USB-UART преобразователь. Для этого нужно переключить преобразователь в режим 3,3V и подключить выводы согласно таблице (в комментарии подсказали, что выводы PA9/PA10 толерантны к 5V)
USB-UART | Blue Pill |
---|---|
Gnd | Gnd |
Vcc | 3.3V |
RX | PA9 |
TX | PA10 |
В настройках Arduino IDE нужно добавить поддержку SMT32F103 (File / Preferences / Additional Boards Manager URL):
В Boards Manager (Tools / Board / Boards Manager) установить "SMT32F1xx/GD32F1xx boards by smt32duino" и активировать загрузку прошивки через Serial (Tools / Upload method / Serial). На плате нужно переключить перемычку BOOT0 в High, а BOOT1 в Low. После этого нужно сбросить плату и можно заливать скетчи. Для нормальной работы прошивки BOOT0 и BOOT1 должны быть в состоянии Low.
Но лично я рекомендую прошить STM32duino bootloader и пользоваться загрузкой скетча через USB. Для этого подключаем плату через USB-UART преобразователь, как описано выше. Затем в консоли выполняем команды
Мне еще потребовалось подправить правила UDEV, чтобы ModemManager, libmtp и UDisks не трогали плату:
В начале файла /lib/udev/rules.d/69-libmtp.rules добавить
После этого выполнить
Мне пришлось перезагрузить компьютер – в моем случае UDisks не отставал от платы без перезагрузки. После этого отключить USB-UART преобразователь, выставить перемычки BOOT0 и BOOT1 в Low и подключить плату к компьютеру через USB. Теперь выбираем в Arduino IDE тип загрузки "STM32duino bootloader" (Tools / Upload method / STM32duino bootloader).
Первую загрузку скетча нужно делать включив режим infinite в загрузчике. Для этого подключается резистор номиналом 10k между 3,3v и PC14. После сброса светодиод на плате начинает постоянно мигать, что означает что загрузчик будет ждать начала загрузки без ограничения по времени. После первой загрузки этот режим можно выключить и дальше пользоваться платой как обычно.
Последовательный порт платы опознается в Linux как /dev/ttyACM0 и его нужно выбрать в "Tools / Port" чтобы работал Serial Monitor.
Отладочная плата STM32F103C8T6 по параметрам значительно опережает схожие по размеру Arduino Nano или Leonardo, а по скорости близка к Arduino DUE. Такие характеристики вызывают большой интерес к такой плате, но у новичков могут возникнуть трудности с первым запуском и программированием данной платы. Теперь есть возможность заливать скетчи через Arduino >
Основные отличия STM32F103C8T6 от Arduino Nano v3.0
STM32F103C8T6 | Arduino Nano v3.0 |
|
---|---|---|
Частота ядра | 72 МГц | 16 МГц |
Память для кода (Flash) | 64 кбайта | 32 кбайта |
Память для переменных ОЗУ (SRAM) | 20 кбайт | 2 кбайта |
Рабочее напряжение | 3.3В | 5В |
Память EEPROM | отсутствует, но существуют программные эмуляторы |
1 кбайт |
Подготовка аппаратной части
Для работы нам понадобится:
Для активации режима программирования на плате STM следует переставить перемычки: первая на 1, вторая на 0.
Конвертер FTDI переключить на питание 3.3 Вольта (перемычкой/джампером)
Соединить проводами плату (П) и конвертер (К):