Stm32 flash loader demonstrator. Прошивка микроконтроллеров STM32: полное руководство

Как прошить микроконтроллер STM32. Какие интерфейсы поддерживает STM32 для прошивки. Какое оборудование нужно для прошивки STM32. Как использовать ST-Link и USART для прошивки STM32. Какое программное обеспечение подходит для прошивки STM32.

Содержание

Интерфейсы для прошивки микроконтроллеров STM32

Микроконтроллеры семейства STM32 поддерживают несколько интерфейсов для загрузки программного кода:

  • USART (Universal Synchronous and Asynchronous Receiver-Transmitter)
  • JTAG (Joint Test Action Group)
  • SWD (Serial Wire Debug)

Рассмотрим подробнее каждый из этих интерфейсов и их особенности.

USART для прошивки STM32

USART — это универсальный синхронно-асинхронный приемопередатчик. Для прошивки STM32 используется интерфейс USART1 со следующими выводами:

  • TX (передача данных) — вывод PA9
  • RX (прием данных) — вывод PA10
  • GND (земля)

Важно помнить, что STM32 работает на напряжении 3.3В, поэтому нельзя подключать его напрямую к COM-порту компьютера, работающему на 5В. Необходимо использовать преобразователь уровней.


JTAG для программирования STM32

JTAG — стандартный отладочный интерфейс, который также позволяет загружать прошивку. Для STM32 используются следующие выводы:

  • JTMS — PA13
  • JTCK — PA14
  • JTDI — PA15
  • JTDO — PB3
  • JNTRST — PB4 (опционально)

JTAG обеспечивает более широкие возможности по отладке, чем USART.

SWD для прошивки STM32

SWD (Serial Wire Debug) — это упрощенный двухпроводной интерфейс, основанный на JTAG. Для работы требуются всего 2 сигнальные линии:

  • SWDIO — PA13
  • SWCLK — PA14

SWD обеспечивает те же возможности, что и JTAG, но при меньшем количестве выводов.

Оборудование для прошивки STM32

Для загрузки программ в микроконтроллеры STM32 можно использовать различное оборудование:

ST-Link программатор

ST-Link — это фирменный программатор-отладчик от STMicroelectronics. Существует несколько версий:

  • ST-Link V1 — устаревшая версия
  • ST-Link V2 — поддерживает STM8 и STM32
  • ST-Link V2.1 — встраиваемая версия, поддерживает только STM32
  • ST-Link V3 — новейшая версия, только для STM32

Наиболее распространены китайские клоны ST-Link V2, которые отлично работают и стоят недорого.


J-Link программатор

J-Link — профессиональный программатор-отладчик от SEGGER. Поддерживает множество микроконтроллеров, включая STM32. Имеет более широкие возможности, чем ST-Link, но стоит дороже.

Black Magic Probe

Black Magic Probe — открытый программатор-отладчик. Поддерживает SWD и JTAG, имеет встроенный GDB-сервер. Является хорошей альтернативой фирменным решениям.

USB-UART преобразователь

Для прошивки через USART можно использовать обычный USB-UART преобразователь на основе чипов CP2102, FT232 и других. Важно выбрать модель с поддержкой 3.3В логических уровней.

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

Для загрузки программ в STM32 можно использовать различное ПО:

STM32 ST-LINK Utility

Официальная утилита от STMicroelectronics для работы с ST-Link. Позволяет прошивать микроконтроллеры, считывать и стирать память. Имеет графический интерфейс.

STM32CubeProgrammer

Новая универсальная утилита от STMicroelectronics, заменяющая ST-LINK Utility. Поддерживает различные интерфейсы программирования, имеет расширенные возможности.


OpenOCD

Открытый отладчик для микроконтроллеров. Поддерживает многие программаторы, включая ST-Link. Имеет только консольный интерфейс, но очень гибкий в настройке.

stm32flash

Консольная утилита для прошивки STM32 через USART. Простая в использовании, работает на разных платформах.

Процесс прошивки STM32

Рассмотрим основные этапы загрузки программы в микроконтроллер STM32:

  1. Подключить программатор к компьютеру и микроконтроллеру
  2. Запустить программу для прошивки (например, ST-LINK Utility)
  3. Выбрать тип микроконтроллера
  4. Загрузить hex или bin файл с прошивкой
  5. Запустить процесс программирования
  6. Дождаться завершения прошивки
  7. Перезагрузить микроконтроллер для запуска новой программы

При использовании USART дополнительно нужно перевести микроконтроллер в режим загрузчика, соединив вывод BOOT0 с питанием.

Особенности и проблемы при прошивке STM32

Защита от чтения и записи

Микроконтроллеры STM32 имеют встроенную защиту памяти от чтения и записи. Если она активирована, то прошить микроконтроллер стандартными методами не получится. Для снятия защиты нужно использовать специальные команды или полностью очистить память.


Отсутствие сигнала Reset

Некоторые программаторы (например, китайские клоны ST-Link) не имеют вывода Reset. Это может вызвать проблемы, если пользовательская программа переназначила выводы SWD. В таком случае приходится вручную подавать сигнал сброса.

Неправильные настройки тактирования

Если в загруженной программе неверно настроена система тактирования, микроконтроллер может перестать отвечать на запросы программатора. В этом случае поможет только полная очистка памяти.

Заключение

Прошивка микроконтроллеров STM32 — достаточно простой процесс при наличии нужного оборудования и ПО. Самый универсальный вариант — использование ST-Link v2 и утилиты STM32CubeProgrammer. Это позволит программировать практически любые микроконтроллеры STM32 через SWD интерфейс.

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


Загрузчик STM32 — EasySTM32

В микроконтроллерах STM32 существуют три интерфейса для заливки прошивки: 

  • JTAG
  • SWD
  • UART (через загрузчик)

Как вы уже догадались, в этой статье пойдет речь о последнем способе. Я считаю его не самым лучшим вариантом для постоянного использования, однако в некоторых случаях он очень даже хорош. Вот допустим устройство уже готово и работает у пользователя, и вдруг ВНЕЗАПНО возникает потребность в перепрошивке. Конечно, можно разобрать девайс и подпаяться к отладочному интерфейсу, но это относительно сложно + нужен отладчик. А что если устройство уже соединено с компом через UART ? В этом случае гораздо проще использовать этот интерфейс для загрузки прошивки. Вот тут-то загрузчик будет очень кстати. Пользователю достаточно нажать одну кнопку и девайс входит в режим прошивки. Пару нажатий мышки и прошивка обновлена. Теперь попробуем разобраться более детально как все это работает. Для начала нам нужно подключить наш контроллер к компьютеру через интерфейс USART1.

Для управления загрузкой контроллера существуют два вывода BOOT1 и BOOT0. В зависимости комбинаций логических уровней на них, контроллер при включении питания начнет выполнять код из разных областей памяти. Это видно из таблицы ниже: 

BOOT1BOOT0Что запускается
Х0Программа прошитая во FLASH
01Загрузчик
11Программа из SRAM

Как вы помните из недавней статьи, загрузчик сидит в области памяти под названием Sytem Memory. Каким либо образом изменить его нельзя. Это делает контроллер не убиваемым в плане софта, даже если перепрошивку неожиданно прервут  — девайсу ничего не грозит. Всегда можно будет начать прошивку заново. С другими пунктами таблицы все просто: первая комбинация означает, что контроллер будет запускать прошивку которую в него прошили, а последняя комбинация — означает, что контроллер будет выполнять код из ОЗУ который еще как-то туда надо поместить. Пока не совсем понимаю для чего это нужно, разве что программа выполняется быстрей (если верить интернетам). Вернемся к загрузчику. Чтоб ввести наш контроллер в режим прошивки, удерживаем кнопку BOOT и жмем RESET. После этого кнопку можно отпустить. Для прошивки используется специальный софт который называется Flash Loader Demonstrator. Вы можете скачать его на сайте ST или у меня. Процедура прошивки проста до безобразия: Достаточно лишь следовать указаниям мастера. На первом шаге нас попросят выбрать номер ком порта к которому подключен контроллер и указать настройки соединения. Что примечательно у загрузчика есть автодетект скорости. Это значит что можно свободно выбрать любую скорость из списка и оно заработает. Лишь бы ваш адаптер RS232 — UART (или USB-UART) её поддерживал. Мой преобразователь на CP2102 о котором я вкратце уже рассказывал, отлично работает на всех скоростях. Однако, нужно иметь в виду, что загрузчик настраивает контроллер на тактирование от внутреннего генератора. А его частота сильно плавает в зависимости от напряжения питания и температуры. Следовательно если у вас проблемы со стабильностью этих двух параметров, то лучше выбирать маленькую скорость. 

Если соединение с контроллером установлено, то программа нарисует нам окно в котором покажет сколько памяти у программирования контроллера и включена ли защита памяти от чтения. Если контроллер защищен от считывания прошивки, то вы можете снять защиту, но при этом содержимое флеш памяти будет уничтожено. Это делается кнопкой «Remove protection» которая у меня не доступна т.к. защита памяти не включена.

Следующий шаг мастера показывает какие страницы flash памяти защищены от записи/чтения. Нужно не забыть выбрать объем памяти которым обладает программируемый контроллер. Кажется там есть автодетект который сам сделает правильный выбор, но я не уверен. У моего контроллера есть 128 кБайт памяти, что я и выбрал:

Самый интересный шаг мастера. На нем мы можем выбрать то, что хотим сделать с контроллером. Можем очистить память контроллера. Как всю, так и некоторые страницы. Само собой можно прошить контроллер. Программировать и очищать память можно только если это не было запрещено. Есть возможность проверить содержимое памяти после прошивки. Или можно сразу начать выполнение прошитой программы. Чтение памяти возможно опять таки если это не запрещено. Снять или установить защиту от записи/чтения можно в этом же окне. Еще можно редактировать «Option bytes». Что это такое я пока особо не разбирался, поэтому ничего вразумительного сказать не могу. 

После нажатия кнопки Next выполняется выбранное действие. Результат выполнения отображается на последнем шаге мастера. Если всё хорошо, то вы увидите сообщение похожее на это:

Когда работа с загрузчиком завершена нужно перезагрузить контроллер нажатием на RESET. Если кто-то хочет подробнее узнать о протоколе который используется загрузчиком, то можно почитать аппноут AN3315. Возможно, окажется полезным и аппноут AN2606. Если остались вопросы касаемо загрузчика — спрашивайте, попробую ответить.

Программирование ARM-контроллеров STM32 на ядре Cortex-M3. Часть 5. Как залить прошивку в контроллер

Ну, вот мы и дошли до одного из самых интересных этапов, — как же залить в контроллер готовую прошивку и оживить наконец нашу железяку (а также как считать прошивку обратно или защитить её от чтения / перезаписи).

Вообще-то прошивать контроллеры STM32 можно по-разному, но мы рассмотрим самый простой вариант прошивки — через последовательный интерфейс с помощью фирменной утилиты Flash Loader Demonstrator. Эта утилита совершенно бесплатна и её можно скачать как с официального, так и с нашего сайта.

Как мы ранее уже говорили, — в системной области памяти контроллера зашит bootloader. Именно он и позволяет записать прошивку во flash-память через последовательный интерфейс.

Детально bootloader описан в документе AN2606 (CD00167594.pdf), а используемый им протокол — в документе AN3155 (CD00264342.pdf). Это для тех, кто хочет исчерпывающей информации, а мы рассмотрим процесс прошивки через bootloader вкратце.

Для начала вам нужно скачать и установить себе на компьютер утилиту Flash Loader Demonstrator.

Далее, нужно соединить контроллер с компьютером через UART1. Мой подопытный STM32F103C8T6 имеет 48-выводный корпус, в котором UART1 выведен на ноги 30 (Tx) и 31 (Rx).

Обратите внимание, что в контроллере используется именно UART (причём с уровнями 0/+3,3В), а не RS-232, то есть соединять напрямую выводы контроллера и com-порт компьютера нельзя. Я нашёл выход из этой ситуации в использовании USB-to-COM преобразователя RH-0002 на микросхеме cp2102. Помимо того, что этот преобразователь может использоваться как USB-to-UART с уровнями 0/+3,3 В (его можно разделить на две отдельных части: USB-to-UART и UART-to-RS232), он также позволяет запитать контроллер напряжением 3,3 Вольта (то есть отпадает необходимость во внешнем источнике питания). Вот здесь описано, как собрать преобразователь самостоятельно

Итак, ногу Tx контроллера нужно соединить с ногой Rx преобразователя, а ногу Rx контроллера — с ногой Tx преобразователя. Кроме этого, контроллер нужно запитать и обеспечить нужные уровни на ногах BOOT0 (pin 44), BOOT1 (pin 20). Для запуска bootloadera, который расположен в system memory, ногу BOOT1 нужно подтянуть к «земле», а BOOT0 — к «питанию» (табличка справа).

Подтяжку для BOOT0, BOOT1 лучше делать не жёсткую, а джамперами, чтобы можно было легко выбирать режимы загрузки (например, переключившись после заливки проги в режим загрузки из flash, можно будет эту прогу сразу и потестить).

Схема подключения показана ниже.

Дальше всё просто. Запускаем Flash Loader Demonstrator. Откроется страничка, на которой нужно выбрать com-порт и скорость обмена.

Чётность и количество бит данных уже настроены как надо, скорость можно менять — контроллер в процессе инициализации обмена настраивается на выбранную скорость автоматически, com-порт нужно выбрать тот, который создался при подключении USB-to-COM преобразователя к компьютеру (наш преобразователь создаёт при подключении виртуальный com-порт, полностью имитирующий настоящий аппаратный). После того, как всё настроили — жмём «Next».

О том, что всё нормально и соединиться с контроллером удалось, нам сообщит зелёный сигнал светофора на следующей страничке. Если связь не установится — на эту страничку нас вообще не пустят, сообщив, что контроллер не отвечает.

При установлении связи программа автоматически определит сколько у контроллера flash-памяти и защищена ли эта память от чтения. Нажав кнопку «Remove protection» защиту можно снять, но при этом содержимое флеша будет стёрто (предыдущая записанная туда прошивка уничтожится). Жмём «Next».

В следующем окне нам предлагают выбрать тип программируемого камня (хотя непонятно зачем, — он и так автоматически определяется), а также показывают для нашего камня PID, карту flash-памяти, и версию bootloader-а. Просто жмём «Next».

В следующем окне нужно выбрать, что мы собственно хотим с нашим контроллером делать. Тут возможны следующие варианты: Erase (стереть), Download to device (загрузить в контроллер прошивку), Upload from device (считать прошивку с контроллера), Enable/Disable Flash protection (включить/выключить защиту flash-памяти), Edit option bytes (изменить байты опций).

Соответственно:

  • Если мы хотим залить прошивку — выбираем Download to device, потом жмём на квадрат с тремя точками и выбираем в проводнике файл с прошивкой, которую надо залить, после чего опять жмём «Next».
  • Если мы выберем считывание прошивки, то нажав на квадрат с тремя точками напротив пункта Upload from device нужно указать путь к файлу, в который вы хотите сохранить считанную прошивку (если файл не существует, — вас спросят хотите ли вы его создать).
  • Если же нам нужно защитить прошивку от чтения или перезаписи или, наоборот, отменить такую защиту, то ставим галочку напротив Enable/Disable Flash protection и ниже, в выпадающих меню, выбираем, что же именно нужно сделать.
  • Если нам нужна более «тонкая настройка» контроллера — выбираем пункт Edit option bytes.

Как я уже говорил, если вы отмените установленную ранее защиту от чтения, то это всё равно не даст вам возможности считать защищённую программу, так как программа после отмены защиты будет попросту стёрта.

Ну да ладно, мы немного отвлеклись. Итак, допустим мы выбрали заливку прошивки в контроллер и нажали «Next».

На следующей странице внизу появится прогресс-бар, в котором будет показан ход выполнения процедуры загрузки. После того, как вся прошивка будет загружена в контроллер, этот прогресс-бар станет зелёным и в нём белыми буквами будет написано: «Download operation finished successfully» (операция загрузки успешно завершена). После этого, можно нажать кнопку «Close» и закрыть Flash Loader Demonstrator

Всё, теперь чтобы залитая программа начала выполняться нам останется только настроить контроллер на загрузку из flash (BOOT0 = 0, BOOT1 — любой уровень) и перезагрузить его.

P.S. Если вы работаете в Keil uVision, то можете прямо в него прописать путь к программе-загрузчику. Для этого нужно выбрать в меню пункт «Flash->Configure Flash Tools…», далее в открывшемся окне на вкладке «Utilities» выбрать пункт «Use External Tool for Flash Programming» и в строке «Command» указать полный путь к утилите «Flash Loader Demonstrator» (тыкаем на три точки справа от строки, в открывшемся проводнике находим и выбираем нужную программу). Всё, теперь прошивку можно заливать в контроллер прямо из среды Keil uVision, выбрав в меню пункт «Flash->Download» (при этом будет автоматически запускаться Flash Loader Demonstrator).

  1. Часть 1. Установка MDK, создание проекта, основы Keil uVision
  2. Часть 2. Команды и директивы ассемблера, структура и синтаксис программы. Первая программа для STM32
  3. Часть 3. Карта памяти контроллеров STM32, методы работы с памятью
  4. Часть 4. Регистры, старт и режимы работы контроллеров STM32
  5. Часть 5. Как залить прошивку в контроллер
  6. Часть 6. Настройка системы тактирования
  7. Часть 7. Работа с портами ввода-вывода
  8. Часть 8. Процедуры на ассемблере для STM32
  9. Часть 9. Система прерываний
  10. Часть 10. CMSIS, использование стандартных библиотек и функций
  11. Часть 11. Подключение и использование драйверов из пакета StdPeriph
  12. Часть 12. Работа с модулями USART и UART.
  13. Часть 13. Работа с модулями ADC
  14. Часть 14. Использование DMA
  15. Часть 15. Таймеры. Глава 1 — Введение. Простейшие таймеры
  16. Часть 15. Таймеры. Глава 2 — Таймеры общего назначения TIM9 — TIM14
  17. Часть 15. Таймеры. Глава 3 — Таймеры общего назначения TIM2 — TIM5
  18. Приложение 1. Набор инструкций THUMB-2 и особенности их использования
  19. Приложение 2. Таблица векторов прерываний для семейств STM32F101, STM32F102, STM32F103
  20. Приложение 3. Драйвера и функции библиотеки StdPeriph

Как прошить чип STM32 | Многобукфф

В своей недавней статье я подробно разобрал каким образом можно прошивать программным кодом чипы семейства AVR. Сегодня же я рассмотрю способы, которыми можно прошить чипы семейства STM32. Но, я не буду приводить примеры того, как можно «залить» прошивку в микроконтроллер при помощи шнура от утюга или же варианты сопряжения CentOS установленного на Chromebook и программатора от STMicroelectronics. Пойдем по пути наименьшего сопротивления и используем современный ПК с установленной на него Windows 10 64-х битной редакции. В качестве подопытной, которую будем прошивать, возьмем фирменную плату NUCLEO-F103RB. Плата относится к серии Nucleo-64, хотя сами микроконтроллеры 32-х битные. Вероятно, что цифра 64 используется по количеству выводов чипа микроконтроллера, так как для плат серии Nucleo-64 обычно используются LQFP64 корпуса микросхем.

Тот самый случай, когда за деревьями не видно леса

В платы Nucleo производитель заботливо уместил средство подключения, программирования и отладки, ST-Link. Плата просто подключается USB-кабелем к компьютеру, и если установлены драйвера, то ее можно прошивать новой прошивкой, связаться по последовательному порту и протоколу, а также начать процедуру отладки. И все по одному кабелю. Однако, ST-Link, вместе с USB-портом, выполнены на куске платы, который можно с легкостью удалить, попросту его отломав. Именно так и поступим, дабы приблизить ситуацию к наиболее распространенной, когда у нас нет встроенного программатора. Ведь нам с вами так или иначе приходится сталкиваться с чипами STM32 без каких- либо дополнительных интегрированных инструментов вообще. Но прежде, чем переходить к практике по прошивке необходимо разобраться в теории, точнее в теории управлением чипами семейства STM32.

Итак, согласно спецификации, чип STM32F103RB обладает целыми тремя коммуникационными протоколами, посредством которых можно взаимодействовать с внутренней памятью с целью внедрения в нее прошивки:

  • Интерфейсом USART.
  • Интерфейсом JTAG.
  • Интерфейсом ST-LINK.

Начнем по порядку.

Universal Synchronous and Asynchronous Receiver-Transmitter (USART)

Данный коммуникационный протокол позволяет подключаться к чипу даже обычным терминалом. В минимальной конфигурации для подключения к устройству нужен всего один провод. В этом случае данные будут отправляться только в одном направлении. Либо на устройство, либо с устройства. Но все же рекомендуется применять как минимум трехпроводную схему подключения: GND, TX, RX. Для подключения с целью прошивки необходимо использовать только USART1.

На чипе STM32F103RB USART1 располагается на следующих выводах:

  • CK (Clock) – PA8
  • TX – PA9
  • RX – PA10
  • CTS (Clear To Send) – PA11
  • RTS (Request To Send) – PA12

При подключении к USART следует помнить, что чипы семейства STM32 работают на напряжении 3.3 В и не стоит подключаться к ним переходниками с напряжением в 5 вольт.

Joint Test Action Group (JTAG)

JTAG — весьма популярный интерфейс, ставший промышленным стандартом. Интерфейс применяется для подключения к сложным интегральным схемам с целью тестирования и отладки. В том числе, при помощи данного интерфейса можно осуществлять заливку прошивок в чипы STM32.

На чипе STM32F103RB JTAG-интерфейс выведен на следующие позиции:

  • JTMS (JTAG Test Mode Select) – PA13
  • JTCK (JTAG Test Clock) – PA14
  • JTDI (JTAG Test Data Input) – PA15
  • JTDO (JTAG Test Data Output) – PB3
  • JNTRST (JTAG Test nReset) – PB4

Для функционирования коммуникации с чипом достаточно подключить только четыре первых позиции, но для большей гибкости, особенно в сложных случаях рекомендуется так же использование JNTRST.

Single Wire Interface Module (SWIM), Serial Wire Debugging (SWD) и ST-LINK

Фирма ST весьма крупная, на начало 2020 в ней работало более 40 тысяч человек. Это очень много и управлять такой махиной без бюрократического подхода просто невозможно. Поэтому в недрах ST периодически рождаются и формируются различные экосистемы. Экосистема STM32 не стала исключением. Она росла, развивалась до того момента, пока разобраться в нагромождении аббревиатур, названий, интерфейсов, их групп и прочего стало очень не просто. Но возможно. Аббревиатурой SWIM, как правило именуют сразу три сущности: кабель, технологию подключения по одному проводу и аппаратный модуль, обеспечивающий подобное подключение. SWD — означает технологию отладки при использовании последовательного подключения. При чтении литературы и форумов по STM32 можно так же натолкнуться на сокращения типа SWO вкупе с SWV.

SWO это Single wire output, т.е. технология позволяющая по одному проводу выдавать из чипа какую-то информацию. Как правило она используется для отладки, когда разработчики не желают использовать обычные UART для ее вывода, что весьма полезно, так как в любой момент можно подключиться к работающему устройству и начать получать отладочную информацию. Получать и просматривать информацию можно посредством Serial Wire Viewer (SWV). По сути, обычным терминалом с дополнительными функциями. Выдача информации осуществляется только при использовании режима SWD и доступна на микропроцессорах начиная с Cortex-M3.

И подбираясь к самому интересному, хочется отметить, что под наименованием ST-LINK кроется не только комплекс технологий, объединяющих SWIM, SWD, SWO и тому подобное, но еще и программное обеспечение, которое реализует весь набор практик и интерфейсов.

Для подключения ST-LINK на STM32F103RB задействованы следующие выводы:

  • SWDIO (Serial Wire Data Input/Output) – PA13
  • SWCLK (Serial Wire Clock) – PA14
  • TRACESWO (Trace of Serial Wire Output, та самая SWO) – PB3

Для работы через SWIM/SWD нужно-то всего два проводка, не забываем про обязательное соединение земли по всем подключенным устройствам. TRACESWO можно не подключать, особенно если данной функцией вы не пользуетесь, да и для отладки она, а не для загрузки прошивки.

Аппаратное обеспечение

Для работы с STM32 разработано и выпущено в свет великое множество различных аппаратных модулей, вот лишь самые популярные из них:

  • ST-Link;
  • J-Link;
  • Black Magic Probe.

К сожалению, у меня нет на руках ни J-Link, ни тем более Black Magic Probe, поэтому в качестве аппаратных устройств рассмотрим только USART и ST-Link.

ST-Link великий и ужасный

Когда кто-то упоминает устройство ST-Link, то скорее всего имеет ввиду китайский аналог под кодовым названием ST-Link V2 Mini. Небольшой USB-свисточек в цветастом корпусе с десятипиновым разъемом IDC. Именно такой и будем рассматривать далее. Стоят подобные устройства более, чем доступно, работают отменно, подключаются и к семейству STM8, и к семейству STM32. Но прежде пробежимся по версиям ST-Link, ведь ST-Link V2 означает вторую версию устройства.

На начало 2020 актуальны следующие аппаратные версии ST-Link:

  • ST-Link – первая версия устройства, сейчас уже не актуальна. Поддерживается подключение по USB.
  • ST-Link/V2 – вторая версия устройства. Работает с STM8 и STM32. Поддерживается улучшенное подключение по USB.
  • ST-Link/V2.1 – обновленная вторая версия устройства. Работает с STM32 (поддержки SWIM для STM8 нет). Изначально предполагалось использовать ее как встраиваемую часть системы. Поддерживает подключение по USB с технологией виртуального COM-порта, а заодно и как сменный накопитель. В таких системах нет необходимости отдельно подключать USART, достаточно только устройства ST-Link/V2.1. Именно ST-Link/V2.1 интегрирован в отладочную плату NUCLEO-F103RB, поэтому при подключении ее к ПК, подключается и COM-порт и протокол SWIM. А прошивки можно загружать, просто записывая их на чип как на флешку. Удобно, но такие программаторы в виде отдельных устройств в продаже отсутствуют.
  • ST-Link/V3 – третья версия устройства. Бывает в виде версии E (встраивается как часть системы) и S (Set или Standalone, включая SET, MINI и MODS). Работает только с STM32.

Производят ST-Link V2 Mini в массовом порядке все, кому не лень. А не лень в первую очередь нашим китайским друзьям. Вот и поставляют они универсальные отладчики-программаторы в невероятных количествах на мировой рынок. И это хорошо, ведь благодаря массовому выпуску и конкуренции есть возможность приобрести программатор за очень небольшие средства. Да, он не самой последней версии, но работать с ним можно. Нужно только разобраться как.

Типичные представители китайских ST-Link V2 Mini

На свои устройства, заботливые производители из далекой и большой страны, предусмотрительно наносят распиновку выходов. И делают они это совершенно верно, так как никакой инструкции к устройству не прилагается. Однако, если покопаться в сети, то можно обнаружить, что существует несколько вариантов реализации вывода на китайских ST-Link V2 Mini, поэтому стоит обратить внимание на выводы, при подключении нового устройства.

При первом знакомстве с ST-Link V2 Mini у меня возникло затруднение в плане определение выводов на программаторе. Да, они подписаны и пронумерованы на корпусе, но на самом разъеме кроме ключа нет ничего. Поэтому пришлось повозиться с определением, где первый «шпынек», а где второй и все последующие.

Распиновка у моего ST-Link v2 Mini

Если подключить ST-Link V2 Mini к ПК под управлением Windows 10, то система автоматически найдет драйвер и произведет его установку. Если же драйвер не установился, либо используется версия операционной системы отличная от Win10, то можно поступить двумя путями: а) скачать драйвер с сайта производителя, б) скачать программную оболочку (о них ниже) от STMicroelectronics в поставке которой уже есть драйвер. Хочется сразу предупредить, что скачка любого программного обеспечения от ST возможна только зарегистрированным пользователям. Так компания накапливается данные о своих существующих или потенциальных клиентах.

Чем грозит отсутствие RST на STM32?

У китайских V2 Mini есть еще одна особенность. Поскольку программаторы предназначены как для работы с STM8, так и с STM32, то они содержат сразу выводы и для тех, и для других. Причем выводы на левой части разъема, около ключа, предназначены для подключения STM8 (там задействованы RST и SWIM), а на правой для STM32 (там SWCLK и SWDIO). Поэтому при работе с STM32, даже если подключить на плату вывод с RST, функция аппаратного сброса работать не будет, так как она используется только для семейства чипов STM8, для STM32 применяется другой вывод микрочипа, который не выведен на колодку разъема. Ту же учесть постиг вывод SWO. Увы, за дешевизну и многофункциональность приходится платить. Хотя, некоторые умельцы отключают вывод RST и SWIM и подключают туда верные выводы с нужных ножек микрочипа в программаторе.

В принципе, который так же подтверждается практикой, вполне можно не подключать выход сброса на микроконтроллере к программатору. Чипы STM32 весьма стабильны и если в вашей программе нет переназначений выводов, которые используются для SWD, то переход в режим программирования возможен без аппаратного сброса. Однако, если вы что-то напутали и назначили выводам (в случае STM32F103RB это PA13 и PA14) какие-то функции, то просто так запустить программатор не выйдет.

В чем проблема? Дело в том, что по умолчанию, STM32 сразу же запускает на выполнение программный код пользователя. А поскольку чип работает очень быстро, то программным способом не удается поймать момент между запуском чипа и инициализацией выводов SWD. В этом случае необходимо «нажимать» на сброс собственноручно. Ножку Reset микроконтроллера необходимо соединять с землей, запускать подключение SWD, отпускать Reset. Если наловчиться, то таким образом можно добиться срабатывания 8 или даже 9 раз из 10.

В режиме ручного сброса есть нюанс. А именно нештатный загрузчик (bootloader). Его наличие может несколько облегчить работу по подключению неподключаемого чипа, так как обычно загрузчик ждет некоторое время сигнала через UART о начале загрузки прошивки. Однако, насколько мне известно, свой загрузчик устанавливает только Arduino с ядром Maple. Но данный фреймворк уже не актуален в виду окончания его развития и поддержки.

USART/UART

Для подключения по последовательному протоколу к чипу потребуется обыкновенный конвертер USB2COM (USB2TTL, USB2UART или под любым другим наименованием). Я уже рассматривал несколько вариантов, включая кабели с чипами, для подключения по UART к AVR. Смысл подключения к STM32 ровно такой же. Только в качестве преобразователя интерфейсов под STM32 я приобрел платы от Waveshare на чипе PL2303. Платы простейшие, оборудованные всего четырьмя выводами.

При подключении к ПК, автоматически устанавливаются драйвера и устройство определяется в системе как COM-порт. При подключении адаптера к микроконтроллеру стоит обратить внимание на установленную перемычку. Плата от Waveshare способна работать с двумя напряжениями: 3.3 и 5 вольт. С чипами STM32 необходимо работать только в режиме 3.3 вольта.

Типичные китайские USB2COM свистки

Подключение адаптера к плате примитивное. Соединяем GND, соединяем выводы адаптера и микроконтроллера Rx и Tx перекрестно (Rx одного идет на Tx другого и наоборот). Все, теперь можно работать.

Стоит ли подключать Vcc?

На ST-Link, как и на USB2TTL есть выводы Vcc/Vdd/V+. На них подается постоянное напряжение в 3.3 вольта, родное для большинства чипов STM32. Стоит ли соединять эти выводы между платой микропроцессора и адаптером? В каких-то случаях да, в каких-то случаях нет.

Если вы планируете прошивать (или проводить отладку) платы без подк

STM32 программирование. ST-Link программатор — Avislab

Микроконтроллеры 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.
Итак, начнем с того, что попробуем прошить микроконтроллер. Это можно сделать с помощью USB-Uart переходника на базе микросхемы FT232 через USART, или с помощью программатора ST-Link.

Скачать тестовый файл для прошивки можно здесь. Программа мигает светодиодом на плате.

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

В системной памяти STM32 есть Bootloader. Bootloader записан на этапе производстве и любой микроконтроллер STM32 можно запрограммировать через интерфейс USART с помощью USART-USB переходника. Такие переходники чаще всего изготавливают на базе популярной микросхем FT232RL. Прежде всего подключим переходник к компьютеру и установим драйвера (если требуется). Скачать драйвера можно с сайта производителя FT232RL — ftdichip.com. Надо качать драйвера VCP (virtual com port). После установки драйверов в компьютере должен появиться виртуальный последовательный порт.

Подключаем RX и TX выходы к соответствующим вы

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

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

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

Цей мікроконтролер не є найпотужнішим серед 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. Будемо використовувати під час прошивки через USART.
  • Два кварци 8Мгц та 32768 Гц. У мікроконтролера є множник частоти, тому на кварці 8Мгц ми зможемо досягти його максимальної частоти у 72Мгц.
  • Два світлодіода. PWR — сигналізує про включене живлення. PC13 — підключений до виходу C13.
  • Коннектор для програматора ST-Link.

Отже почнемо з того, що спробуємо прошити мікроконтролер. Це можна зробити за допомогою USB-Uart перехідника на базі мікросхеми FT232 через USART, або за допомогою програматора 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 через послідовний інтерфейс.

Простые эксперименты с микроконтроллером STM32F103 («Голубая таблетка») / Хабр

Многие приобрели «голубую таблетку» на попробовать. Но из-за сложности программирования данная вещь оказалась где то на полке, до лучших времен.

Будем считать, что «лучшие времена» — наступили.

Что необходимо для экспериментов:


  • Аппаратные средства
  • Программное обеспечение

Аппаратные средства


Все используемые детали / компоненты можно приобрести на aliexpress.com
  • Конечно, в первую очередь сам контроллер.«Голубая Таблетка»
  • адаптер USB-UART
  • Кабель Micro-USB
  • набор проводов для соединения компонент между собой

Для более быстрой, по сравнению с UART загрузкой «прошивки» и отладки программ рекомендуется использовать программатор ST-Link V2

Программное обеспечение



Что такое модуль


Модуль это совокупность аппаратной и программной частей. Аппаратная часть — «таблетка» STM32F103C8T6, программная часть — «шаблон прошивки», созданный при помощи программы MIOC Данная программа — OpenSource.

Порты микроконтроллера


У микроконтроллера есть выводы или ножки. Часть из них это питание микроконтроллера, часть имеют специальное назначение (например Reset ), часть — интерфейс ввода/вывода общего назначения (англ. general-purpose input/output, GPIO).

Порты объединены в группы ( A; B; C… ). Каждая группа содержит до 16 портов, пронумерованных от 0 до 15. В итоге нумерация портов выглядит как PA0, PA1,…

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

На плате «таблетки» нанесена маркировка портов.

GPIO — Интерфейс ввода/вывода общего назначения


В модуле IO основные типы портов представлены в таблице:

В качестве датчиков, исполнительных механизмов будем использовать различные устройства от Arduino.

Программа MIOC ( Module Input-Output Configurator )


С помощью данной программы создаем / конфигурируем шаблон прошивки (проект для Embitz; Keil) модуля IO. Программа установки не требует. Скачали, запустили. С помощью данной программы создаём глобальные переменные, которые будем использовать в своих прошивках. Переменные могут быть ассоциированы с портами.

Окно первого запуска:

Создадим проект:

Выбрать папку для проекта. Папка, для проекта должна быть пуста!

Первая программа — «hello word» для микроконтроллера


Поморгаем светодиодом, что имеется на «голубой таблетке». Данный светодиод подключен к порту PC13.

Добавить строку в таблицу переменных

Генерируем BSP код (кнопка F8)

Далее, каждый раз после изменения проекта, обязательна генерация BSP!

Открыть созданный проект в среде разработки EmBitz или Keil. EmBitz пока как временное решение. Похоже автор забросил данный проект. По всей видимости в дальнейшем в проекте будет использоваться Code::Blocks.

В файле main.c напишем следующее:


(Для увеличения размера картинки откройте её в новой вкладке)

В EmBitz нажать F2, после появления окна информации нажать F7. Должна выполниться компиляция.

Повторное нажатие F2 скроет информационные закладки.

Загружаем в микроконтроллер, смотрим, как работает.

Кнопка


Добавим кнопку, например такую:

Схема подключения:

Добавим переменную в таблицу:

Генерируем BSP.

Изменим программу на следующую:

Создаём новую BSP (F8), компилируем, загружаем в микроконтроллер.

Нажимаем на кнопку — светодиод зажигается, отпускаем — тухнет.

Вместо светодиода на другой порт можно подключить реле, например:

И управлять какой либо полезной нагрузкой.

Вывод сообщений на консоль


Нужно определить, что будет консолью.

Возможны варианты:

  • адаптер USB-UART
  • виртуальный COM-порт (кабель Micro-USB)

Если в конфигурации выбраны одновременно UART1 и USB as Console, при этом USB VCP не выбран, то консоль будет назначена «в никуда». Т.е. ругаться на функцию print_str ( или макрос print ) не будет, но и вывода не будет никакого. Такое же поведение будет если не выбрать ни один интерфейс, или выбрать USB VCP но не выбрать ни UART1 ни USB as Console.

Конфигурация консоли:

Подключим TettaTerm к COM-порту (консоли). Если загрузку прошивки производим через UART1, то не забываем отключать/подключать COM-порт. В TerraTerm «горячие кнопки» Alt+I; Alt+N Для варианта загрузки через ST-Link этого делать не требуется.

Отредактируем программу:

Теперь на консоли будет отображаться состояние кнопки:

DS18B20


Подключим к «таблетке» температурный датчик DS18B20.

Поместим в таблицу переменную:

Изменим программу на следующую:

Создаём новую конфигурацию, компилируем, загружаем в микроконтроллер.

На консоли будет отображаться температура, измеряемая датчиком.

АЦП


В качестве примера работы с АЦП можно использовать потенциометр:

Или датчик влажности почвы

Остановимся на последнем:

Конфигурируем порт:

Редактируем программу:

Компилируем, загружаем.

В консоли наблюдаем:

adc — текущее показание АЦП. max и min — зафиксированные минимальное и максимальное показания датчика, совсем сухой (0%) и совсем мокрый (100%).

Совсем мокрый (100%) — опустим датчик в стакан с водой. Совсем сухой (0%) — лежит на открытом воздухе.

По сути мы сделали калибровку датчика влажности почвы от 0 до 100%. Максимальное и минимальное значения поместим в текст программы.

Результат работы. Датчик помещен в землю цветочного горшка:

Данный проект — шаблон решения для полива растений.

На этом пока всё. Программа MIOC будет пополняться дополнительными возможностями.

Прошивка программ на STM32. Встроенный загрузчик

Пост обновлен с новыми экранами и актуальной информацией (2020)!

Были несколько запросов от пользователей, чтобы подробнее рассказать о загрузке программ во флэш-память STM32 микроконтроллеры. Есть несколько способов, как выполнить прошивку stm32 программирование.

  • Вы можете войти в загрузчик STM32 напрямую через интерфейс USART и загрузить двоичные файлы.
  • Более продвинутый и гибкий метод — использовать утилиту ST-LINK — адаптер на базе ST, который подключается к плате STM32 через интерфейс JTAG.Многие платы разработки ST уже имеют эту функцию. В противном случае вы можете переключить провода от одного к другому или получить специальный портативный адаптер ST-Link.
  • Также вы можете использовать стандартные сторонние инструменты JTAG, такие как J-Link.
  • Наконец, вы можете прошить загрузчик, который работает с любым интерфейсом (USART, USB, SPI и т. Д.)

Плата STM32F103RB

Любой из этих методов хорош, если он выполняет свою работу. В этой теме давайте сосредоточимся на том, как выполнить перепрошивку STM32 с помощью загрузчика.Сегодня, наверное, ни один производитель не выпускает развивающие платы с интерфейсом RS232. Тем не менее, вы, как я, наверное, имеете десяток старых плат с последовательным портом. Это отличные доски, которые все еще можно использовать во многих проектах.

В моем примере я использую доску проекта LC STUDIO, которая оснащен процессором M3 STM32F103RBT6 ARM Cortex. Главный особенности процессора:

  • Flash — 128 КБ
  • SRAM — 20 КБ
  • Три 16-битных таймера
  • 1 таймер SysTick
  • SPI 2 (до 18 Мбит / с)

    I0007 2 (поддержка SM Bus 2.0 / PM Bus)

  • USART 3 (один до 4,5 Мбит / с, два других до 2,25 Мбит / с)
  • USB 1 (совместим с USB Full-speed 12 Mbs)
  • CAN 1 (до 1 Мбит / с)
  • A DC 12 бит: 2 АЦП — 16 каналов
  • 1 RTC
  • DMA: 7 каналов
  • Внутренняя температура датчик: 1 (внутренне подключен к входному каналу ADC_IN16)

Разработка LC STUDIO плата имеет следующие характеристики:

  • 1 последовательный разъем RS232 (преобразователь уровня микросхемы MAX3232, USART1 или USART2 выбирается с помощью перемычек J4)
  • 1 USB-разъем (сопоставлен с контактами PA11 и PA12)
  • 1 JTAG Connector (2 × 10 заголовок )
  • Кнопка сброса
  • 1 Индикатор питания
  • 2 Пользовательские кнопки (сопоставлены с контактами PC0 и PC1)
  • 2 светодиода (контакты PB8 и PB9)
  • Перемычка J5 для выбор источника питания (от разъема USB или разъема JTAG)
  • Перемычка J6 для включения подтягивающего резистора USB (R18 = 1.5k)
  • BOOT0 и BOOT1 перемычки для выбора режима загрузки
  • LC-фильтрация для VDDA (L1 и C6)

Использование последовательного кабеля или адаптера USB для последовательного порта

Вероятно, у вас более новый компьютер, у которого нет последовательного интерфейса. Есть два способа решение этой проблемы.

Проверьте материнскую плату, есть ли на ней разъем последовательного интерфейса. Таким образом, вы можете получить дешевый внешний разъем расширения, который подключается к материнской плате.

В качестве альтернативы вы можете использовать USB последовательный кабель, который работает так же, как последовательный порт но ссылки на порт USB.

Большинство кабелей USB-последовательный порт распознаются операционными системами автоматически, и никаких дополнительных действий не требуется. Могут быть какие-то странные кабели с нераспознанными микросхемами преобразователя. Таким образом, вам понадобится драйвер от производителя. Лучший совет — держаться подальше от подозрительных дешевых кабелей и использовать известные бренды.

Встроенный загрузчик на STM32

Все микроконтроллеры STM32 поставляются со встроенными загрузчиками, которые сработали во время производства.В зависимости от типа устройства флеш-память может быть перепрошита с помощью одного из интерфейсов, например USART1 или USART2, USB, CAN.

В основном мы имеем дело с устройствами низкой, средней и высокой плотности для доступа к загрузчику с использованием интерфейса USART1. Доступ к USART1 можно получить напрямую через интерфейс RS232 или через чип USB-драйвера USART, например FT232.

Для входа в загрузчик необходимо настроить пару специальных выводов MCU на правильные логические значения. Контакты обозначены как BOOT0 и BOOT1 на микроконтроллере STM32.Загрузочные пины позволяют выбрать несколько режимов работы загрузчика:

Как видите, есть три случая:

  • Первый случай — когда вывод BOOT0 подключен к земле, а BOOT1 открыт или находится в логическом состоянии 0 после выполнения программы сброса из основной флэш-памяти. Заземленные контакты BOOT являются стандартной конфигурацией при выполнении программ в полевых условиях.
  • Второй случай (BOOT1 = 0; BOOT0 = 1) означает, что после сброса выполнения запускается системная память, встроенная в загрузчик.Это тот случай, когда нам нужно загрузить двоичные файлы через USART1.
  • Третий случай означает, что выполнение программы выполняется в SRAM.

Обратимся ко второму случаю — системной памяти. Вы найдете пару перемычек на большинстве плат для разработки, где вы можете выбрать конфигурации BOOT0 и BOOT1. В нашем случае плата STM32F103RBT6 выглядит так:

На изображении выше вы можете видеть, что установка перемычки уже выбирает запуск внутреннего загрузчика после перезапуска.

Flash Loader скачать

Для доступа к загрузчику, вам понадобится специальное программное обеспечение под названием Flash Loader Demonstrator, также известен как FLASHER-STM32. Обязательно установите последнюю версию, чтобы поддержка новейших операционных систем как Windows 10.

Установить и запустить. Вы увидите экран, на котором вы сможете выбрать параметры USART. Обязательно выберите правильный COM-порт:

Подключите плату к ПК с помощью предпочитаемого кабеля и нажмите кнопку Reset перед дальнейшими действиями.Возможно, вам потребуется найти рабочую скорость передачи данных, которая для моего STM32F103R составляет 9600. После того, как вы нажмете кнопку Next , откроется следующий экран.

Подтверждает, что вы успешно вошли в загрузчик. Загрузчик флэш-памяти определяет размер флэш-памяти устройства, что в моем случае составляет 128 КБ. Нажмите Next , чтобы перейти к устройству экран выбора.

Как видите, целевое устройство выделяется автоматически. Если нет — выберите нужный из выпадающего списка.Ниже вы также можете увидеть другую информацию, такую ​​как версия протокола загрузчика (2.2), отображение флэш-памяти. Нажмите Далее , если выбранное устройство кажется нормальным.

Программирование флэш-памяти STM32

flash_loader_demonstrator_programming_screen

Наконец, вы попадаете на экран, где можете делать все вещей:

Вы можете стереть все или выбранные страницы памяти. Скачать .hex (.bin или .x19) во флэш-память микроконтроллера STM32.

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

Дополнительно можно выбрать Проверьте после загрузки , чтобы убедиться, что загрузка Был успешен.

Вы также можете Загрузить из устройства существующий двоичный файл из флэш-памяти устройства в файл и резервное копирование для дальнейшего использования.

Есть возможность включить или отключить защиту Flash от чтения или письма.

Наконец, вы можете пойти дальше с помощью байтов опции редактирования для установки уникальных байтов настроек, защиты от записи или чтения выбранных страниц памяти.Эти настройки часто используются на этапе производства с целью защиты от копирования кода.

Загрузим двоичный файл .hex на флэш-память устройства STM32. объем памяти. Вам нужно найти двоичный файл в поле Загрузить из файла . В диалоговом меню выберите для проверки после загрузки и перейдите к пользовательской программе, например:

Нажмите кнопку Next , чтобы начать программирование и проверку.

Через несколько секунд все будет готово.Время загрузки может зависеть от двоичный размер. Мой пример двоичного размера составляет 2804 байта, и на то, чтобы загрузить и проверить.

Выполнение кода микроконтроллера после сброса

Когда мигание закончится, если установлен флажок Перейти к программе пользователя , ваша программа будет выполнена немедленно. Чтобы нормально запустить код после сброса платы, вам необходимо вернуть штырь микроконтроллера BOOT0 на землю, переместив перемычку.

Подробнее о методах программирования прошивки ST-Link и J-Flash stm32.

FlashLoaderDemonstratorv2.8.0STM8 и 32 程序 下载 器 — 硬件 开发 工具 类 资源 -CSDN 下载

  • 签到

    累计 签到 获取 , 不 积 跬 步 , 无 以至 千里 继续 坚持!

  • 分享 王者

    成功 上传 51 个 资源 即可 获取

上传 资源 赚 积分 или 赚钱

1 Введение

Содержание

TN0189

Содержание

1

Введение.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

2

FAQ и ответы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

2,1

Какое программное обеспечение для ПК я могу использовать для подключения к загрузчику STM8? .. .

4

2,2

Существует ли программное обеспечение для ПК с поддержкой командной строки? . . . . . . . . . . . . . . . .

4

2,3

Какую скорость мне следует использовать для обмена данными с загрузчиком? . . . . . . . . .

4

2.4 Что делать, если при запуске Flash

нет ответа от STM8

погрузчик демонстратор? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.5 Что делать, когда в загрузчике Flash появляется следующее сообщение

демонстратор: Не удалось найти файл E_W_ROUTINEs для этой версии X.X. Убедитесь, что вы выбрали правильное устройство …? . . . . . . . . . . . . . . . . . 5

2.6 Как включить загрузчик? .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.7 Как установить байт опции загрузчика через загрузчик Flash

демонстратор? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.8 Как мне получить файл S19 с байтом опции загрузчика внутри него? . . . 7

2.9 Что делать, если флэш-память устройства не может быть запрограммирована (прекращение связи после отправки команд записи или стирания на

Flash), когда я использую собственное ПО для загрузки? .. . . . . . . . . . . . . . . . . . . 8

2.10 Где взять процедуры E_W для устройства, которое я хочу загрузить через

SPI (или UART) при использовании моего собственного ПО? . . . . . . . . . . . . . . . . . . . 8

2.11 Что мне делать, если при подключении к устройству с помощью демонстратора загрузчика Flash появляется следующее сообщение: Не удается получить доступ

команд, попробуйте изменить выбор эха, перезагрузите устройство и повторите попытку …? . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.12 Что означает режим эхо? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.13 Что делать, если у меня возникли трудности при использовании связи SPI

загрузка флеш-памяти или если процесс загрузки останавливается? . . . . . . . . . . 9

2.14 Что делать, если связь между мастером и загрузчиком

не работает при использовании связи CAN? .. . . . . . . . . . . . . . . . . . . 10 2.15 Активен ли загрузчик, если включена защита от считывания (ROP)? . . . . . . . 10

2.16 Как загрузить прошивку через загрузчик в ROP-защищенный

устройство? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.17 Безопасно ли устройство с ROP-защитой от считывания его внутреннего кода через

загрузчик? . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.18 Какое решение для устройств STM8 без загрузчика ROM? . . . . 11

STM32 ISP Flash загрузчик — STM32 — юнибастер

Wykorzystujemy pliki cookies и подобная технология w celu usprawnienia korzystania z serwisu Chomikuj.pl oraz wyświetlenia reklam dopasowanych do Twoich potrzeb.

Jeśli nie zmienisz ustawień dotyczących cookies w Twojej przeglądarce, wyrażasz zgodę na ich umieszczanie na Twoim komputerze przez administratora serwisu Chomikuj.pl — Корпорация Кело.

W każdej chwili możesz zmienić swoje ustawienia dotyczące cookies w swojej przeglądarce internetowej. Dowiedz się więcej w naszej Polityce Prywatności — http://chomikuj.pl/PolitykaPrywatnosci.aspx.

Jednocześnie informujemy że zmiana ustawień przeglądarki może spowodować ograniczenie korzystania ze strony Chomikuj.pl.

W przypadku braku twojej zgody na akceptację cookies niestety prosimy o opuszczenie serwisu chomikuj.пл.

Wykorzystanie plików cookies przez Zaufanych Partnerów (dostosowanie reklam do Twoich potrzeb, analiza skuteczności działań marketingowych).

Wyrażam sprzeciw na cookies Zaufanych Partnerów
NIE ТАК

Wyrażenie sprzeciwu spowoduje, że wyświetlana Ci reklama nie będzie dopasowana do Twoich preferencji, a będzie to reklama wyświetlona przypadkowo.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *