Тёмный

DIY. Программируем STM32 без программатора через UART и DFU (USB) 

NR.electronics
Подписаться 19 тыс.
Просмотров 19 тыс.
50% 1

Данное видео DiY показывает как можно запрограммировать самостоятельно микроконтроллер от STM32 без использования каких-либо программаторов ST-Link через интерфейсы UART (USART) и протокол DFU, через USB. Рассмотрены примеры программирования МК STM32F103 - BluePill, STM32F411 - BlackPill, STM32F407VGT6.
Материал видео - папка "Program STM32 without a programmer via UART and DFU (USB)":
github.com/nr-...

Опубликовано:

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 106   
@LukasAleks
@LukasAleks 3 года назад
Большое спасибо Вам за данный видеоматериал. Всё доступно объяснили.
@NRelectronics
@NRelectronics 3 года назад
Пожалуйста. Главное, что материал в строгом соответствии с документацией на микроконтроллер, а не как у других.
@valera_kardan
@valera_kardan 2 года назад
@@NRelectronics Что будет если подключить плату без нажатия BOOT0?
@backslash5261
@backslash5261 4 года назад
Спасибо за видео! Делайте еще! Про дисплеи обещали, я жду _)
@NRelectronics
@NRelectronics 4 года назад
Будут конечно!
@Voha
@Voha 4 года назад
Недавно у одного дедушки выходило подобное видео, но там как то не очень, а на этом канале всегда попадается годная инфа, так что сейчас гляну)
@NRelectronics
@NRelectronics 4 года назад
Ага, сейчас он прочитает как вы его обозвали и обидется)))) Кстати, его видео, название, не соответствует его содержанию. Облажался конкретно. Я просто снял как правильно эти технологии работают.
@Voha
@Voha 4 года назад
@@NRelectronics спасибо Вам за поясняющий ответ, а то меня грызла совесть, что я его видос в перемотке отрывками смотрел, но успел наехать)) У Вас же как всегда правильный подход и чёткая структурированная подача материала, которая расширяет кругозор. Смотрю Ваш канал редко, т.к. знаю, что тут надо внимательно слушать/смотреть "от и до", чтоб ничего не пропустить
@Dmitriy_KIPiA
@Dmitriy_KIPiA 4 года назад
@@NRelectronics я так понимаю имя этого дедушки начинается на букву "В"??)
@NRelectronics
@NRelectronics 4 года назад
желательно внимательно конечно смотреть. Так как все кроется в деталях...
@Voha
@Voha 4 года назад
@@Dmitriy_KIPiA есть такая буква. Вращайте барабан!
@sergeypoltarakov1432
@sergeypoltarakov1432 2 года назад
Спасибо большое!!! Очень пригодилось !!!
@NRelectronics
@NRelectronics 2 года назад
Пожалуйста) Смотрите дальше))
@verwolf1889
@verwolf1889 Месяц назад
А почему 128кб памяти пишет если у нее 64 ? Если в опции таргет выбрать не 128 а 64 --- это повлияет на загрузку или выгрузку прошивки из или в мк ?
@NRelectronics
@NRelectronics Месяц назад
У меня плата значит с индексом CB
@AndySm1973
@AndySm1973 4 года назад
Спасибо! А в каком документе указана конфигурация BOOT0/BOOT1 для перевода в DFU mode
@NRelectronics
@NRelectronics 4 года назад
В любом Reference Manual. Например для контроллеров STM32G0x1 это RM0444 Reference Manual.pdf. На странице 60 подробно описано. По аналогии и в других даташитах на МК.
@AndySm1973
@AndySm1973 4 года назад
@@NRelectronics да, нашел, спасибо!
@RoonBoh
@RoonBoh 2 года назад
Здравствуйте, на текущий момент если следовать вашей информации по BlackPill, то драйвер от ST-CubeProg не работает "код ошибки 28", а когда мы со свежей версии устанавливаем драйвер то он не работает в StCubeProg. Вы не могли бы выложить свой драйвер?
@NRelectronics
@NRelectronics 2 года назад
Здравствуйте. Попробуйте платку поменять, возможно дело в ней.
@alexexnew
@alexexnew 7 месяцев назад
Спасибо, сделал так чтобы на мою F411 загружался код из Arduino IDE
@NRelectronics
@NRelectronics 7 месяцев назад
Отлично, молодцы.
@Serg-978
@Serg-978 2 года назад
А как определить в каком режиме прошивается STM32F103C8T6, если контакты мини-USB подключены к PA11/PA12 и само устройство (KW600) как при штатной прошивке, так и при работе определяется в ПК всегда как Virtual COM. Значит прошивка идет через USART1_CTS/USART1_RTS? У Вас есть про это видео?
@NRelectronics
@NRelectronics 2 года назад
У меня нет видео про конкретно ваше устройство, kw600. CTS и RTS не нужны выводы для прошивки, эти выводы другой функционал в порту RS-232 выполняют.
@Serg-978
@Serg-978 2 года назад
@@NRelectronics Вопрос был в том, как можно выгрузить прошивку из STM32F103C8T6 через PA11/PA12 через USB (Virtual COM). Какой программой?
@NRelectronics
@NRelectronics 2 года назад
таким образом никак. На просторах интернет такой способ даже не встречал.
@ЭльМеф
@ЭльМеф 8 месяцев назад
А как включить терминал USART в Cubeide
@NRelectronics
@NRelectronics 8 месяцев назад
Изначально он включенный, нужно только перейти в соответствующее окно и выбрать номер com-порт и его открыть.
@ЭльМеф
@ЭльМеф 8 месяцев назад
@@NRelectronics А в какое окно.Где настройка терминала находится в какой опции?
@NRelectronics
@NRelectronics 8 месяцев назад
Посмотрите моё видео на канале: "STM32CubeIDE. Установка, настройка и отладка. Часть 1" на метке 22:05
@GoldCordon
@GoldCordon 2 года назад
пять раз провернул эту последовательность и все равно в диспетчере устройств не находит плату, пишет "Неизвестное USB-устройство...."
@NRelectronics
@NRelectronics 2 года назад
Что за плата? Драйвера установили?
@АлексейСлесаревич
Здравствуйте, возможно у вас та же ситуация что и у меня. Моя BlackPill грузится в DFU только если зажать не только BOOT0, но и KEY. Возможно у вас так же. Я зажал KEY + BOOT0, и потом поставил дрова из директории где лежит CubeProgrammer. Пока работает исправно
@sergeygrechishnikov282
@sergeygrechishnikov282 2 года назад
Спасибо за видео. Вопрос возник, как лучьше организовать связь с ПК(Windows, Linux), для получения команд от ПК и для отправки данных на ПК (USART, UART, I2C?); Если я где-то пропустил ваш урок по этой теме, прошу пардону)))
@NRelectronics
@NRelectronics 2 года назад
Спасибо Обычно делают связь терминальной программой, их море, на вкус и цвет как говориться через преобразователь UART-USB. Тоже любой, в роликах они у меня были. Могу посоветовать самый дешёвый за 100₽ и вполне приличный...
@sergeygrechishnikov282
@sergeygrechishnikov282 2 года назад
@@NRelectronics Спасибо было бы неплохо если посоветуете хороший вариант преобразователя. Моя идея такая, для обмена данными использовать Cmsis или LL, со стороны ПК это будет QserialPort.
@NRelectronics
@NRelectronics 2 года назад
116,20 руб. 22%СКИДКА | Преобразователь MICRO USB/UART TTL, 1 шт., 6Pin, для Arduino a.aliexpress.com/_AFdCxK
@sergeygrechishnikov282
@sergeygrechishnikov282 2 года назад
@@NRelectronics Спасибо!
@NRelectronics
@NRelectronics 2 года назад
Пожалуйста, обращайтесь 😉✌
@Wingtiger7
@Wingtiger7 4 года назад
как заливать код в озу?
@NRelectronics
@NRelectronics 4 года назад
Boot 0 и Boot 1 установить в единицу.
@Wingtiger7
@Wingtiger7 4 года назад
@@NRelectronics а дальше? Залилось на флеш
@NRelectronics
@NRelectronics 4 года назад
а дальше все зависит от того как вы сами реализовали то.
@Sergey_Evdokimenko
@Sergey_Evdokimenko 3 года назад
ссылка "Материал видео:" уже не работает, к сожалению
@NRelectronics
@NRelectronics 3 года назад
Спасибо за фидбэк. Поправил, проверяйте.
@dr.emmettbrown8466
@dr.emmettbrown8466 4 года назад
Для отладочных плат вопросов нет, а вот как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия, вот это вопрос. Мне только приходит на ум доп. МК типа STM32F0xx за ~35 руб. + microSD. STM32F0 читает прошивку с microSD по SPI, прижимает ногу BOOT0 основного МК и заливает прошивку по любому удобному протоколу. Кмк, способы из видео слишком сложны для конечного не подготовленного пользователя
@sozdatelEd
@sozdatelEd 4 года назад
FLASH контроллера разделяем на 2 части. Таким образом будет своя программа-загрузчик, которая начнёт работать при включении питания по адресу 0x08000000 и основная программа по адресу например 0x08002000. При включении начинает работать наш собственно написанный загрузчик, который проверяет наличие новой прошивки (например на подключенной SD-карте памяти). Если есть новая прошивка, то наш загрузчик затирает область памяти, отведённую для основной программы и записывает туда новую прошивку. После записи прошивки или если новой прошивки с момента включения не обнаружено мы прыгаем по адресу исполнения основной программы и переносим вектора прерываний. Всё. Даже если будет неисправна основная программа устройство не станет кирпичом. В таком случае после изготовления устройства необходимо записать наш загрузчик. Для клиента пишем свою инструкцию по обновлению ПО. "как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия" - я делил FLASH stm32f103c8t6 на 3 блока и в первом организовывал загрузчик, во втором блоке основная программа и третий блок был отведён для файловой системы. Загрузчик при включении определял подключено ли устройство к USB и если подключено, то оно обнаруживалось как обычная флешка. Клиент записывал на неё криптованную прошивку. Далее при включении устройства от основного питания загрузчик определял, что устройство не подключено к USB и есть новая прошивка, проверял её целостность и стирал часть FLASH отведённую для основной программы, декодировал прошивку и записывал её в нужную область, затирал файл прошивки. Далее запускалась основная программа. На все манипуляции по смене прошивки уходило менее 2 секунд при старте устройства. Удорожания конструкции минимальны - USB-разъём и обвязка по мелочи.
@NRelectronics
@NRelectronics 4 года назад
по UART конечно посложнее чем через DFU. А эту простую прошивку или способ заливки Вы как предлагаете организовать по простому?
@dr.emmettbrown8466
@dr.emmettbrown8466 4 года назад
@@NRelectronics Схематично так: 1. 1-й МК управляет не только загрузкой но и питанием основного МК, например через мосфет (принцип как на материнках мультиконтроллер) 2. При старте проверка SD, если нет новой прошивки, то просто подает питание на основной МК (да, потеря в скорости загрузки, но и хрен с ней) 3. Если есть, то работаем с ножкой BOOT0 основного МК, подаем питание и работаем как бы буфером, читаем по SPI с карты и передаем по UART (в принципе, судя по даташит, UART можно заменить на SPI или I2C) Повторюсь, DFU классная тема, но ИМХО абсолютно не приемлема для конечного и неподготовленного КОНЕЧНОГО пользователя.
@Sergey_Evdokimenko
@Sergey_Evdokimenko 4 года назад
очень полезно особенно про DFU спасибо
@NRelectronics
@NRelectronics 4 года назад
пожалуйста. По DFU нужен один джампер/кнопка/переключатель и рабочий usb плавно превращается в шорты))) ... в разъем для программирования...
@Shinsei75
@Shinsei75 4 года назад
Когда из 103 делаешь Black Magic Probe, на него программа заливается по dfu и залилась нормом. Это загрузчик нельзя, а программу можно таким образом заливать
@NRelectronics
@NRelectronics 4 года назад
разъясните пожалуйста по подробней что там по Black Magic Probe как там делается? интересно тоже.
@Shinsei75
@Shinsei75 4 года назад
NR.electronics я свой делал по этой рекомендации xelin.ru/content/1246. Лоадер прошивал через конвертер, а саму программу как ДФУ через юсб шил.
@NRelectronics
@NRelectronics 4 года назад
Ваша ссылка к сожалению не работает...
@Shinsei75
@Shinsei75 4 года назад
NR.electronics странно, на днях ещё работала, может с сервером у них сбой? Попробуйте вот эту, itnan.ru/post.php?c=2&p=292459
@NRelectronics
@NRelectronics 4 года назад
Спасибо! Почитал. Интересная тоже реализация. Расстраивает только что МК в нем меньше чем в J-Link`е. А так классно.
@lite_go_9565
@lite_go_9565 4 года назад
Отличное видео, Спасибо
@NRelectronics
@NRelectronics 4 года назад
Спасибо.
@TimofeiM-f2q
@TimofeiM-f2q 6 месяцев назад
Добрый день, подскажите пожалуйста, можно ли STLinkом залить прошивку в STM32F103VET6 просто подпаявшись к соодтветствующим выводам ( 5V VDD(49),VSS(50 GND), CLK (76), DIO (72). Или обязательно её распаивать на плату с обвязкой?
@NRelectronics
@NRelectronics 6 месяцев назад
Добрый день. О какой именно обвязке вы говорите? Там напрямую от стлинка подключаются к микроконтроллеру на выводы swd.
@СергийСергос
@СергийСергос 4 года назад
Спасибо, очень интересная тема для новичка, жду новых видео как праздник!!!)))
@СергийСергос
@СергийСергос 4 года назад
Ссылка не работает на гитхаб((
@NRelectronics
@NRelectronics 4 года назад
она верная, но ютуб её сокращает и она не работает почему-то... Материал видео: github.com/nr-electronics/DiY/tree/master/Program%20STM32%20without%20a%20programmer%20via%20UART%20and%20DFU%20(USB)
@hammerman125rus
@hammerman125rus 2 года назад
Спасибо за видео! Функционал DFU встроен в загрузчик? В CubeMX при настройке пинов не нужно задавать этот режим? У меня black pill F401
@NRelectronics
@NRelectronics 2 года назад
Аппаратно встроен. Наличие только в даташите надо уточнять. В блэкпиле есть вроде.
@Галичанскийсифилис
Привет.А ты не пробовал подключать внешнюю NAND флеш к stm32 контроллеру ?
@NRelectronics
@NRelectronics Год назад
Привет. Ещё пока нет. Всё правда лежит...
@hieverybody359
@hieverybody359 2 года назад
Можно ли прошить сразу несколько мк стм32 одновременно, при том что id нужно присвоить каждому уникальный? Если да то как это реализовать на практике?
@NRelectronics
@NRelectronics 2 года назад
Наверное можно, такой непрерывной оригинальной серийкой не занимался.
@ДимБеседин
@ДимБеседин Год назад
Простите если вопрос глуп сидел на мегах прошивал ЛПТ порт используя с преобразователем уровней ...можно ли такой же финт ушами с 32 сделать
@NRelectronics
@NRelectronics Год назад
Не глупый вопрос. Параллельной шиной нельзя прошить STM32. Можно преобразователем COM-uart если что.
@ДимБеседин
@ДимБеседин Год назад
@@NRelectronics спасибо ...
@NRelectronics
@NRelectronics Год назад
Пожалуйста. Не стесняйтесь задавать вопросы.
@uvatenkovdmitrii1847
@uvatenkovdmitrii1847 3 года назад
Уважаемый автор! Пытаюсь прошить предложенным Вами способом полетный контроллер Holibro Kakute F7 mini V3 на базе STM32 F722RET6 через СP2102, но ПК определяет только CP2102 а полетник никак не отсвечивает и на кнопку DFU не реагирует. Может подскажете куда копать?
@NRelectronics
@NRelectronics 3 года назад
Проверьте в документации на ваш контроллер, он позволяет прошивать через uart способом DFU?
@uvatenkovdmitrii1847
@uvatenkovdmitrii1847 3 года назад
@@NRelectronics Boot modes At startup, the boot memory space is selected by the BOOT pin and BOOT_ADDx option bytes, allowing to program any boot memory address from 0x0000 0000 to 0x3FFF FFFF which includes: • All Flash address space mapped on ITCM or AXIM interface • All RAM address space: ITCM, DTCM RAMs and SRAMs mapped on AXIM interface • The System memory bootloader The boot loader is located in system memory. It is used to reprogram the Flash memory through a serial interface. Я, если честно не настолько понимаю в програмировании поэтому и спрашиваю((
@NRelectronics
@NRelectronics 3 года назад
Не то вы смотрите. Как сяду за комп, если не забуду, посмотрю.
@uvatenkovdmitrii1847
@uvatenkovdmitrii1847 3 года назад
@@NRelectronics Спасибо Вам большое что протягиваете руку помощи.
@NRelectronics
@NRelectronics 2 года назад
Ваш микроконтроллер можно прошивать через USART1 и USART3. Смотрите куда подключен ваш СР2102. Стр. 193 документ AN2606.
@microsoft8792
@microsoft8792 2 года назад
Очень полезное видео. Спасибо! Но у меня что-то не работает. Windows 7 64 бит. Драйвер установил. Нажимаю Boot0, втыкаю штекер. В диспетчере устройств появляется "STM device in DFU mode". Но в CubeProgrammer - No DFU Detected. А в тестере при нажатии на GetStatus пишет: Success. Status=STATUS_errFIRMWARE PollTime=0 State=STATE_DFU_ERROR iString=0. Это лечится?
@microsoft8792
@microsoft8792 2 года назад
У меня черная таблетка STM32F411CEUb
@NRelectronics
@NRelectronics 2 года назад
С виндой 7-ой сейчас всё плохо. На десятке у меня работает. Проверить у меня вам даже не на чем...
@microsoft8792
@microsoft8792 2 года назад
@@NRelectronics Спасибо. Буду ставить 10ку. По результатам отпишусь.
@NRelectronics
@NRelectronics 2 года назад
Пожалуйста. Обязательно отпишитесь. Ещё обязательно проверерьте, именно ваш контроллер поддерживает DFU через USB.
@microsoft8792
@microsoft8792 2 года назад
@@NRelectronics В общем борьба бобра с ослом продолжается: поставил 10ку поверх 7ки. В диспетчере устройств 10ка стала ругаться на неверный дескриптор устройства. Переустановка дров не помогла. Загрузился с другого диска с windows 7 32 бит, поставил дрова - в диспетчере устройств появился STM device in DFU mode. Програмка DfuSeDemo его видит и показывает сектора. Куб программер пишет no DFU detected.
@lvanovlvan
@lvanovlvan 4 года назад
У меня при подключении к black pill пишет "неизвестное USB устройство" пичаль-бида прямо. Может быть кто-то что-то подскажет. Драйвер установил. Reset + boot, затем отпускаю reset и через 0.5 сек boot. Выскакивает сообщение "USB устройство не опознано". Уже не знаю что и делать.
@NRelectronics
@NRelectronics 4 года назад
Есть глюк винды. Установите драйвера из папки где я показывал в видео. Куда установилась программа DfuSE.exe. Через диспетчер как у вас бывает не работает, это норма для винды.
@NRelectronics
@NRelectronics 4 года назад
Кстати не так. Нажимайте Boot и только после подключаете штекер type-C. Когда установите из папки дрова и будет у вас праздник.
@lvanovlvan
@lvanovlvan 4 года назад
@@NRelectronics делал и так и по-Вашему, драйвер установлен - результат прежний, выспорил у чинанайца 200 рублей.
@NRelectronics
@NRelectronics 4 года назад
погуглите, попадалось, что у людей на плате блюпил от некоторых чинанайцев, как Вы говорите))), не работал юсб просто, дело кажется было в резисторе R10, и у меня он был на 10кОм и все было норм. Поищите на просторах, эту проблемку освещали...
@lvanovlvan
@lvanovlvan 4 года назад
@@NRelectronics лол, самое смешное, что плата начала иногда загружаться через УСБ. Причем загружается и Вашим способом и ресет + буут.))) Но "не только лишь всегда"...))) Снова возникла проблема с GDB сервером, но была решена кардинальным способом через настройки дебаггера. Поморгал светиком и покнопал баттоном на блекпилке. Пока дальше этого не заходил, но через пару дней появится много времени, постараюсь начать работу с микроконтроллерами именно с стм32, ну и Ардуинка тоже будет для освоения С и С++. Чистые Атмелы не понравились. Пы.Сы. Чинанайцы от слова Чина, но как-то так совпало прикольно.)))) Надеюсь приживётся)))) Пы. Пы. Сы. Резик проверю. Кстати на блекпилке кнопка притягивает ноль к ноге А0 через резик примерно 330 Ом, прикольно, что можно просто пальцем по ноге стучать и будет переключаться. Надо будет наделать преобразователей уровня с 5 на 3.3 В
@kubenet
@kubenet 4 года назад
Спасибо за видео) Тема использования DFU на микроконтроллерах STM32 очень интересная
@NRelectronics
@NRelectronics 4 года назад
Пожалуйста Артем. Эта тема почему-то не освещается, по старинке все шьем по swd и uart, а там возможностей гораздо больше)
Далее
С какого года вы со мной?
00:13
Просмотров 199 тыс.
11 ming dollarlik uzum
00:43
Просмотров 494 тыс.
WeAct CH552. Первый взгляд
7:01
Просмотров 64 тыс.
Изучаю STM32!
20:26
Просмотров 193 тыс.