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

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ก.ย. 2020
  • Данное видео 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-electronics/DiY/

ความคิดเห็น • 104

  • @user-sz5xe9fb9j
    @user-sz5xe9fb9j 3 ปีที่แล้ว +1

    Спасибо, очень интересная тема для новичка, жду новых видео как праздник!!!)))

    • @user-sz5xe9fb9j
      @user-sz5xe9fb9j 3 ปีที่แล้ว

      Ссылка не работает на гитхаб((

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      она верная, но ютуб её сокращает и она не работает почему-то...
      Материал видео:
      github.com/nr-electronics/DiY/tree/master/Program%20STM32%20without%20a%20programmer%20via%20UART%20and%20DFU%20(USB)

  • @backslash5261
    @backslash5261 3 ปีที่แล้ว +1

    Спасибо за видео! Делайте еще! Про дисплеи обещали, я жду _)

  • @LukasAleks
    @LukasAleks 3 ปีที่แล้ว +1

    Большое спасибо Вам за данный видеоматериал. Всё доступно объяснили.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว +1

      Пожалуйста. Главное, что материал в строгом соответствии с документацией на микроконтроллер, а не как у других.

    • @f-16fightingfalcon99
      @f-16fightingfalcon99 2 ปีที่แล้ว

      @@NRelectronics Что будет если подключить плату без нажатия BOOT0?

  • @alexexnew
    @alexexnew 3 หลายเดือนก่อน +1

    Спасибо, сделал так чтобы на мою F411 загружался код из Arduino IDE

    • @NRelectronics
      @NRelectronics  3 หลายเดือนก่อน

      Отлично, молодцы.

  • @Sergey_Evdokimenko
    @Sergey_Evdokimenko 3 ปีที่แล้ว +1

    очень полезно
    особенно про DFU
    спасибо

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      пожалуйста.
      По DFU нужен один джампер/кнопка/переключатель и рабочий usb плавно превращается в шорты))) ... в разъем для программирования...

  • @lite_go_9565
    @lite_go_9565 3 ปีที่แล้ว +1

    Отличное видео, Спасибо

  • @sergeypoltarakov1432
    @sergeypoltarakov1432 2 ปีที่แล้ว

    Спасибо большое!!! Очень пригодилось !!!

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว

      Пожалуйста) Смотрите дальше))

  • @kubenet
    @kubenet 3 ปีที่แล้ว +1

    Спасибо за видео) Тема использования DFU на микроконтроллерах STM32 очень интересная

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Пожалуйста Артем. Эта тема почему-то не освещается, по старинке все шьем по swd и uart, а там возможностей гораздо больше)

  • @hammerman125rus
    @hammerman125rus ปีที่แล้ว

    Спасибо за видео! Функционал DFU встроен в загрузчик? В CubeMX при настройке пинов не нужно задавать этот режим? У меня black pill F401

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Аппаратно встроен. Наличие только в даташите надо уточнять. В блэкпиле есть вроде.

  • @RoonBoh
    @RoonBoh 2 ปีที่แล้ว

    Здравствуйте, на текущий момент если следовать вашей информации по BlackPill, то драйвер от ST-CubeProg не работает "код ошибки 28", а когда мы со свежей версии устанавливаем драйвер то он не работает в StCubeProg. Вы не могли бы выложить свой драйвер?

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว

      Здравствуйте. Попробуйте платку поменять, возможно дело в ней.

  • @user-tg2iv4zn7r
    @user-tg2iv4zn7r 2 หลายเดือนก่อน

    Добрый день, подскажите пожалуйста, можно ли STLinkом залить прошивку в STM32F103VET6 просто подпаявшись к соодтветствующим выводам ( 5V VDD(49),VSS(50 GND), CLK (76), DIO (72). Или обязательно её распаивать на плату с обвязкой?

    • @NRelectronics
      @NRelectronics  2 หลายเดือนก่อน

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

  • @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 ปีที่แล้ว

      таким образом никак. На просторах интернет такой способ даже не встречал.

  • @Voha
    @Voha 3 ปีที่แล้ว

    Недавно у одного дедушки выходило подобное видео, но там как то не очень, а на этом канале всегда попадается годная инфа, так что сейчас гляну)

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Ага, сейчас он прочитает как вы его обозвали и обидется))))
      Кстати, его видео, название, не соответствует его содержанию. Облажался конкретно.
      Я просто снял как правильно эти технологии работают.

    • @Voha
      @Voha 3 ปีที่แล้ว

      @@NRelectronics спасибо Вам за поясняющий ответ, а то меня грызла совесть, что я его видос в перемотке отрывками смотрел, но успел наехать))
      У Вас же как всегда правильный подход и чёткая структурированная подача материала, которая расширяет кругозор. Смотрю Ваш канал редко, т.к. знаю, что тут надо внимательно слушать/смотреть "от и до", чтоб ничего не пропустить

    • @Dmitriy_KIPiA
      @Dmitriy_KIPiA 3 ปีที่แล้ว +1

      @@NRelectronics я так понимаю имя этого дедушки начинается на букву "В"??)

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      желательно внимательно конечно смотреть. Так как все кроется в деталях...

    • @Voha
      @Voha 3 ปีที่แล้ว

      @@Dmitriy_KIPiA есть такая буква. Вращайте барабан!

  • @AndySm1973
    @AndySm1973 3 ปีที่แล้ว +1

    Спасибо! А в каком документе указана конфигурация BOOT0/BOOT1 для перевода в DFU mode

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว +1

      В любом Reference Manual. Например для контроллеров STM32G0x1 это RM0444 Reference Manual.pdf. На странице 60 подробно описано. По аналогии и в других даташитах на МК.

    • @AndySm1973
      @AndySm1973 3 ปีที่แล้ว +1

      @@NRelectronics да, нашел, спасибо!

  • @user-to9ty5kw2r
    @user-to9ty5kw2r 9 หลายเดือนก่อน

    Привет.А ты не пробовал подключать внешнюю NAND флеш к stm32 контроллеру ?

    • @NRelectronics
      @NRelectronics  9 หลายเดือนก่อน

      Привет. Ещё пока нет. Всё правда лежит...

  • @hieverybody359
    @hieverybody359 2 ปีที่แล้ว

    Можно ли прошить сразу несколько мк стм32 одновременно, при том что id нужно присвоить каждому уникальный? Если да то как это реализовать на практике?

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว

      Наверное можно, такой непрерывной оригинальной серийкой не занимался.

  • @uvatenkovdmitrii1847
    @uvatenkovdmitrii1847 2 ปีที่แล้ว

    Уважаемый автор! Пытаюсь прошить предложенным Вами способом полетный контроллер Holibro Kakute F7 mini V3 на базе STM32 F722RET6 через СP2102, но ПК определяет только CP2102 а полетник никак не отсвечивает и на кнопку DFU не реагирует. Может подскажете куда копать?

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว

      Проверьте в документации на ваш контроллер, он позволяет прошивать через uart способом DFU?

    • @uvatenkovdmitrii1847
      @uvatenkovdmitrii1847 2 ปีที่แล้ว

      @@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  2 ปีที่แล้ว

      Не то вы смотрите. Как сяду за комп, если не забуду, посмотрю.

    • @uvatenkovdmitrii1847
      @uvatenkovdmitrii1847 2 ปีที่แล้ว

      @@NRelectronics Спасибо Вам большое что протягиваете руку помощи.

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว

      Ваш микроконтроллер можно прошивать через USART1 и USART3. Смотрите куда подключен ваш СР2102.
      Стр. 193 документ AN2606.

  • @user-hq5sh4cs4v
    @user-hq5sh4cs4v ปีที่แล้ว

    Простите если вопрос глуп сидел на мегах прошивал ЛПТ порт используя с преобразователем уровней ...можно ли такой же финт ушами с 32 сделать

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Не глупый вопрос. Параллельной шиной нельзя прошить STM32. Можно преобразователем COM-uart если что.

    • @user-hq5sh4cs4v
      @user-hq5sh4cs4v ปีที่แล้ว

      @@NRelectronics спасибо ...

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Пожалуйста. Не стесняйтесь задавать вопросы.

  • @sergeygrechishnikov282
    @sergeygrechishnikov282 2 ปีที่แล้ว

    Спасибо за видео.
    Вопрос возник, как лучьше организовать связь с ПК(Windows, Linux), для получения команд от ПК и для отправки данных на ПК (USART, UART, I2C?);
    Если я где-то пропустил ваш урок по этой теме, прошу пардону)))

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      Спасибо
      Обычно делают связь терминальной программой, их море, на вкус и цвет как говориться через преобразователь UART-USB. Тоже любой, в роликах они у меня были. Могу посоветовать самый дешёвый за 100₽ и вполне приличный...

    • @sergeygrechishnikov282
      @sergeygrechishnikov282 2 ปีที่แล้ว

      @@NRelectronics Спасибо было бы неплохо если посоветуете хороший вариант преобразователя.
      Моя идея такая, для обмена данными использовать Cmsis или LL, со стороны ПК это будет QserialPort.

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      116,20 руб. 22%СКИДКА | Преобразователь MICRO USB/UART TTL, 1 шт., 6Pin, для Arduino
      a.aliexpress.com/_AFdCxK

    • @sergeygrechishnikov282
      @sergeygrechishnikov282 2 ปีที่แล้ว

      @@NRelectronics Спасибо!

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      Пожалуйста, обращайтесь 😉✌

  • @dr.emmettbrown8466
    @dr.emmettbrown8466 3 ปีที่แล้ว +1

    Для отладочных плат вопросов нет, а вот как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия, вот это вопрос. Мне только приходит на ум доп. МК типа STM32F0xx за ~35 руб. + microSD. STM32F0 читает прошивку с microSD по SPI, прижимает ногу BOOT0 основного МК и заливает прошивку по любому удобному протоколу.
    Кмк, способы из видео слишком сложны для конечного не подготовленного пользователя

    • @sozdatelEd
      @sozdatelEd 3 ปีที่แล้ว

      FLASH контроллера разделяем на 2 части. Таким образом будет своя программа-загрузчик, которая начнёт работать при включении питания по адресу 0x08000000 и основная программа по адресу например 0x08002000. При включении начинает работать наш собственно написанный загрузчик, который проверяет наличие новой прошивки (например на подключенной SD-карте памяти). Если есть новая прошивка, то наш загрузчик затирает область памяти, отведённую для основной программы и записывает туда новую прошивку. После записи прошивки или если новой прошивки с момента включения не обнаружено мы прыгаем по адресу исполнения основной программы и переносим вектора прерываний. Всё. Даже если будет неисправна основная программа устройство не станет кирпичом.
      В таком случае после изготовления устройства необходимо записать наш загрузчик. Для клиента пишем свою инструкцию по обновлению ПО.
      "как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия" - я делил FLASH stm32f103c8t6 на 3 блока и в первом организовывал загрузчик, во втором блоке основная программа и третий блок был отведён для файловой системы. Загрузчик при включении определял подключено ли устройство к USB и если подключено, то оно обнаруживалось как обычная флешка. Клиент записывал на неё криптованную прошивку. Далее при включении устройства от основного питания загрузчик определял, что устройство не подключено к USB и есть новая прошивка, проверял её целостность и стирал часть FLASH отведённую для основной программы, декодировал прошивку и записывал её в нужную область, затирал файл прошивки. Далее запускалась основная программа. На все манипуляции по смене прошивки уходило менее 2 секунд при старте устройства. Удорожания конструкции минимальны - USB-разъём и обвязка по мелочи.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      по UART конечно посложнее чем через DFU.
      А эту простую прошивку или способ заливки Вы как предлагаете организовать по простому?

    • @dr.emmettbrown8466
      @dr.emmettbrown8466 3 ปีที่แล้ว

      @@NRelectronics Схематично так:
      1. 1-й МК управляет не только загрузкой но и питанием основного МК, например через мосфет (принцип как на материнках мультиконтроллер)
      2. При старте проверка SD, если нет новой прошивки, то просто подает питание на основной МК (да, потеря в скорости загрузки, но и хрен с ней)
      3. Если есть, то работаем с ножкой BOOT0 основного МК, подаем питание и работаем как бы буфером, читаем по SPI с карты и передаем по UART (в принципе, судя по даташит, UART можно заменить на SPI или I2C)
      Повторюсь, DFU классная тема, но ИМХО абсолютно не приемлема для конечного и неподготовленного КОНЕЧНОГО пользователя.

  • @Shinsei75
    @Shinsei75 3 ปีที่แล้ว +1

    Когда из 103 делаешь Black Magic Probe, на него программа заливается по dfu и залилась нормом. Это загрузчик нельзя, а программу можно таким образом заливать

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      разъясните пожалуйста по подробней что там по Black Magic Probe как там делается? интересно тоже.

    • @Shinsei75
      @Shinsei75 3 ปีที่แล้ว

      NR.electronics я свой делал по этой рекомендации xelin.ru/content/1246. Лоадер прошивал через конвертер, а саму программу как ДФУ через юсб шил.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Ваша ссылка к сожалению не работает...

    • @Shinsei75
      @Shinsei75 3 ปีที่แล้ว

      NR.electronics странно, на днях ещё работала, может с сервером у них сбой? Попробуйте вот эту, itnan.ru/post.php?c=2&p=292459

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Спасибо! Почитал. Интересная тоже реализация. Расстраивает только что МК в нем меньше чем в J-Link`е. А так классно.

  • @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.

  • @user-nj4vm4sh2l
    @user-nj4vm4sh2l 4 หลายเดือนก่อน

    А как включить терминал USART в Cubeide

    • @NRelectronics
      @NRelectronics  4 หลายเดือนก่อน

      Изначально он включенный, нужно только перейти в соответствующее окно и выбрать номер com-порт и его открыть.

    • @user-nj4vm4sh2l
      @user-nj4vm4sh2l 4 หลายเดือนก่อน

      @@NRelectronics А в какое окно.Где настройка терминала находится в какой опции?

    • @NRelectronics
      @NRelectronics  4 หลายเดือนก่อน

      Посмотрите моё видео на канале: "STM32CubeIDE. Установка, настройка и отладка. Часть 1"
      на метке 22:05

  • @Sergey_Evdokimenko
    @Sergey_Evdokimenko 3 ปีที่แล้ว +1

    ссылка "Материал видео:" уже не работает, к сожалению

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว +1

      Спасибо за фидбэк. Поправил, проверяйте.

  • @lvanovlvan
    @lvanovlvan 3 ปีที่แล้ว

    У меня при подключении к black pill пишет "неизвестное USB устройство" пичаль-бида прямо. Может быть кто-то что-то подскажет. Драйвер установил. Reset + boot, затем отпускаю reset и через 0.5 сек boot. Выскакивает сообщение "USB устройство не опознано". Уже не знаю что и делать.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Есть глюк винды. Установите драйвера из папки где я показывал в видео. Куда установилась программа DfuSE.exe. Через диспетчер как у вас бывает не работает, это норма для винды.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Кстати не так. Нажимайте Boot и только после подключаете штекер type-C. Когда установите из папки дрова и будет у вас праздник.

    • @lvanovlvan
      @lvanovlvan 3 ปีที่แล้ว

      @@NRelectronics делал и так и по-Вашему, драйвер установлен - результат прежний, выспорил у чинанайца 200 рублей.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      погуглите, попадалось, что у людей на плате блюпил от некоторых чинанайцев, как Вы говорите))), не работал юсб просто, дело кажется было в резисторе R10, и у меня он был на 10кОм и все было норм. Поищите на просторах, эту проблемку освещали...

    • @lvanovlvan
      @lvanovlvan 3 ปีที่แล้ว

      @@NRelectronics лол, самое смешное, что плата начала иногда загружаться через УСБ. Причем загружается и Вашим способом и ресет + буут.))) Но "не только лишь всегда"...))) Снова возникла проблема с GDB сервером, но была решена кардинальным способом через настройки дебаггера. Поморгал светиком и покнопал баттоном на блекпилке. Пока дальше этого не заходил, но через пару дней появится много времени, постараюсь начать работу с микроконтроллерами именно с стм32, ну и Ардуинка тоже будет для освоения С и С++. Чистые Атмелы не понравились.
      Пы.Сы. Чинанайцы от слова Чина, но как-то так совпало прикольно.)))) Надеюсь приживётся))))
      Пы. Пы. Сы. Резик проверю. Кстати на блекпилке кнопка притягивает ноль к ноге А0 через резик примерно 330 Ом, прикольно, что можно просто пальцем по ноге стучать и будет переключаться. Надо будет наделать преобразователей уровня с 5 на 3.3 В

  • @GoldCordon
    @GoldCordon 2 ปีที่แล้ว

    пять раз провернул эту последовательность и все равно в диспетчере устройств не находит плату, пишет "Неизвестное USB-устройство...."

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว

      Что за плата? Драйвера установили?

    • @user-qe8id7ot6d
      @user-qe8id7ot6d 2 ปีที่แล้ว

      Здравствуйте, возможно у вас та же ситуация что и у меня. Моя BlackPill грузится в DFU только если зажать не только BOOT0, но и KEY. Возможно у вас так же. Я зажал KEY + BOOT0, и потом поставил дрова из директории где лежит CubeProgrammer. Пока работает исправно

  • @Wingtiger7
    @Wingtiger7 3 ปีที่แล้ว

    как заливать код в озу?

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Boot 0 и Boot 1 установить в единицу.

    • @Wingtiger7
      @Wingtiger7 3 ปีที่แล้ว

      @@NRelectronics а дальше? Залилось на флеш

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      а дальше все зависит от того как вы сами реализовали то.