Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link

Допустим, копая просторы Интернета, нашли мы очень интересное электронное устройство на микроконтроллере STM32, причем и все схемы, и прошивка прилагается. Но вот незадача, никогда мы не занимались загрузкой прошивки в STM32, раньше работали только с AVR-ками. Не беда! В этой статье мы разберемся в этом вопросе, ведь загружать готовую прошивку в STM32 не сложнее, чем в старые добрые AVR-ки, а может даже и проще! 😉 Итак, поехали! Предыдущая статья здесь, все статьи цикла можно посмотреть тут: https://dimoon.ru/category/obuchalka/stm32f1.

Программатор

В предыдущей части мы познакомились с несколькими вариантами программатора ST-Link. В данном примере в качестве программатора я буду использовать отладочную плату stm32f4discovery, просто потому, что она у меня есть. Для того, чтобы использовать эту отладочную плату в качестве программатора, нужно сделать 2 вещи:

  1. Снять перемычки, соединяющие линии программирования встроенного ST-Link-а с микроконтроллером, распаянным на плате
  2. С помощью гребенки, на которую выведена шина SWD, подключить сигнальные линии программатора к внешнему микроконтроллеру

На картинке, приведенной далее, показана распиновка разъема SWD:

На китайских отладочных платах с микроконтроллером stm32f103c8 имеется соответствующий разъем, через который можно загрузить прошивку в МК. Эти платы выглядят примерно так:

Пины на разъеме программирования подписаны как GND, CLK, DIO, 3V3. Соединение с программатором выполняется вот таким образом:

  • GND — GND
  • CLK — SWCLK
  • DIO — SWDIO

У меня макеты выглядят вот так:

В данном случае отладочная плата с stm32f103c8 припаяна к «решету», на котором соединена с остальными компонентами на обратной стороне проводом в изоляции. Таким же проводом выполнено подключение программатора к отладочной плате:

 

Софт

Перейдем теперь к программной составляющей. Нам понадобится драйвер для программатора и управляющая софтина, через через которую мы будем загружать прошивку в микроконтроллер. Для этого нам нужно на официальном сайте www.st.com скачать пакет STM32 ST-LINK utility. А что нужно сделать перед скачиванием чего-нибудь с www.st.com? Правильно! Надо у них зарегистрироваться!!!

[Шуточка про «нельзя просто так взять и скачать что-то с st.com»]

Кину ссылку на архив в конце статьи.

Итак, мы добыли архив с пакетом STM32 ST-LINK Utility. После установки подключаем программатор к ПК по USB и подключаем питание к отладочной плате. Если драйвера на программатор не установились автоматически, то идем в диспетчер устройств, там находим наш STM32 STLink, выбираем Обновить драйвер->Выполнить поиск на этом компьютере. После этого все должно заработать. Затем, из меню «Пуск» запускаем программу «STM32 ST-LINK Utility«:

Выглядит интерфейс ST-LINK Utility вот так:

Далее, нам необходимо произвести небольшие настройки. В меню выбираем Target->Settings…

Открывается вот такое окошко:

Выставляем настройки, как на скриншоте и нажимаем OK. После этого программатор автоматически подключится к прошиваемому микроконтроллеру. Пробежимся по кнопкам управления:

«Подключиться к микроконтроллеру» — выполняет подключение программатора к МК. При этом работа прошивки останавливается. После этого можно выполнять дальнейшие манипуляции с flash-памятью МК.

«Отключиться от микроконтроллера» — после того, как мы все сделали, нажимаем на эту кнопку и SL-Link отключается от МК, при этом запускается загруженная во flash-память прошивка.

«Очистить чип» — при нажатии на эту кнопку стирается вся flash-память микроконтроллера. Это необходимо делать перед загрузкой другой прошивки в МК.

Для того, чтобы прошить наш .hex или .bin файл в МК нужно сделать следующее. В меню выбираем Target->Programm…

После этого у нас открывается окошко выбора файла прошивки. Выбираем нужный нам файл, после чего появляется вот такое окно:

Здесь нам нужно нажать Start чтобы запустить процесс. После того, как прошивка была загружена в МК, нажимаем на кнопку «Отключиться от микроконтроллера«.

Те, кто раньше работал с микроконтроллерами AVR знают о такой вещи как фьюз-биты. Если в AVR-ках неправильно их выставить, то прошивка может работать некорректно. Для вас хорошая новость: в STM32 фьюз-битов нет! Достаточно просто залить в МК файл с управляющей программой и все будет работать.

Ну что ж, на этом, пожалуй, закончу, всем кто дочитал, спасибо за внимание 😉 🙂 Продолжение тут

Ссылки

Драйвер и софт для ST-Link: STM32 ST-LINK utility

Метки: , . Закладка Постоянная ссылка.

11 комментариев: Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link

  1. Денис пишет:

    Расскажите пожалуйста , как редактировать уже установленную прошивку на м.контроллер , если можно со скриншотами .
    Спасибо

    • DiMoon пишет:

      Если в МК не установлен бит защиты от чтения прошивки, то можно ее слить через программатор. А потом уже можно дизассемблировать и разбираться что да как.

  2. Дмитрий пишет:

    Спасибо за отличные статьи) Очень мало информации по работе с регистрами… Планируете ли вы продолжить писать про работу с регистрами?

    • DiMoon пишет:

      Рад, что материал оказался полезным))) Да, планирую, в этом году хочу написать небольшую «предновогоднюю» статейку про работу с внешними прерываниями EXTI, а то новых статей давно не было уже)). В перспективе хочу взяться за МК STM32F0xx, так как там набор регистров отличается от F1 серии

  3. Саня пишет:

    частота тактирования свд 4 мгц по умолчанию.
    это значение как то должно соответствовать частоте кварца на макетной плате — быть кратным ему?

    например если тактируется камень 20 мгц кварцем, то надо ставить 5 мгц тактирование прошивочного интерфейса?

  4. Юрий пишет:

    Для вас хорошая новость: в STM32 фьюз-битов нет!

    Как это нет ??? Они называются Option Bytes !!!

  5. Юрий пишет:

    Вряд ли частота SWD и кварца как-то связаны

  6. Николай пишет:

    Спасибо большое за хорошую статью. Все по делу и внятно.

  7. Михаил пишет:

    Правильно ли прошивать Stm32 407vg просто через отладочную плату? Просто , если я все правильно понял, я залил прошивку, отключил, потом подключил программа увидела что прошивка залита , но почему-то она не оаботает( светодиоды не горят) Прошивка написана правильно ! Спасибо !

Добавить комментарий для Дмитрий Отменить ответ