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

Поділитися
Вставка
  • Опубліковано 15 жов 2024
  • #stm32 #программирование
    Продолжаем программировать микроконтроллеры STM32. В этом видео разбираемся с интерфейсом USB и пишем программу, которая нам позволит работать напрямую с компьютером без всяких преобразователей уровней, т.е. напрямую через USB, используя класс Virtual COM Port и STM32CubeIDE.
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
    / @nrelectronics
    или через Яндекс-деньги:
    money.yandex.r...
    А также переводом по номеру карты:
    4377-7237-6190-5714

КОМЕНТАРІ • 74

  • @ИгорьЛатуха
    @ИгорьЛатуха 2 роки тому +1

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @khrustalyov1978
    @khrustalyov1978 2 роки тому +1

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

    • @NRelectronics
      @NRelectronics  2 роки тому

      Пожалуйста.

    • @khrustalyov1978
      @khrustalyov1978 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @khrustalyov1978
      @khrustalyov1978 2 роки тому

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

    • @khrustalyov1978
      @khrustalyov1978 2 роки тому

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

  • @openFrimeTv
    @openFrimeTv 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @не_нормальный
    @не_нормальный 2 роки тому +1

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @Korbomen
      @Korbomen 2 роки тому

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

  • @aka_vitfil
    @aka_vitfil 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

      Вам спасибо за оценку!

  • @Scherbakov
    @Scherbakov 4 місяці тому

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

    • @NRelectronics
      @NRelectronics  4 місяці тому

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

  • @Запрещённыесамоделки

    👍👍👍 Спасибо!

  • @АлександрРябков-г1й

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

    • @NRelectronics
      @NRelectronics  Рік тому

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

    • @АлександрРябков-г1й
      @АлександрРябков-г1й Рік тому

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

    • @NRelectronics
      @NRelectronics  Рік тому

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

    • @АлександрРябков-г1й
      @АлександрРябков-г1й Рік тому

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

    • @NRelectronics
      @NRelectronics  5 місяців тому

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

  • @qwwq8201
    @qwwq8201 2 роки тому +2

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

    • @NRelectronics
      @NRelectronics  2 роки тому +1

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

  • @kostya1306
    @kostya1306 2 роки тому

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

  • @АртьомЯрощук
    @АртьомЯрощук 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому +2

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

  • @neshkeev
    @neshkeev 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @Embedded_Developer
    @Embedded_Developer 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @Запрещённыесамоделки
      @Запрещённыесамоделки 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @AWSXDER
    @AWSXDER Рік тому

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

    • @NRelectronics
      @NRelectronics  Рік тому

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

    • @AWSXDER
      @AWSXDER Рік тому

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

    • @NRelectronics
      @NRelectronics  Рік тому +1

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

  • @TheAurumsan1
    @TheAurumsan1 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @TheAurumsan1
      @TheAurumsan1 2 роки тому

      @@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 2 роки тому

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

    • @TheAurumsan1
      @TheAurumsan1 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @PastuhMedvedey
    @PastuhMedvedey 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @liliansirbu840
      @liliansirbu840 2 роки тому

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

  • @alx123
    @alx123 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @alx123
      @alx123 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @ИванСидоров-к9м
    @ИванСидоров-к9м 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

    • @ИванСидоров-к9м
      @ИванСидоров-к9м 2 роки тому

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

  • @liliansirbu840
    @liliansirbu840 2 роки тому +1

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

    • @NRelectronics
      @NRelectronics  2 роки тому +1

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

    • @liliansirbu840
      @liliansirbu840 2 роки тому

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

  • @Korbomen
    @Korbomen 2 роки тому +2

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

    • @Korbomen
      @Korbomen 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @alexeymaximov174
    @alexeymaximov174 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @NeirRon82
    @NeirRon82 2 роки тому

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

    • @NRelectronics
      @NRelectronics  2 роки тому +3

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

    • @alx123
      @alx123 2 роки тому +1

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

    • @NRelectronics
      @NRelectronics  2 роки тому

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

  • @АбуЗаррФарадей
    @АбуЗаррФарадей 2 роки тому

    👍🏼