1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор

Содержание

Микроконтроллеры STM32 приобретают все большую популярность благодаря своей мощности, достаточно разнородной периферии, и своей гибкости. Мы начнем изучать STM32F103C8T6, используя бюджетную тестовую плату, стоимость которой не превышает 2 $ (у китайцев). Еще нам понадобится ST-Link программатор, стоимость которого около 2.5 $ (у китайцев). Такие суммы расходов доступны и студентам и школьникам, поэтому именно с такого бюджетного варианта я и предлагаю начать.

STM32F103C8_01 STLine_01

Этот микроконтроллер не является самым мощным среди 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

Port_01 Port_02

Подключаем RX и TX выходы к соответствующим выводам USART1 микроконтроллера. RX переходника подключаем к TX микроконтроллера (A9). TX переходника подключаем к RX микроконтроллера (A10). Поскольку USART-USB имеет выходы питания 3.3В подадим питания на плату от него.

STM32F103C8_UART_PROG_02

Чтобы перевести микроконтроллер в режим программирования, надо установить выводы BOOT0 и BOOT1 в нужное состояние и перезагрузить его кнопкой Reset или выключить и включить питание микроконтроллера. Для этого у нас есть перемычки. Различные комбинации загоняют микроконтроллер в различные режимы. Нас интересует только один режим. Для этого у микроконтроллера на выводе BOOT0 должно быть логическая единица, а на выводе BOOT1 — логический ноль. На плате это следующее положение перемычек:

STM32F103C8_UART_PROG_01

После нажатия кнопки Reset или отключения и подключения питания, микроконтроллер должен перейти в режим программирования.

Программное обеспечение для прошивки

После включения схемы с правильно выставленными перемычками контроллер готов к работе с Flash Loader Demonstrator.

Запускаем Flash Loader Demonstrator и выбираем порт с которым будем работать, и устанавливаем параметры порта.

FlashLoaderDemonstrator_01

После выбора параметров порта нажимаем Next после чего должны увидеть «светофор» и информацию по микроконтроллеру. Если этого не происходит, тогда проверяем корректность установленных параметров связи и проверяем действительно ли микроконтроллер введен в режим программирования.

FlashLoaderDemonstrator_02

Нажимаем Next,

FlashLoaderDemonstrator_03

На этой странице выбираем файл для загрузки в микроконтроллер. Файл может быть в формате bin или hex.

FlashLoaderDemonstrator_04

Нажимаем Next и ждем.

FlashLoaderDemonstrator_05 FlashLoaderDemonstrator_06

Чтобы вывести контроллер из режима программирования, возвращаем перемычки в исходное состояние и нажимаем кнопку Reset. Программа в микроконтроллере должен заработать.

Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)

Устанавливаем stm32flash

Если используем USB-UART переходник, имя порта буде примерно такое /dev/ttyUSB0

Получить информацию о чипе

Читаем с чипа в файл dump.bin

Пишем в чип

При использовании программатора ST-Link выводы BOOT0 и BOOT1 не используются и должны стоять в стандартном положении для нормальной работы контроллера.

STLine_02

Качаем с сайта 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

STM32ST-LINKUtility_01

Выполняем пункт меню Target — Connect

STM32ST-LINKUtility_02

Выполняем пункт меню Target — Erase Chip

STM32ST-LINKUtility_03

Выполняем пункт меню File — Open file. Выбираем файл для загрузки в микроконтроллер.

STM32ST-LINKUtility_04

Выполняем пункт меню Target — Programm Verify.

STM32ST-LINKUtility_05

После завершения прошивки и проверки, загруженная программа автоматически запустится.

STM32ST-LINKUtility_06

Устанавливаем софт для работы с ST-Link

Пришлось устанавливать autoconf и libusb-1.0:


Источник: blog.avislab.com