STM32 #5. USB - программируем класс - VCP, использование виртуального COM - порта.

Sdílet
Vložit
  • čas přidán 21. 08. 2024
  • #stm32 #программирование
    Продолжаем программировать микроконтроллеры STM32. В этом видео разбираемся с интерфейсом USB и пишем программу, которая нам позволит работать напрямую с компьютером без всяких преобразователей уровней, т.е. напрямую через USB, используя класс Virtual COM Port и STM32CubeIDE.
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
    / @nrelectronics
    или через Яндекс-деньги:
    money.yandex.r...
    А также переводом по номеру карты:
    4377-7237-6190-5714

Komentáře • 74

  • @user-re1ri9jp3e
    @user-re1ri9jp3e Před 2 lety +1

    👍
    Колбэк на прием ещё бы посмотреть 😁

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Не обещаю, может быть. Идея работы точно такая же как и с обычным UART.

  • @user-vw1vi4so5y
    @user-vw1vi4so5y Před 2 lety +1

    Ещё не досмотрел видео, но поставил лайк потому что оно одназначно будет полезно многим. Почему-то тему USB устройств мало кто рассматривает и она нигде толком не "разжёвана". А деталей там много и они все важны! Я когда впервые столкнулся с задачей сделать катомное USB-устройство, думал, у меня мозг взорвётся! Есть огромная куча разрозненной информации и справочных данных, но нигде не написано как склеить это всё вместе и куда положить, чтоб потом всё дружно заработало именно так, как хотел разработчик.
    Предлагаю автору в дальнейшем развить эту тему в следующих видео и обсудить в деталях кастомное USB-устройство, думаю, многим будет интересно создать что-то своё уникальное вместо аналога клавиатуры или COM-порта с Алика за 150 рублей.

    • @NRelectronics
      @NRelectronics  Před 2 lety

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

    • @Korbomen
      @Korbomen Před 2 lety

      если посидеть разобраться не так уж и сложно, на регистрах сделал, для меня сложно было это распарсить запросы дискрипторов от хоста, и вторая проблема отправить дискриптор больше 64 байт, для этого написал очередь

  • @aka_vitfil
    @aka_vitfil Před 2 lety

    Спасибо за очередное интересное видео!

  • @qwwq8201
    @qwwq8201 Před 2 lety +2

    Так просто запустить USB c VCP. Спасибо! Сделайте серию по USB.

    • @NRelectronics
      @NRelectronics  Před 2 lety +1

      Очень просто. Подумаю над серией.

  • @openFrimeTv
    @openFrimeTv Před 2 lety

    оо. мой зов был услышан) спасибо

    • @NRelectronics
      @NRelectronics  Před 2 lety

      О да 😉 ожидайте продолжение 👍

  • @khrustalyov1978
    @khrustalyov1978 Před 2 lety +1

    Спасибо! Очень интересно!!!

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Пожалуйста.

    • @khrustalyov1978
      @khrustalyov1978 Před 2 lety

      @@NRelectronics А почему не рассмотрели прием данных из CDC. Это осуществляется вызовом CallBack функции или как то иначе?

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Я говорил об этом. Функцией CDC_Receivе_FS. И говорил почему не рассматриваем.

    • @khrustalyov1978
      @khrustalyov1978 Před 2 lety

      @@NRelectronics спасибо. Пересмотрю.

    • @khrustalyov1978
      @khrustalyov1978 Před 2 lety

      @@NRelectronics пересмотрел несколько раз. Ответа на вопрос не нашел.

  • @kostya1306
    @kostya1306 Před 2 lety

    Как круто! Я сюда случайно попал ))

  • @user-co2jk5kh1v
    @user-co2jk5kh1v Před 10 měsíci

    Очень полезное видео для новичка! Снимаю шляпу)

    • @NRelectronics
      @NRelectronics  Před 10 měsíci

      Пожалуйста. Можете иногда донатить)

    • @user-co2jk5kh1v
      @user-co2jk5kh1v Před 10 měsíci

      ​@@NRelectronics перевёл немножко по номеру карты.

    • @NRelectronics
      @NRelectronics  Před 10 měsíci

      Спасибо большое, очень приятно! И значит мой труд действительно нужен!
      А я думаю кто за добрый человек меня порадовал с утра!

    • @user-co2jk5kh1v
      @user-co2jk5kh1v Před 10 měsíci

      Скромное спасибо за ваш труд)

    • @NRelectronics
      @NRelectronics  Před 4 měsíci

      Вам спасибо за оценку. Можете иногда донатить)

  • @user-np6lg1ru8h
    @user-np6lg1ru8h Před 2 lety

    👍👍👍 Спасибо!

  • @Embedded_Developer
    @Embedded_Developer Před 2 lety

    Спасибо за видео! #ТОП! До чего дошел прогресс: пару кликов в код_генератор и усё... эх...

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Спасибо.
      USB такой же простой интерфейс как и UART. В HAL'e всё описано.

    • @user-np6lg1ru8h
      @user-np6lg1ru8h Před 2 lety

      Не прошлой неделе столкнулся на работе с несовсем корректной работой кодогенератора. Серия g0, usart, dma. Генератор сначала проинициализировал dmamux, а потом включил его тактирование. Но в целом генератор маст хэв и очень помогает на первых этапах.

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Спасибо за инфу, обращу внимание.

  • @liliansirbu840
    @liliansirbu840 Před 2 lety +1

    Спасибо за ваш труд. Можете сделать Multiple (или Dual) USB CDC?

    • @NRelectronics
      @NRelectronics  Před 2 lety +1

      С одного юсб два ком порта?

    • @liliansirbu840
      @liliansirbu840 Před 2 lety

      @@NRelectronics так точно. я тоже не знал что ето возможно на STM32, но вот как показывают екстерименты это работает, даже поставил пару hex-ов с гитхаба, вроди бы супер. Мне это тема очень интересно и за того что на одмом канале можно читать на пример сенсоры, или управлять чем то по UARTy, SPI, I2C, I2S, на другом подавать стрим данных (Камера, или даже скоросной АЦП). Изначально хотел это зделать на Cypress ez-usb fx2/fx3, но не могу найть хороший учитель ))) думаю это тема выстрелит, так как это очень хорошая тема и многим будет интеренсно. спасибо что отклинкулись нa мой комент.

  • @Scherbakov
    @Scherbakov Před 2 měsíci

    Интересно было бы узнать как по usb отправлять аудиоданные в компьютер. Stm32 определяется как аудиоустройство, но начать передавать данные (как звук) всё ещё не удаётся..

    • @NRelectronics
      @NRelectronics  Před 2 měsíci

      Профиль usb audio надо настраивать.

  • @neshkeev
    @neshkeev Před 2 lety

    А что вы думаете на счёт использования clion вместо Cube IDE? Есть ли смысл clion использовать для разработки под STM32?

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Вместо CubeIDE я использую только Keil.

  • @user-gy9ro5hc3j
    @user-gy9ro5hc3j Před 2 lety

    Здравствуйте, можно ли программировать микроконтроллеры без самого МК? Есть ли какая либо симуляция МК (типа STM32, ESP32).

    • @NRelectronics
      @NRelectronics  Před 2 lety +2

      Здравствуйте.
      Есть симулятор в Proteus и Keil. Рекомендую Proteus если нет отладки, но лучше железа нет, этот наверняка, софтом можно глюки словить которых нет в железе.

  • @Korbomen
    @Korbomen Před 2 lety +2

    на CMSIS написал работу с usb

    • @Korbomen
      @Korbomen Před 2 lety

      в 350 строк уложился)

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Молодцы! Многовато получилось🙂

  • @user-ld7vr3fz3p
    @user-ld7vr3fz3p Před 2 lety

    Основная проблема урока - показать практическое применение. Я мышь делал. Долго думал, что прицепить к плате с минимальными затратами, но оставить 4 оси? В итоге просто сделал "движение влево"...

    • @NRelectronics
      @NRelectronics  Před 2 lety

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

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Теперь есть видео с движением во всё стороны мыши и скролингом 😉

    • @user-ld7vr3fz3p
      @user-ld7vr3fz3p Před 2 lety

      @@NRelectronics Я делал на основе bluepill, там джойстика нет... А Ваше видео я уже посмотрел.

  • @alx123
    @alx123 Před 2 lety

    Неделю назад проверял на F303 максимальную скорость CDC, больше 700 кбит/с не удалось передать на комп, как не крутил, и в F3 нет DMA на USB, в отличие от простых USARTов. Интересно как в F407.

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Килобит или килобайт? Обычно больше 115200 б/с сам не использую.

    • @alx123
      @alx123 Před 2 lety

      @@NRelectronics Килобит, т.е. около 85 кбайт/с. Про целесообразность то понятно, но если, допустим, надо передать быстро данные на комп с АЦП, на компе же проще обработать или с SPI/I2C-датчиков.

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Согласен, что, чем больше тем лучше. Для АЦП это действительно очень актуально. Максималку на F4 не задавался целью проверять пока.

  • @TheAurumsan1
    @TheAurumsan1 Před 2 lety

    Спасибо. Но у меня терминал не связывается с устройством после загрузки, надо обязательно отключить и снова включить USB коннектор. И отладка поэтому тоже не выходит. Плата Blue Pill.

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Пожалуйста.
      С блюпилом вечно проблемы, что поделать... Пока она самая дешёвая из отладок малых на М3, поэтому долго жить ещё будет.

    • @TheAurumsan1
      @TheAurumsan1 Před 2 lety

      @@NRelectronics 1. Проверял на stm32F103 и stm32f401: внутри функции static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) есть вызов: USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); Если этот вызов не закомментировать, то программа не работает.
      2. Сделайте, пожалуйста урок по установке размеров стеков в CubeIde.

    • @TheAurumsan1
      @TheAurumsan1 Před 2 lety

      Соврал: на 401-м работает.

    • @TheAurumsan1
      @TheAurumsan1 Před 2 lety

      И на 103-м заработало! - )

    • @NRelectronics
      @NRelectronics  Před 2 lety

      отлично, я рад!

  • @alexeymaximov174
    @alexeymaximov174 Před 2 lety

    Windows 10 ставит драйвер автоматически, если видит класс CDC. Cтандартный usbser.sys.
    Для младших Windows надо самому писать (или найти готовый) файл *.inf

    • @NRelectronics
      @NRelectronics  Před 2 lety

      Спасибо. Как чувствовал что от десятки такая подстава...

  • @AWSXDER
    @AWSXDER Před rokem

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

    • @NRelectronics
      @NRelectronics  Před rokem

      В халовской библиотеки есть подобная функция как раз, в стм32.

    • @AWSXDER
      @AWSXDER Před rokem

      @@NRelectronics спасибо. Я уже переписал функцию CDC_Receive_FS так чтобы она копировала данные в кольцевой буфер. Откуда я уже читаю их при необходимости. Просто странно, что по умолчанию пользователю дается полуфабрикат который необходимо дорабатывать.

    • @NRelectronics
      @NRelectronics  Před rokem +1

      Такой вот HAL, такая библиотека.

  • @PastuhMedvedey
    @PastuhMedvedey Před 2 lety

    А как сделать два VCP на одном физическом usb, вот вопрос.

    • @NRelectronics
      @NRelectronics  Před 2 lety

      На одном физическом только один VCP.

    • @liliansirbu840
      @liliansirbu840 Před 2 lety

      ​@@NRelectronics если ктото обяснит как делается stm32-usb-dualcdc / stm32f103_dual_vcp это будет круто

  • @user-wb1ow1pk9v
    @user-wb1ow1pk9v Před 2 lety

    👍🏼

  • @NeirRon82
    @NeirRon82 Před 2 lety

    В будущих видео можно качество сделать хотя бы 720p?

    • @NRelectronics
      @NRelectronics  Před 2 lety +3

      В этом работает с 1440p. Только что ещё раз проверил. Переключите у себя просто в настройках.

    • @alx123
      @alx123 Před 2 lety +1

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

    • @NRelectronics
      @NRelectronics  Před 2 lety

      да, так бывает на ютубе