Самый недорогой программатор/отладчик ST-Link V2 на примере STM32F103CBT6.

Обязательно меняем провода на короткие
Итак первым делом меняем провода для соединения ST-LINK V2 с STM32F103C8T6 на короткие 10см.
Используем для соединения с STM32F103C8T6 только 4 провода (SWD интерфейс):
3.3V — 3.3V
GRD — GRD
SWDIO- DIO
SWCLK- CLK
Нет SWO трассировки
То есть не выведен отдельный провод PB3 SWO из программатора наружу.
Но в принципе программно SWO реализован внутри программатора. Только воспользоваться им нельзя. Белый провод это он и есть, а как подпаятся к ножке микросхемы программатора вопрос ?..

Как обновить внутреннее ПО
через программу ST-LINK Utility
Проверяем сначала связь с контроллером программой ST-LINK Utility:
Обе перемычки на STM32F103C8T6 в положении 0
запускаем, жмем Connect и все определяется ОК
щелкаем Settings и видим, что устройство определяется автоматически корректно (см.скриншот) , port = SWD, target Voltage=3.2V и т.д.
Обновление внутреннего ПО
Чтобы сделать Firmware Update в программе ST-LINK Utility надо установить перемычку в положение 1 (режим DFU). В результате должно получится примерно так, кнопка Yes активна:

Иногда , почему-то не удается сделать Firmware Update. Но помогает — закрытие всех программ, перезагрузка ПК (танцы с бубном).
По-видимому надо разобраться что устанавливать? — Hardware Reset (при SoftWare Reset у меня не срабатывает).

Важно! — в ST-Link V2 после прошивки (через Stm32-Link Utility) сохраняются старые настройки Mode (Normal|Hot Plug|Connect Undr Reset) и Reset Mode (Software System Reset|Core Reset|Hardware Reset).
Если не работает ничего — пытаемся разобраться с дополнительными настройками
Mode : Connect Under Reset можно выставить только с Reset Mode : Hardware Reset (Похоже по смыслу , что это тот самый режим когда надо ручками кнопку Reset нажимать и перемычка в 1 д/б).
The “Connect Under Reset” option allows to connect to the target using a reset vector catch before executing any instruction. This is useful in many cases like when the target contains a code that disables the JTAG/SWD pins.
Т.е. это похоже когда программа в начале своего исполнения отключает SWD возможности. Понятно отладка тут не будет возможна.
Mode : Normal возможен с Reset Mode : (Software System Reset|Core Reset|Hardware Reset) .
With “Normal” connection mode, the target is rest then halted. The type of reset is selected using the “reset Mode” option.
Mode : Hot Plug возможен с Reset Mode : (Software System Reset|Core Reset|Hardware Reset)
The “Hot Plug” option allows to connect to the target without halt or reset. This is useful to update the RAM addresses or the IP registers while the application is running.
И мы понимаем, что Hot Plug — пока этот режим нам не нужен никак.
Итак режим (Mode) и Reset Mode настраивается именно в ST-Link V2 через Stm32-Link Utility.
В Keil надо соответственно этому указать настройки.
Итак, сегодня распишу немного по тому, как программировать ваши микроконтроллеры, из которых вы сделали всевозможные устройства. Не будем же мы только отладочную плату мучать .
Контроллеры STM32 можно прошить двумя путями.
1) Через встроеный бутлоадер (бутлоадер, это такая маленькая программка внутри каждого микропроцессора STM32, которая прикидывается программатором — это если по простому). Прошивка в таком варианте происходит через UART (для связи с компьютером используется переходник USB>COM)
2)Внешним программатором. Из внешних программаторов на данный момент есть большой выбор. Это может быть и ваша отладочная плата STM32 Discovery, и китайский аналог ST-LINK V2 mini, и оригинальный ST-Link.
Первым вариантом я не пользовался, но сложного в нём вроде ничего нет. Нужно скачать утилиту STM32 ST-LINK Utility и на вашем прошиваемом микроконтроллере выставить определённый сигнал на ножкеножках BOOT0BOOt1. Допустим возьмём для примера самый дешёвый и простой микроконтроллер STM32F030F4P6 в корпусе TSSOP20. У него есть ножка BOOT0, которую если мы замыкаем на массу — то у нас контроллер будет прошиваться через SWD (то есть от внешнего программатора), а если на эту ножку подать напряжения питания, то контроллер будет стартовать с встроенного бутлоадера, и ждать пока мы его прошьём через UART, то есть с помощью программы ST-LINK Utility.
Вторым вариантом намного проще работать, так как помимо того что вы можете прошивать свои микроконтроллеры так ещё и в режиме реального времени отлаживать свои программы (дебажить))
Для прошивки в таких случаях используется всего 4 ножки (по минимуму)
1)Vcc — питание 3 Вольт
2)VSS(Gnd) — масса
3)SWCLK
4)SWDIO
Такой вариант подключения для прошивки используется в том случае, если вы не сконфигурировали ножки SWCLK и SWDIO в качестве портов ввода-вывода. Если же вы эти ножки используете в качестве портов ввода-вывода, то прийдётся ещё подключать «физичесу» линию сброса. — RST . В таком варианте у нас получается 5 проводов для подключения
1)Vcc — питание 3 Вольт
2)VSS(Gnd) — масса
3)SWCLK
4)SWDIO
5)NRST
Вот так выглядит распиновка на плате STM32F4Discovery разъёма для программирования внешних микроконтроллеров. Пин VDD_Target является пином, для снятия показаний напряжения с прошиваемого устройства. Этот если по простому — для согласования уровня напряжений между программатором и прошиваемым устройством.
Вот так выглядит разъём программатора ST-LINK V2 mini. В нём есть дополнительные средства для работы с STM8 и т.д, поэтому для работы с STM32 нам нужны пины
1)Vcc — питание 3 Вольт
2)SWDIO
3)VSS(Gnd) — масса
4)SWCLK
10)NRST
Вот так выглядит схема подключения для прошивки нашего простейшего микроконтроллера STM32F030F4P6
Как видите, никаких заморочек нет. На этом думаю всё, если будут вопросы, то пишите в коментах, я добавлю эти нюансы в статью.
ST-Link/V2 специальное устройство разработанное компанией ST для отладки и программирования микроконтроллеров серии STM8 и STM32. Про сам прибор можно прочитать на сайте компании ST.
Основные его возможности:
-
Выход 5В для питания устройства
-
USB 2.0 высокоскоростной интерфейс
-
SWIM, JTAG/serial wire debugging (SWD) интерфейсы
-
SWIM поддержка низкоскоростного и высокоскоростного режимов
-
SWD and serial wire viewer (SWV)
-
Возможность Обновление прошивки
Так как микроконтроллеры STM32 построены на ядре ARM Cortex, которое имеет интерфейс отладки SWD, то ST-Link позволяет программировать и отлаживать и другие 32-битные микроконтроллеры на базе ARM-Cortex.
Это, можно сказать, единственный программатор микроконтроллеров STM8. Для программирования STM32 существуют и другие универсальные программаторы.
Где можно купить программатор STM8 STM32 ST-Link
На текущий момент интерес к микроконтроллерам ST очень большой. Поэтому программатор ST link довольно широко распространен на рынке. Существует несколько версий, отличающихся по цене.
Оригинальный ST Link от компании ST, как всегда, самый дорогой вариант. Стоит больше 2 000 руб.
Мини ST link (очень похож на наш вариант этого программатора) стоит около 600 руб. Купить его можно у крупных поставщиков электроники — Компэл, Терра электроника и другие.
Ali express (Китай) — тут предлагается большое количество самых простых вариантов Программатора, но в общем, они все рабочие, ими вполе можно пользоваться. Как правило они годятся для программирования STM8 и STM32. Единственное, они не имеют SWO выхода, но он нужен не так часто. Пожалуй, единственный минус тут, это ожидание покупки. Стоимость около 150-200 руб.
Если вам не нужен программатор STM8, а нужна только серия STM32, то хорошим вариантом будут платы Discovery от ST, они имеют на бору и программатор ST link. Однако, как правило, разъем для программирования STM8 там не разведен.
Ну и конечно, можно просто купить детали и сделать данное устройство самостоятельно. В основе лежит не самый дешевый микроконтроллер STM32, да и купить детали дешево не так просто, так что, стоимость будет от 300 до 400 рублей. В данной статье мы будем рассказывать, как собрать данный прибор самостоятельно из набора необходимых SMD компонент. Конечно же мы рекомендуем пойти этим путем. Только так вы сможете научится трассировке плат, их изготовлению и паянию.
{product id=30}
Как изготовить программатор ST-LINK V2
1. Прочитать эту статью внимательно и до конца!
2. Подготовить или приобрести необходимые инструменты: все для пайки, USB UART адаптер (будет нужен для программирования МК)
3. Внимательно прочитать статьи из раздела Обязательная теория.
4. Скачать необходимые файлы по данному прибору с github.
5. Изготовить плату для прибора самостоятельно (это совсем несложно, в нашей инструкции все подробно описано).
6. Приобрести все необходимые комплектующие можно в нашем магазине за 300 руб.
7. Запаять все компоненты на плату, смотри наше видео.
ПРИБОР ГОТОВ, можно пользоваться!
Поиск схемы для ST Link программатора, отладчика
Сама компания ST не дает нам схему данного прибора, однако есть схемы ее ознакомительных плат серии DISCOVERY, в которых приводится и схема отладчика. Например документ UM0919. Но она не полная, там присутсвует только SWD интерфейс. В основе микроконтроллер STM32F103C8T6.

Вторая схема, которая есть в документе UM1670, содержит выводы SWIM выходов, но это уже версия V2.2 на другом микроконтролере STM32F103CBT6.

Также в интернет удалось найти схему ST-LINK v2, восстановленную по оригинальному прибору:
Вот из этих трех схем нам надо разработать схему для нашего устройства. Но сначала давайте составим основные требования к прибору, который мы будем делать.
Требования к нашему ST-LINK
Мы будем делать приборы на базе STM8, а также STM32, процессоров NUVOTON Cortex-M0, ATMEL. Все они будут питаться от 3.3В или 5В. Так что, нам не нужна возможность работать с микроконтроллерами на напряжении 1.8В. Но сама возможность программировать STM8 нужна обязательно.
Мы делаем прибор для своих задач, поэтому у нас нет необходимости в стандартных разъемах SWIM и JTAG. Будет делать такой разъем, который удобнее для трассировки платы.
Версия 2.2 на микроконтролере STM32F103CBT6 добавляет второе USB устройство — COM порт UART, но он уже у нас есть, так что, нет смысла переплачивать, микроконтроллер там дороже. Правда у него есть хорошая возможность — прошивка через интерфейс DFU, то есть микроконтроллер видится как флешка при подключении по USB, и прошивку просто надо скопировать на диск. Но прошить надо будет один раз, и для этого у нас есть USB UART адаптер, прошивать первый раз будет через него. Дальнейшее обновление прошивки идет уже через программу от ST по USB. Мы будем делать версию 2.0 на базе STM32F103C8T6.
Оригинальная версия ST-Link содержит микросхему преобразования уровней, что удобно для отладки и прошивки готового устройства, и необходимо для работы с напряжением ниже 3.3В. У нас таких не будет, а для работы с 5В и 3.3В — преобразование уровней не нужно.
Прибор будем делать в формате USB dongle, соответсвенно будет использоваться разъем USB-A male.
На защите выходов можно сэкономить, так что не будем использовать защитные диоды. Достаточно будет сопротивлений на всех выходах разъемов на случай, если вдруг мы их подключим на 5В или землю. Надо обязательно иметь в виду, что пользоваться данным прибором надо аккуратно! Все выходы при подключении проверять несколько раз! Выход 3.3В больше защищен, он идет через регулятор напряжения, защищающий от КЗ. Так что, лучше питать тестовые схемы от него!
Теперь можно составить финальную схему нашего ST-Link.
В интернет предложено много готовых плат и схем данного прибора, но в целях обучения мы специально строим схему и делаем плату сами, основываясь на DATASHEET, выложенных проиводителем. Если вы копируете схему с какого либо другого сайта вы должны в ней разобраться, что и как там сделано, почему выкинули или добавили какие-то элементы.
Финальная схема
Саму схему вы можете посмотреть в файлах данного прибора. Здесь же приведем ее для комментирования основных узлов.
Основная часть:

Питание и разъемы:
Небольшие комментарии.
В качестве регулятора питания на 3.3в используем NCP603 — очень хороший LDO, выдает ток до 300ма с падением 300mv и точностью +-3%. Светодиоды индикации — обычные smd светодиоды двух цветов. Для программирования по UART необходимо вывод BOOT0 соединить с +3В, для этого выведем его на разъем. Также необходимо вывести сам UART — ножки RX TX. Все остальные выводы без защиты выведем на разъем. Пользуюсь этим программатором уже больше года, и кз были и помехи — ничего не сгорело ни разу.
В некоторых схемах ставится самовостанавливающийся предохранитель на питание от USB для защиты самого порта. Современные компьютеры имеют защиту на портах USB, в том числе предохранители и токовые ограничивающие ключи, так что он не нужен. Но лучше конечно не проверять это, и не ошибаться! Напряжение 3.3в идет с нашего LDO, который имеет защиту от КЗ и от перегрева, и не выдает больше 600ма, там тоже защищать нечего.
Очень удобно подключать STM8 для программирования с помощью ST-Link, нужно всего 3 провода — питание, земля и SWIM выход. Это так же удобно при разводке плат, можно разводить только SWIM выход, землю и питание всегда можно найти на плате.
Трассировка платы в Kicad с помощью автотрассировщика Topor
В приборе USB UART адаптер мы уже тренировались трассировать плату в Kicad вручную. Данный прибор чуть сложнее. На нем можно поучиться разводить плату в автотрассировщике TOPOR. Весь процесс лучше просмотреть на видео в конце статьи, здесь будут лишь небольшие комментарии к видео.
Подготовка платы к автотрассировке
Для того, чтобы работать с Topor, надо сначала подготовить плату в Kicad. Необходимо определить границы платы, импортировать все компоненты и предварительно их расположить. У нас нет требований к разъемам, поэтому на первом этапе лучше сам разъем удалить с платы. Так как каждый вывод разъема соединен через резистор, то резисторы и будут ориентиром выводов разъема. Также для расстановки компонент можно удалить все конденсаторы питания, кварцы, микросхемы питания (их лучше располагать на обратной стороне — там обычно много места) — это все можно расставить потом.
Теперь необходимо определить сторону кажого копонента. И примерно расположить их как необходимо, разъемы расположить у края. И на этом этапе можно все это перебросить в Topor и там продолжить размещение копонентов. USB разъем, светодиоды сразу располагаем на обратной стороне, все остальное на лицевой.
Размещение компонентов с помощью Topor
Теперь переносим это все в Topor и продолжаем там. Чем хорош Topor? Тем, что каждый раз, подвигав компоненты, можно перепроложить все трассы автоматически и посмотреть стало лучше или хуже. Также Topor умеет переворачивать простые компоненты — резисторы, конденсаторы. Нам важно понять как удобнее расположить выводы разъемов, и основные компоненты.
Покрутив и подвигав компоненты в Topor мы пришли к такому расположению:

Теперь необходимо этот результат перекинуть в Kicad обратно и добавить остальные компоненты. Перед финальной трассировкой необходимо:
-
расположить микросхемы питания
-
развести вручную цепи питания
-
распложить и подключить кварц, и конденсаторы питания
-
переопределить выводы разъема на схеме.
Автотрассировка
Перебрасываем нашу полутрассировку в Topor.
Необходимо сразу установить правила трассировки — ширину зазоров, дорожек, размеры переходных отверстий. При первом импорте из Kicad надо выделить все компоненты и зафиксировать их, чтобы можно было легко удалить кнопкой del и заново перепроложить трассировку, оставляя наш полуручной вариант. В параметрах автотрассировки обязательно необходимо установить галку «Использовать имеющуюся разводку в качестве начального варианта», иначе наши ручные трассы будут перепроложены (Сам процесс работы в Topor смотри на видео).
После автотрассировки перебрасываем все обратно и доводим до финального варианта — добавляем земляные полигоны, выравниваем где необходимо дорожки. Плата готова.
Финальный вариант платы
Лицевая сторона

Обратная сторона
Прошивка ST Link, установка драйверов
Плата готова, делаем ее методом холодного переноса тонера ацетоном (или любым другим), травим, собираем прибор. Перед первым включением, обязательно проверьте любым мультиметром, что между 5В и GND сопртивления нет (бесконечно велико) — это будет гарантировать, что нет короткого замыкания. Также надо проверить сопротивление между 3.3В и GND.
Для работы с нашим устройством необходимо установить драйвера, прошить его первый раз по UART стартовой прошивкой и потом обновить прошивку до последней версии специальной программой от ST.
Все микроконтроллеры STM32 имеют bootloader и прошиваются по UART. Для прошивки необходимо:
-
скачать с сайта ST программу «STM32 Flash loader demonstrator» по ссылке (необходимо зарегистрироваться у них на сайте).
-
установить ее, все как обычно — далее далее далее — готово.
-
подключить наш ST link для программирования временными проводками:
-
Соединяем выводы программирования PROG_RX и PROG_TX (см. схему в Kickad на github) и USB/UART модуль — наш RX на TX модуля, наш TX на RX модуля.
-
В USB ST Link не включаем, подключаем 5В с UART модуля и GND на любой наш разъем (например на разъеме SWIM есть 5В и GND) — то есть запитаем от нашего модуля (если у вас свой модуль без питания, то можно сразу подключить ST-Link в USB разъем, тогда надо будет только соединить TX и RX, только не забудьте на вашем модуле необходимо выбрать 3.3в)
-
Подключем BOOT0 на выход 3.3В (можно просто держать проводок при подключении питания) — это необходимо для перехода в bootloader
-
-
включаем USB/UART модуль в компьютер, указываем в программе Flash Loader наш COM порт, жмем далее — программа должна найти наш микроконтроллер, далее, выбираем download и загружаем прошивку STLinkV2.J16.S4.bin, выложенную на github прибора. Вот такие это выглядит в картинках:
Тут выбираем 64К.
а тут ставим переключатель на download и выбираем файл прошивки (маска файлов на *.bin)
Теперь у нас есть ST LINK, но со старой прошивкой. Убираем все провода. Скачиваем с сайта ST программу обновления прошивки STSW-LINK007 и драйвера STSW-LINK009 для windows. Вставляем новоиспеченный ST-Link в USB порт компьютера, и запускаем программу обновления прошивки, в ней жмем CONNECT и потом обновить прошивку до последней версии. Прибор ГОТОВ! Теперь у вас есть программатор-отладчик и можно перейти к программированию.
Готовое устройство
Самостоятельная работа
Потренируйтесь разводить плату. Сделайте это вручную, с помощью программы Topor и без. Вы должны уметь быстро делать любую несложную плату.
Содержание
- ST-Link V2 в маленьком корпусе
- Обязательно меняем провода на короткие
- Используем для соединения с STM32F103C8T6 только 4 провода (SWD интерфейс):
- Нет SWO трассировки
- Как обновить внутреннее ПО
- через программу ST-LINK Utility
- Обновление внутреннего ПО
- Если не работает ничего — пытаемся разобраться с дополнительными настройками
- Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link
- Программатор
- Ссылки
- 1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
- Микроконтроллер STM32F103C8. Характеристики
- На плате STM32F103C8 доступны
- Прошивка STM32 с помощью USB-Uart переходника под Windows
- Программное обеспечение для прошивки
- Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)
- Устанавливаем stm32flash
- Получить информацию о чипе
- Читаем с чипа в файл dump.bin
- Пишем в чип
- Прошивка STM32 с помощью ST-Link программатора под Windows
- Прошивка STM32 с помощью ST-Link программатора под Linux (Ubuntu)
- Устанавливаем софт для работы с ST-Link
- Проверяем видно ли программатор и чип
- Читаем с чипа в файл dump.bin
- Программируем STM32
- Памятка
- Документация
- Что можно почитать
- Маркировка STM32
- Как снять защиту от записи / чтения?
ST-Link V2 в маленьком корпусе
Самый недорогой программатор/отладчик ST-Link V2 на примере STM32F103CBT6.
Обязательно меняем провода на короткие
Итак первым делом меняем провода для соединения ST-LINK V2 с STM32F103C8T6 на короткие 10см.
Используем для соединения с STM32F103C8T6 только 4 провода (SWD интерфейс):
3.3V — 3.3V
GRD — GRD
SWDIO- DIO
SWCLK- CLK
Нет SWO трассировки
То есть не выведен отдельный провод PB3 SWO из программатора наружу.
Но в принципе программно SWO реализован внутри программатора. Только воспользоваться им нельзя. Белый провод это он и есть , а как подпаятся к ножке микросхемы программаторы вопрос .
Как обновить внутреннее ПО
через программу ST-LINK Utility
Проверяем сначала связь с контроллером программой ST-LINK Utility:
Обе перемычки на STM32F103C8T6 в положении 0
запускаем, жмем Connect и все определяется ОК
щелкаем Settings и видим, что устройство определяется автоматически корректно (см.скриншот) , port = SWD, target Voltage=3.2V и т.д.
Обновление внутреннего ПО
Чтобы сделать Firmware Update в программе ST-LINK Utility надо установить перемычку в положение 1 (режим DFU). В результате должно получится примерно так, кнопка Yes активна:
Иногда , почему-то не удается сделать Firmware Update. Но помогает — закрытие всех программ, перезагрузка ПК (танцы с бубном).
По-видимому надо разобраться что устанавливать? — Hardware Reset (при SoftWare Reset у меня не срабатывает).
Важно! — в ST-Link V2 после прошивки (через Stm32-Link Utility) сохраняются старые настройки Mode (Normal|Hot Plug|Connect Undr Reset) и Reset Mode (Software System Reset|Core Reset|Hardware Reset).
Если не работает ничего — пытаемся разобраться с дополнительными настройками
Mode : Connect Under Reset можно выставить только с Reset Mode : Hardware Reset (Похоже по смыслу , что это тот самый режим когда надо ручками кнопку Reset нажимать и перемычка в 1 д/б).
The “Connect Under Reset” option allows to connect to the target using a reset vector catch before executing any instruction. This is useful in many cases like when the target contains a code that disables the JTAG/SWD pins.
Т.е. это похоже когда программа в начале своего исполнения отключает SWD возможности. Понятно отладка тут не будет возможна.
Mode : Normal возможен с Reset Mode : (Software System Reset|Core Reset|Hardware Reset) .
With “Normal” connection mode, the target is rest then halted. The type of reset is selected using the “reset Mode” option.
Mode : Hot Plug возможен с Reset Mode : (Software System Reset|Core Reset|Hardware Reset)
The “Hot Plug” option allows to connect to the target without halt or reset. This is useful to update the RAM addresses or the IP registers while the application is running.
И мы понимаем, что Hot Plug — пока этот режим нам не нужен никак.
Итак режим (Mode) и Reset Mode настраивается именно в ST-Link V2 через Stm32-Link Utility.
В Keil надо соответственно этому указать настройки.
Источник
Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link
Допустим, копая просторы Интернета, нашли мы очень интересное электронное устройство на микроконтроллере STM32, причем и все схемы, и прошивка прилагается. Но вот незадача, никогда мы не занимались загрузкой прошивки в STM32, раньше работали только с AVR-ками. Не беда! В этой статье мы разберемся в этом вопросе, ведь загружать готовую прошивку в STM32 не сложнее, чем в старые добрые AVR-ки, а может даже и проще! 😉 Итак, поехали! Предыдущая статья здесь, все статьи цикла можно посмотреть тут: http://dimoon.ru/category/obuchalka/stm32f1.
Программатор
В предыдущей части мы познакомились с несколькими вариантами программатора ST-Link. В данном примере в качестве программатора я буду использовать отладочную плату stm32f4discovery, просто потому, что она у меня есть. Для того, чтобы использовать эту отладочную плату в качестве программатора, нужно сделать 2 вещи:
- Снять перемычки, соединяющие линии программирования встроенного ST-Link-а с микроконтроллером, распаянным на плате
- С помощью гребенки, на которую выведена шина SWD, подключить сигнальные линии программатора к внешнему микроконтроллеру
На картинке, приведенной далее, показана распиновка разъема SWD:
На китайских отладочных платах с микроконтроллером stm32f103c8 имеется соответствующий разъем, через который можно загрузить прошивку в МК. Эти платы выглядят примерно так:
Пины на разъеме программирования подписаны как GND, CLK, DIO, 3V3. Соединение с программатором выполняется вот таким образом:
У меня макеты выглядят вот так:
В данном случае отладочная плата с 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
Источник
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 доступны
Скачать тестовый файл для прошивки можно здесь. Программа мигает светодиодом на плате.
Прошивка STM32 с помощью USB-Uart переходника под Windows

Подключаем RX и TX выходы к соответствующим выводам USART1 микроконтроллера. RX переходника подключаем к TX микроконтроллера (A9). TX переходника подключаем к RX микроконтроллера (A10). Поскольку USART-USB имеет выходы питания 3.3В подадим питания на плату от него.
Чтобы перевести микроконтроллер в режим программирования, надо установить выводы BOOT0 и BOOT1 в нужное состояние и перезагрузить его кнопкой Reset или выключить и включить питание микроконтроллера. Для этого у нас есть перемычки. Различные комбинации загоняют микроконтроллер в различные режимы. Нас интересует только один режим. Для этого у микроконтроллера на выводе BOOT0 должно быть логическая единица, а на выводе BOOT1 — логический ноль. На плате это следующее положение перемычек:
После нажатия кнопки Reset или отключения и подключения питания, микроконтроллер должен перейти в режим программирования.
Программное обеспечение для прошивки
После включения схемы с правильно выставленными перемычками контроллер готов к работе с Flash Loader Demonstrator.
Запускаем Flash Loader Demonstrator и выбираем порт с которым будем работать, и устанавливаем параметры порта.
После выбора параметров порта нажимаем Next после чего должны увидеть «светофор» и информацию по микроконтроллеру. Если этого не происходит, тогда проверяем корректность установленных параметров связи и проверяем действительно ли микроконтроллер введен в режим программирования.
Нажимаем Next,
На этой странице выбираем файл для загрузки в микроконтроллер. Файл может быть в формате bin или hex.
Нажимаем Next и ждем.

Чтобы вывести контроллер из режима программирования, возвращаем перемычки в исходное состояние и нажимаем кнопку Reset. Программа в микроконтроллере должен заработать.
Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)
Устанавливаем stm32flash
Если используем USB-UART переходник, имя порта буде примерно такое /dev/ttyUSB0
Получить информацию о чипе
Читаем с чипа в файл dump.bin
Пишем в чип
Прошивка 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
Пришлось устанавливать autoconf и libusb-1.0:
Проверяем видно ли программатор и чип
Читаем с чипа в файл dump.bin
Программируем 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 |
UPD:
Как снять защиту от записи / чтения?
Я это буду делать из под Ubuntu с помощью утилиты stm32flash.
1. Проверяем видно ли микроконтроллер:
Должны получить что-то такое:
2. Снимаем защиту от чтения а затем от записи:
Теперь можно нормально работать с микроконтроллером.
Источник
ST-LINK/V2 это внутрисхемный отладчик и программатор для микроконтроллеров STM8 и STM32. Однопроводный интерфейс (single wire interface module, SWIM) и JTAG/SWD (SWD это сокращение от serial wire debugging) реализуют коммуникацию с любым микроконтроллером STM8 или STM32, работающим на плате конечной системы.
В дополнение к функционалу ST-LINK/V2, новая версия ST-LINK/V2-ISOL реализует изоляцию цифрового интерфейса между PC и целевой программируемой платой. Изоляция выдерживает напряжения до 1000 VRMS.
Интерфейс USB full-speed осуществляет обмен между компьютером PC разработчика и:
• Устройствами STM8 через ПО ST Visual Develop (STVD) или ST Visual Program (STVP). Это ПО поставляется компанией STMicroelectronics (ST).
• Устройствами STM32 в средах разработки Atollic®, IAR™, Keil® и TASKING®.
Рис. 1. Отладчики ST-LINK/V2 и ST-LINK/V2-ISOL.
Отладчик ST-LINK также встроен в оценочные платы разработчика STM32Fxxx Discovery [2]. Вот так выглядит отладчик ST-LINK/V2-B на плате STM32F429 Discovery (компоненты отладчика выделены желным прямоугольником):
Функциональные возможности ST-LINK:
• Питание 5V подается от хоста PC через коннектор USB.
• Подключение USB 2.0 full speed через кабель USB standard A — Mini-B.
• Функции интерфейса отладки SWIM:
– поддерживаются уровни от 1.65V до 5.5V;
– поддерживаются режимы скорости SWIM low-speed и high-speed;
– скорость программирования: 9.7 килобайт/сек на low speed и 12.8 килобайт/сек на high speed;
– подключение к отлаживаемой плате осуществляется через кабель стандартный вертикальный ERNI (ref: 284697 или 214017) или горизонтальный (ref: 214012), либо через коннектор со стандартным шагом выводов 2.54 мм.
• Функции интерфейса отладки JTAG/SWD:
– поддерживаются уровни 1.65V .. 3.6V на выходах, и входы допускают напряжения до 5V (5V tolerant inputs);
– 20-выводный JTAG кабель с шагом выводов 2.54 мм;
– поддерживаются коммуникации JTAG, SWD и SWV.
• Поддерживается непосредственное обновление прошивки (Direct Firmware Update, DFU).
• Светодиоды состояния (Status LED), которые мигают во время обмена с PC.
• Рабочий диапазон температур 0 .. 50°C.
Таблица 1. Информация для закупки.
Order code Описание варианта ST-LINK
ST-LINK/V2 Внутрисхемный отладчик/программатор.
ST-LINK/V2-ISOL Внутрисхемный отладчик/программатор с гальванической развязкой.
[Что входит в комплект отладчика]
Поставляемые компоненты показаны на рис. 2 и рис. 3. Это следующие элементы (перечислены слева направо):
• Стандартный кабель USB A — USB Mini-B (A).
• Отладчик ST-LINK/V2 (B).
• Коннектор SWIM (C).
• Плоский кабель SWIM со стандартным коннектором ERNI (D).
• Плоский кабель JTAG или SWD и SWV flat ribbon with a 20-pin connector (E).
Рис. 2. Комплект ST-LINK/V2.
Рис. 3. Комплект ST-LINK/V2-ISOL.
[Конфигурирование]
ST-LINK/V2 разработан на микроконтроллере STM32F103C8 (высокопроизводительное ядро Arm®(a) Cortex®-M3). Он доступен в корпусе TQFP48. Как показано на рис. 4, у ST-LINK/V2 есть два коннектора:
• Коннектор STM32 для интерфейса JTAG/SWD и SWV.
• Коннектор STM8 для интерфейса SWIM.
У ST-LINK/V2-ISOL один коннектор для интерфейсов STM8 SWIM, STM32 JTAG/SWD и SWV.
Рис. 4. Коннекторы ST-LINK/V2 (слева) и ST-LINK/V2-ISOL (справа).
A: Коннектор STM32 JTAG и SWD для подключения к целевой плате.
B: Коннектор STM8 SWIM для подключения к целевой плате.
C: Коннектор STM8 SWIM, STM32 JTAG и SWD для подключения к целевой плате.
D: светодиод, показывающий активный обмен.
Для разработки приложений на микроконтроллерах STM8 отладчик ST-LINK/V2 можно подключить к целевой плате двумя разными кабелями, в зависимости от того, какой коннектор установлен на плате устройства. Это следующие кабели:
• Плоский кабель SWIM, на одном из концов которого стоит стандартный коннектор ERNI.
• 4-контактный кабель SWIM с шагом 2.54 мм или кабель SWIM с отдельными проводами.
На рис. 5 показано, как подключить ST-LINK/V2, если на целевой плате находится стандартный коннектор ERNI 4-pin SWIM.
Рис. 5. Соединение ERNI.
A: целевая плата системы с коннектором ERNI.
B: кабель с коннектором ERNI.
C: целевой коннектор STM8 SWIM.
Также см. рис. 11 во врезке «Дополнительная техническая информация».
Рис. 6 показывает, что на целевом коннекторе ST-LINK/V2-ISOL вывод 16 отсутствует. Этот отсутствующий вывод используется как ключ безопасности коннектора, гарантирующий правильную ориентацию коннектора SWIM при подключении. Этот ключ безопасности используется на кабелях SWIM и JTAG.
Рис. 6. Ключ безопасности на коннекторах.
Дешевый вариант SWIM-подключения. Рис. 7 показывает, как подключить ST-LINK/V2, если на плате стоит 4-выводный коннектор с шагом выводов 2.54 мм.
Рис. 7. Недорогое SWIM-подключение.
A: целевая плата системы, на которой установлен коннектор с шагом выводов 2.54 мм.
B: 4-проводный кабель, или подключение отдельными проводами.
C: целевой коннектор STM8 SWIM.
Также см. рис. 12 во врезке «Дополнительная техническая информация».
Сигналы и соединения SWIM. Таблица 2 дает общее описание SWIM: имена сигналов, функции и сигналы целевой платы при использовании 4-проводного кабеля и 4-выводного коннектора.
Таблица 2. SWIM-соединение с ST-LINK/V2.
| Pin | Имя сигнала | Функция | Соединение с целевой платой |
| 1 | VDD | VCC целевой платы(1) | VCC микроконтроллера |
| 2 | DATA | SWIM | Вывод SWIM микроконтроллера |
| 3 | GND | Земля | GND |
| 4 | RESET | Сброс | Вывод RESET микроконтроллера |
Примечание (1): источник питания целевой платы подключен к плате отладчика ST-LINK/V2 для гарантии совместимости уровней между платой и отладчиком.
Рис. 8. Целевой коннектор SWIM.
Таблица 3 показывает имена сигналов, функции и соединения сигналов с целевой платой при использовании кабеля с отдельными проводами. Поскольку у кабеля SWIM с отдельными проводами есть независимые коннекторы для каждого сигнала, то можно подключить ST-LINK/V2-ISOL к целевой плате, на которой нет стандартного SWIM-коннектора. На таком плоском кабеле все сигналы имеют разные цвета и отдельную метку, что упрощает подключение к целевой системе.
Таблица 3. Соединения ST-LINK/V2-ISOL недорогим кабелем SWIM.
| Цвет | Имя сигнала кабеля | Функция | Соединение с целевой платой |
| Красный | TVCC | VCC целевой платы(1) | VCC микроконтроллера |
| Зеленый | UART-RX | Не используется | Зарезервировано(2) (не подключается к целевой плате) |
| Синий | UART-TX | ||
| Желтый | BOOT0 | ||
| Оранжевый | SWIM | SWIM | Вывод SWIM микроконтроллера |
| Черный | GND | Земля | GND |
| Белый | SWIM-RST | RESET | Вывод RESET микроконтроллера |
Примечания:
(1) Источник питания целевой платы подключен к плате отладчика ST-LINK/V2 для гарантии совместимости уровней между платой и отладчиком.
(2) BOOT0, UART-TX и UART-RX зарезервированы для использования в будущих разработках.
TVCC, SWIM, GND и SWIM-RST могут быть подключены дешевым коннектором с шагом 2.54 мм, установленным на целевой плате.
Для разработки программ на основе микроконтроллеров STM32 отладчик ST-LINK/V2 должен быть подключен к целевой системе стандартным 20-выводным плоским кабелем JTAG.
Таблица 4 показывает имена сигналов, функции и соединения сигналов с целевой платой при использовании стандартного 20-выводного кабеля JTAG.
Таблица 4. Соединения кабелем JTAG/SWD.
| Pin | Коннектор ST-LINK/V2 (CN3) | Функция ST-LINK/V2 | Соединение с целевой платой JTAG | Соединение с целевой платой SWD |
| 1 | VAPP | VCC целевой платы |
VDD микроконтроллера(1) | VDD микроконтроллера(1) |
| 2 | ||||
| 3 | TRST | TRST JTAG | JNTRST | GND(2) |
| 4 | GND(3) | GND(3) | GND(3)(4) | GND(3)(4) |
| 5 | TDI | JTAG TDO | JTDI | GND(2) |
| 6 | GND(3) | GND(3) | GND(3)(4) | GND(3)(4) |
| 7 | TMS_SWDIO | JTAG TMS, SWDIO | JTMS | SWDIO |
| 8 | GND(3) | GND(3) | GND(3)(4) | GND(3)(4) |
| 9 | TCK_SWCLK | JTAG TCK, SWCLK | JTCK | SWCLK |
| 10 | GND(5) | GND(5) | GND(4)(5) | GND(4)(5) |
| 11 | Не подключено | |||
| 12 | GND | GND | GND(4) | GND(4) |
| 13 | TDO_SWO | JTAG TDI, SWO | JTDO | TRACESWO(6) |
| 14 | GND(5) | GND(5) | GND(4)(5) | GND(4)(5) |
| 15 | NRST | NRST | NRST | NRST |
| 16 | GND(3) | GND(3) | GND(3)(4) | GND(3)(4) |
| 17 | Не подключено | |||
| 18 | GND | GND | GND(4) | GND(4) |
| 19 | VDD(3) | VDD (3.3 V)(3) | Не подключено | |
| 20 | GND | GND | GND(4) | GND(4) |
Примечания:
(1) источник питания целевой платы подключен к плате отладчика ST-LINK/V2 для гарантии совместимости уровней между платой и отладчиком.
(2) Подключается к GND для снижения шума в кабеле.
(3) Доступно только на ST-LINK/V2, не подключено на ST-LINK/V2-ISOL.
(4) Для правильной работы как минимум один вывод должен быть подключен к земле (рекомендуется подключить все).
(5) GND ST-LINK/V2, используемый SWIM на ST-LINK/V2-ISOL (см. таблицу 3).
(6) Опционально: для трассировки Serial Wire Viewer (SWV).
Рис. 9 показывает, как соединить ST-LINK/V2 с целевой системой кабелем JTAG.
Рис. 9. Соединение JTAG и SWD.
A: целевая отлаживаемая плата с коннектором JTAG.
B: плоский 20-выводный кабель JTAG/SWD.
C: целевой коннектор STM32 JTAG и SWD.
Рис. 10. Нумерация выводов коннектора JTAG (вид на контакты коннектора с верхней стороны платы).
Для некоторых систем стандартный 20-выводный коннектор с шагом выводов 2.54 мм слишком велик, и разработчики часто предпочитают коннектор с уменьшенным количеством выводов (например 10 контактов вместо 20). Для отладчиков ST-LINK/V2 или ST-LINK/V2-ISOL есть адаптер Tag-Connect и кабель, упрощающие подключение отладчика к целевой плате без необходимости установки на плату большого разъема.
Для дополнительной информации об этом решении и цоколевке посетите сайт www.tag-connect.com. Компоненты, совместимые с интерфейсами JTAG и SWD:
a) Адаптер TC2050-ARM2010 (переходник 20 в 10 выводов).
b) TC2050-IDC или TC2050-IDC-NL (No Legs, без ножек), 10-выводный кабель.
c) TC2050-CLIP с клипсой для использования с TC2050-IDC-NL (опционально).
Индикационный светодиод ST-LINK/V2. Светодиод, помеченный «COM» на верхней стороне ST-LINK/V2, показывает его состояние (независимо от типа соединения):
• Светодиод мигает красным: происходит энумерация USB на хосте PC.
• Светодиод красный: установлено соединение между PC и ST-LINK/V2 (энумерация закончилась).
• Светодиод мигает зеленым/красным: идет обмен между целевой платой и PC.
• Светодиод зеленый: последнее соединение прошло успешно.
• Светодиод оранжевый: обмен ST-LINK/V2 с целевой платой был неудачным.
[Обновление прошивки]
В ST-LINK/V2 встроен механизм обновления прошивки отладчика (firmware) через порт USB. Поскольку firmware во время жизни продукта ST-LINK/V2 может развиваться (новый функционал, исправление ошибок, добавление поддержки новых семейств микроконтроллеров, …), то рекомендуется периодически посещать специальные странички www.st.com, чтобы следить за появлением свежей версии firmware.
[Средства разработки]
Для STM8. См. ST toolset Pack24 с патчем 1 или более свежий, который включает в себя ST Visual Develop (STVD) и ST Visual Programmer (STVP).
Для STM32 и программирования Flash. Инструментарий сторонних производителей: Atollic® TrueSTUDIO®, IAR™ EWARM, Keil® MDK-ARM™ и TASKING® VX-toolset поддерживают ST-LINK/V2 в соответствии с версиями, как это показано в таблице 5.
Таблица 5. Поддержка сторонними разработчиками ST-LINK/V2.
| Разработчик | Тулчейн/IDE | Версия |
| Atollic® | TrueSTUDIO® | 2.1 |
| IAR™ | EWARM | 6.20 |
| Keil® | MDK-ARM™ | 4.20 |
| TASKING® | VX-toolset for Arm® Cortex®-M | 4.0.1 |
Отладчик ST-LINK/V2 требует для себя специального драйвера USB. Если установленный инструментарий также устанавливает этот драйвер автоматически, то он записывает файл stlink_winusb.inf в каталог inf папки Windows.
Если инсталлятор не устанавливает драйвер, то драйвер можно найти на сайте www.st.com:
1. Откройте в браузере страничку www.st.com.
2. На закладке «Поиск» (search), в поле part number найдите ST-LINK/V2.
3. Кликните на ссылку в столбце Generic Part Number для ST-LINK/V2.
4. На закладке «Design support», в секции «SW drivers» кликните на иконку загрузки, чтобы загрузить архив с драйвером (файл с именем наподобие en.stsw-link009.zip).
5. Распакуйте и запустите инсталлятор dpinst_x86.exe или dpinst_amd64.exe в зависимости от 32-битной или 64-битной версии операционной системы Windows.
Рис. 11. Стандартный кабель SWIM ST-LINK/V2 с коннектором ERNI.
Рис. 12. Дешевый кабель SWIM ST-LINK/V2.
VDD: сигнал для определения напряжения питания целевой платы.
DATA: сигнал данных SWIM DATA для обмена между целевой платой и отладчиком.
GND: напряжение земли.
RESET: сигнал сброса целевой платы.
[Ссылки]
1. UM1075 User manual ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32 site:st.com.
2. STM32F429 Discovery.


















































