Отладочная плата 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. Подготовка железа
Для работы нам понадобится:
- Сама плата STM32F103C8T6
- Конвертер FTDI USB-TTL
- Соединительные провода Dupont мама-мама
Для активации режима программирования на плате STM следует преставить перемычки: первая на 1, вторая на 0.
Конвертер FTDI переключить на питание 3.3 Вольта (перемычкой/джампером)
Соединить проводами плату (П) и конвертер (К):
П(A9) -> K(RX)
П(А10) -> К(TX)
П(GND) -> K(GND)
П(3.3) -> K(VCC)
3. Подготовка ПО
- Скачать дополнение для Arduino IDE, которое будет поддерживать платы STM32
- Распаковать архив в папаку HARDWARE, которую можно найти в папке вашей Arduino IDE
- Запустить Arduino IDE (или перезапустить если была открыта) и проверить появился ли раздел STM32 Boards в списке Плат
4. Закачка скетча (blink) в плату
В папке которую мы распаковали в п.3.б заходим по следующему пути: Arduino_STM32\examples\Digital\Blink\ и через Arduino IDE открываем файл blink.ino либо можете взять текст отсюда:
void setup() { // initialize digital pin PB1 as an output. pinMode(PC13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Далее в 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 "{runtime.tools.arm-none-eabi-gcc.path}\bin\arm-no ne-eabi-g++" (in directory "."): CreateProcess error=2, Не удается найти указанный файл
Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
---
И еще, обратите внимание на строчки в скетче
pinMode(PC13, OUTPUT);
digitalWrite(PC13, HIGH);
digitalWrite(PC13, LOW);
в оригинальном примере идущим с IDE
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
- так тоже откомпилится без ошибок, но работать не будет должно стоять PC13
---
И еще, перед каждой заливкой скетча плату надо ресетить, для запуска UART загрузчика.
Файл Arduino/hardware/Arduino_STM32/STM32F*/platform.tx t модифицировать, как пишут здесь: http://www.stm32duino.com/viewtopic.php?f=21&t=1200&p=15192&hilit=arm+none#p15192
Ошибка с arm-none-eabi-gcc.path ушла. Но посыпало много других ошибок. В основном, о несоответствии типов данных. Какая-то нестыковка с версиями библиотек. Вобщем, сыровато это пока..
Было так:
runtime.tools.arm-none-eabi-gcc.path={runtime.ide.path}/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1
Стало так:
compiler.path=d:/EmBitz/share/em_armgcc/bin/
Естественно предварительно установил EmBitz
Подгрузил только библиотеку "Arduino SAM Board (32-bitd ARM Cortex-M3)".
Не забывайте про перемычку на плате перед прошивкой!
Вот так:
C:\Users\Saddamko\AppData\Local\Temp\arduino_build_147792/sketch_jan14b.ino.bin
stm32flash 0.4
http://stm32flash.googlecode.com/
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: 4x1024)
- 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.
Arduino: 1.6.5 (Windows XP), Плата"Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), Serial, 72Mhz (Normal)"
arm-none-eabi-g++: error: C:\Temp\build1270749402357376224.tmp/core.a: No such file or directory
Файл или папку core.a: не может найти
Arduino IDE
Версия ардуино ide 1.8.5 - платы в спике не появились после перезапуска.