1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
Микроконтроллеры STM32 приобретают все большую популярность благодаря своей мощности, достаточно разнородной периферии, и своей гибкости. Мы начнем изучать STM32F103C8T6, используя бюджетную тестовую плату, стоимость которой не превышает 2 $ (у китайцев). Еще нам понадобится ST-Link программатор, стоимость которого около 2.5 $ (у китайцев). Такие суммы расходов доступны и студентам и школьникам, поэтому именно с такого бюджетного варианта я и предлагаю начать.
Этот микроконтроллер не является самым мощным среди STM32, но и не самый слабый. Существуют различные платы с STM32, в томе числе Discovery которые по цене стоят около 20 $. На таких платах почти все то же, что и на нашей плате, плюс программатор. В нашем случае мы будем использовать программатор отдельно.
Микроконтроллер STM32F103C8. Характеристики
- Ядро ARM 32-bit Cortex-M3
- Максимальная частота 72МГц
- 64Кб Флеш память для программ
- 20Кб SRAM памяти
- Питание 2.0 ... 3.3В
- 2 x 12-біт АЦП (0 ... 3.6В)
- DMA контролер
- 37 входов / выходов толерантных к 5В
- 4 16-розрядних таймера
- 2 watchdog таймера
- I2C - 2 шины
- USART - 3 шины
- SPI - 2 шины
- CAN
- USB 2.0 full-speed interface
- RTC - встроенные часы
На плате STM32F103C8 доступны

- Выводи портов A0-A12, B0-B1, B3-B15, C13-C15
- Micro-USB через который можно питать плату. На плате присутствует стабилизатор напряжения на 3.3В. Питание 3.3В или 5В можно подавать на соответствующие выводы на плате.
- Кнопка Reset
- Две перемычки BOOT0 и BOOT1. Будем использовать во время прошивки через UART.
- Два кварца 8Мгц и 32768 Гц. У микроконтроллера есть множитель частоты, поэтому на кварце 8 МГц мы сможем достичь максимальной частоты контроллера 72Мгц.
- Два светодиода. PWR - сигнализирует о подачи питания. PC13 - подключен к выходу C13.
- Коннектор для программатора ST-Link.
Скачать тестовый файл для прошивки можно здесь. Программа мигает светодиодом на плате.
Прошивка STM32 с помощью USB-Uart переходника под Windows
В системной памяти STM32 есть Bootloader. Bootloader записан на этапе производстве и любой микроконтроллер STM32 можно запрограммировать через интерфейс USART с помощью USART-USB переходника. Такие переходники чаще всего изготавливают на базе популярной микросхем FT232RL. Прежде всего подключим переходник к компьютеру и установим драйвера (если требуется). Скачать драйвера можно с сайта производителя FT232RL - ftdichip.com. Надо качать драйвера VCP (virtual com port). После установки драйверов в компьютере должен появиться виртуальный последовательный порт.Подключаем RX и TX выходы к соответствующим выводам USART1 микроконтроллера. RX переходника подключаем к TX микроконтроллера (A9). TX переходника подключаем к RX микроконтроллера (A10). Поскольку USART-USB имеет выходы питания 3.3В подадим питания на плату от него.
Чтобы перевести микроконтроллер в режим программирования, надо установить выводы BOOT0 и BOOT1 в нужное состояние и перезагрузить его кнопкой Reset или выключить и включить питание микроконтроллера. Для этого у нас есть перемычки. Различные комбинации загоняют микроконтроллер в различные режимы. Нас интересует только один режим. Для этого у микроконтроллера на выводе BOOT0 должно быть логическая единица, а на выводе BOOT1 - логический ноль. На плате это следующее положение перемычек:
После нажатия кнопки Reset или отключения и подключения питания, микроконтроллер должен перейти в режим программирования.
Программное обеспечение для прошивки
Качаем с сайта st.com программу Flash Loader Demonstrator для STM32. Flash Loader Demonstrator - программа для прошивки STM32 через последовательный интерфейс.После включения схемы с правильно выставленными перемычками контроллер готов к работе с Flash Loader Demonstrator.
Запускаем Flash Loader Demonstrator и выбираем порт с которым будем работать, и устанавливаем параметры порта.
После выбора параметров порта нажимаем Next после чего должны увидеть «светофор» и информацию по микроконтроллеру. Если этого не происходит, тогда проверяем корректность установленных параметров связи и проверяем действительно ли микроконтроллер введен в режим программирования.
Нажимаем Next,
На этой странице выбираем файл для загрузки в микроконтроллер. Файл может быть в формате bin или hex.
Нажимаем Next и ждем.
Чтобы вывести контроллер из режима программирования, возвращаем перемычки в исходное состояние и нажимаем кнопку Reset. Программа в микроконтроллере должен заработать.
Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)
Устанавливаем stm32flash
Скачать DEB файл можно тут: http://launchpadlibrarian.net/188294676/stm32flash_0.4-2_i386.deb Детально про stm32flash читайте тут: https://launchpad.net/ubuntu/wily/i386/stm32flash/0.4-2Если используем USB-UART переходник, имя порта буде примерно такое /dev/ttyUSB0
Получить информацию о чипе
sudo stm32flash /dev/ttyUSB0
Результат:
stm32flash 0.4 http://stm32flash.googlecode.com/ Interface serial_posix: 57600 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
Читаем с чипа в файл dump.bin
sudo stm32flash -r dump.bin /dev/ttyUSB0
Пишем в чип
sudo stm32flash -w dump.bin -v -g 0x0 /dev/ttyUSB0
Результат:
stm32flash 0.4 http://stm32flash.googlecode.com/ Using Parser : Raw BINARY Interface serial_posix: 57600 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 and verified address 0x08012900 (100.00%) Done. Starting execution at address 0x08000000... done.
Прошивка STM32 с помощью ST-Link программатора под Windows
При использовании программатора ST-Link выводы BOOT0 и BOOT1 не используются и должны стоять в стандартном положении для нормальной работы контроллера.
Качаем с сайта st.com Утилиту STM32 ST-LINK Utility. Устанавливаем ее. С ней должен быть установлен и драйвер для ST-Link. Если нет, качаем и устанавливаем драйвера ST-Link: http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link009.html Подключаем ST-Link в USB- разъем компьютера, а соответствующие выводы программатора подключаем к выводам тестовой платы согласно маркировки.
Запускаем программу STM32 ST-LINK Utility
Выполняем пункт меню Target -> Connect
Выполняем пункт меню Target -> Erase Chip
Выполняем пункт меню File -> Open file... Выбираем файл для загрузки в микроконтроллер.
Выполняем пункт меню Target -> Programm & Verify...
После завершения прошивки и проверки, загруженная программа автоматически запустится.
Прошивка STM32 с помощью ST-Link программатора под Linux (Ubuntu)
Устанавливаем софт для работы с ST-Link
mkdir ~/stlink
cd ~/stlink
sudo apt-get install git libusb-dev
Пришлось устанавливать autoconf и libusb-1.0:
sudo apt-get install autoconf
sudo apt-get install libusb-1.0
git clone git://github.com/texane/stlink.git
cd stlink
./autogen.sh
./configure
make
sudo mkdir /opt/texane
sudo cp gdbserver/st-util /opt/texane
sudo cp ./etc/udev/rules.d/49-stlinkv1.rules /etc/udev/rules.d
sudo cp ./etc/udev/rules.d/49-stlinkv2.rules /etc/udev/rules.d
sudo udevadm control --reload-rules
Проверяем видно ли программатор и чип
sudo ./st-info --probe
Результат:
Found 1 stlink programmers serial: openocd: "" flash: 65536 (pagesize: 1024) sram: 20480 chipid: 0x0410 descr: F1 Medium-density device
Читаем с чипа в файл dump.bin
sudo ./st-flash read dump.bin 0x8000000
Программируем STM32
sudo ./st-flash --reset write dump.bin 0x8000000
Памятка
Для того чтобы не копаться в документации каждый раз и не искать информацию по выводам микроконтроллера на плате, я сделал такую памятку, которая нам понадобится в дальнейшем.Документация
Всю необходимую документацию к микроконтроллера STM32F103C8T6 можно скачать с сайта производителя: http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103c8.htmlЧто можно почитать
The Iinsider`s Guide To The STM32 (Книжка на русском языке)Маркировка STM32
Device family | Product type | Device subfamily | Pin count | Flash memory size | Package | Temperature range |
---|---|---|---|---|---|---|
STM32 = ARM-based 32-bit microcontroller | F = General-purpose L = Ultra-low-power TS = TouchScreen W = wireless system-on-chip | 60 = multitouch resistive 103 = performance line | F = 20 pins G = 28 pins K = 32 pins T = 36 pins H = 40 pins C = 48/49 pins R = 64 pins O = 90 pins V = 100 pins Z = 144 pins I = 176 pins B = 208 pins N = 216 pins | 4 = 16 Kbytes of Flash memory 6 = 32 Kbytes of Flash memory 8 = 64 Kbytes of Flash memory B = 128 Kbytes of Flash memory Z = 192 Kbytes of Flash memory C = 256 Kbytes of Flash memory D = 384 Kbytes of Flash memory E = 512 Kbytes of Flash memory F = 768 Kbytes of Flash memory G = 1024 Kbytes of Flash memory I = 2048 Kbytes of Flash memory | H = UFBGA N = TFBGA P = TSSOP T = LQFP U = V/UFQFPN Y = WLCSP | 6 = Industrial temperature range, –40…+85 °C. 7 = Industrial temperature range, -40…+ 105 °C. |
STM32 | F | 103 | C | 8 | T | 6 |
Как снять защиту от записи / чтения?
Если вы получили плату с STM32F103, а программатор ее не видит, это означает, что китайцы защитили Флеш память микроконтроллера. Вопрос "зачем?" оставим без внимания. Чтобы снять блокировку, подключим UART переходник, будем программировать через него. Выставляем перемычки для программирования и поехали:Я это буду делать из под Ubuntu с помощью утилиты stm32flash.
1. Проверяем видно ли микроконтроллер:
sudo stm32flash /dev/ttyUSB0
Должны получить что-то такое:
stm32flash 0.4 http://stm32flash.googlecode.com/ Interface serial_posix: 57600 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
2. Снимаем защиту от чтения а затем от записи:
sudo stm32flash -k /dev/ttyUSB0
stm32flash 0.4 http://stm32flash.googlecode.com/ Interface serial_posix: 57600 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 Read-UnProtecting flash Done.
sudo stm32flash -u /dev/ttyUSB0
stm32flash 0.4 http://stm32flash.googlecode.com/ Interface serial_posix: 57600 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-unprotecting flash Done.
Теперь можно нормально работать с микроконтроллером.
Желаю успехов!
Смотри также:
- 1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
- 2. STM32. Программирование. IDE для STM32
- 3. STM32. Программирование STM32F103. GPIO
- 4. STM32. Программирование STM32F103. Тактирование
- 5. STM32. Программирование STM32F103. USART
- 6. STM32. Программирование STM32F103. NVIC
- 7. STM32. Программирование STM32F103. ADC
- 8. STM32. Программирование STM32F103. DMA
- 9. STM32. Программирование STM32F103. TIMER
- 10. STM32. Программирование STM32F103. TIMER. Захват сигнала
- 11. STM32. Программирование STM32F103. TIMER. Encoder
- 12. STM32. Программирование STM32F103. TIMER. PWM
- 13. STM32. Программирование STM32F103. EXTI
- 14. STM32. Программирование STM32F103. RTC
- 15. STM32. Программирование STM32F103. BKP
- 16. STM32. Программирование STM32F103. Flash
- 17. STM32. Программирование STM32F103. Watchdog
- 18. STM32. Программирование STM32F103. Remap
- 19. STM32. Программирование STM32F103. I2C Master
- 20. STM32. Программирование STM32F103. I2C Slave
- 21. STM32. Программирование STM32F103. USB
- 22. STM32. Программирование STM32F103. PWR
- 23. STM32. Программирование STM32F103. Option bytes
- 24. STM32. Программирование STM32F103. Bootloader
- STM32. Скачать примеры
- System Workbench for STM32 Установка на Ubuntu
- Keil uVision5 – IDE для STM32
- IAR Workbench – IDE для STM32
- Управление бесколлекторным двигателем постоянного тока (BLDC) с помощью STM32
- Управление PMSM с помощью STM32
Не очевидно подключение, я поначалу пытался использовать SWIM и RST. Ну и на всякий случай уточнить про 3,3 а не 5V:
3.3V -> VCC
SWDIO -> IO
SWCLK -> CLCK
GND -> GND
При установке на убунте 16 пришлось также поставить cmake (ну и build-essential, если не устанавливалось ранеее).
Проект Texane немного реорганизовался и теперь там нет autogen.sh и configure, компилируется через "make release".
После компиляции можно установить всё в систему -
cd ./build/Release/
sudo make install
Тогда не надо будет копировать 49-stlinkv2.rules и тулзы будут доступны из любого директория и будут работать без sudo.
st-flash read не работает без указания size(0x10000):
st-flash read ./dump.bin 0x8000000 0x10000
Додати коментар
Недавні записи
- 🇺🇦 FOC Board STM32F103RB 🧩
- STM32 Motor control SDK - керування оборотами мотора за допомогою потенціометра 📑
- Flask✙Gunicorn✙Nginx➭😎
- STM32 Motor control SDK - програмне керування обертам мотора
- STM32 Motor control SDK - як створити перший проект
- Vue SVG. Приклад побудови живого параметричного креслення
- Вимірювання моменту мотора
- Vue SVG - компонент. Приклад 📑
- Flask + Vue 🏁 Финальный пример 🏁
- Flask, CORS, JSON-файл. Пример#6
Tags
bldc brushless stm32 motor web html css flask atmega foc git java-script pmsm raspberry-pi python websocket mongodb esp8266 nodemcu st-link tim timer docker ngnix programmator ssd1331 ssd1306 wifi uart meteo bme280 bmp280 i2c gps mpu-6050 mpu-9250 sensors 3d-printer options usb barometer remap watchdog flash eeprom rtc bkp encoder pwm servo capture examples dma adc nvic usart gpio books battery dc-dc sms max1674 avr lcd dht11 piezo rs-232 rfid solar exti bluetooth eb-500 displays ethernet led smd soldering mpx4115a hih-4000
Архіви