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

  Рет қаралды 11,535

NR.electronics

NR.electronics

2 жыл бұрын

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

Пікірлер: 74
@aka_vitfil
@aka_vitfil 2 жыл бұрын
Спасибо за очередное интересное видео!
@NRelectronics
@NRelectronics 2 жыл бұрын
Вам спасибо за оценку!
@user-re1ri9jp3e
@user-re1ri9jp3e 2 жыл бұрын
👍 Колбэк на прием ещё бы посмотреть 😁
@NRelectronics
@NRelectronics 2 жыл бұрын
Не обещаю, может быть. Идея работы точно такая же как и с обычным UART.
@OpenFrimeTVcom
@OpenFrimeTVcom 2 жыл бұрын
оо. мой зов был услышан) спасибо
@NRelectronics
@NRelectronics 2 жыл бұрын
О да 😉 ожидайте продолжение 👍
@user-np6lg1ru8h
@user-np6lg1ru8h 2 жыл бұрын
👍👍👍 Спасибо!
@NRelectronics
@NRelectronics 2 жыл бұрын
Пожалуйста 👍
@user-vw1vi4so5y
@user-vw1vi4so5y 2 жыл бұрын
Ещё не досмотрел видео, но поставил лайк потому что оно одназначно будет полезно многим. Почему-то тему USB устройств мало кто рассматривает и она нигде толком не "разжёвана". А деталей там много и они все важны! Я когда впервые столкнулся с задачей сделать катомное USB-устройство, думал, у меня мозг взорвётся! Есть огромная куча разрозненной информации и справочных данных, но нигде не написано как склеить это всё вместе и куда положить, чтоб потом всё дружно заработало именно так, как хотел разработчик. Предлагаю автору в дальнейшем развить эту тему в следующих видео и обсудить в деталях кастомное USB-устройство, думаю, многим будет интересно создать что-то своё уникальное вместо аналога клавиатуры или COM-порта с Алика за 150 рублей.
@NRelectronics
@NRelectronics 2 жыл бұрын
Спасибо Вообще те а полезна для многих, хот всё идёт от поставленной задачи в разработке конкретного изделия. Попробую развить тему юсб на несколько видео и попробовать обязательно другие класссы или профили.
@Korbomen
@Korbomen 2 жыл бұрын
если посидеть разобраться не так уж и сложно, на регистрах сделал, для меня сложно было это распарсить запросы дискрипторов от хоста, и вторая проблема отправить дискриптор больше 64 байт, для этого написал очередь
@khrustalyov1978
@khrustalyov1978 2 жыл бұрын
Спасибо! Очень интересно!!!
@NRelectronics
@NRelectronics 2 жыл бұрын
Пожалуйста.
@khrustalyov1978
@khrustalyov1978 2 жыл бұрын
@@NRelectronics А почему не рассмотрели прием данных из CDC. Это осуществляется вызовом CallBack функции или как то иначе?
@NRelectronics
@NRelectronics 2 жыл бұрын
Я говорил об этом. Функцией CDC_Receivе_FS. И говорил почему не рассматриваем.
@khrustalyov1978
@khrustalyov1978 2 жыл бұрын
@@NRelectronics спасибо. Пересмотрю.
@khrustalyov1978
@khrustalyov1978 2 жыл бұрын
@@NRelectronics пересмотрел несколько раз. Ответа на вопрос не нашел.
@qwwq8201
@qwwq8201 2 жыл бұрын
Так просто запустить USB c VCP. Спасибо! Сделайте серию по USB.
@NRelectronics
@NRelectronics 2 жыл бұрын
Очень просто. Подумаю над серией.
@kostya1306
@kostya1306 2 жыл бұрын
Как круто! Я сюда случайно попал ))
@NRelectronics
@NRelectronics 2 жыл бұрын
На пользу главное 😉
@user-co2jk5kh1v
@user-co2jk5kh1v 9 ай бұрын
Очень полезное видео для новичка! Снимаю шляпу)
@NRelectronics
@NRelectronics 9 ай бұрын
Пожалуйста. Можете иногда донатить)
@user-co2jk5kh1v
@user-co2jk5kh1v 9 ай бұрын
​@@NRelectronics перевёл немножко по номеру карты.
@NRelectronics
@NRelectronics 9 ай бұрын
Спасибо большое, очень приятно! И значит мой труд действительно нужен! А я думаю кто за добрый человек меня порадовал с утра!
@user-co2jk5kh1v
@user-co2jk5kh1v 9 ай бұрын
Скромное спасибо за ваш труд)
@NRelectronics
@NRelectronics 3 ай бұрын
Вам спасибо за оценку. Можете иногда донатить)
@Embedded_Developer
@Embedded_Developer 2 жыл бұрын
Спасибо за видео! #ТОП! До чего дошел прогресс: пару кликов в код_генератор и усё... эх...
@NRelectronics
@NRelectronics 2 жыл бұрын
Спасибо. USB такой же простой интерфейс как и UART. В HAL'e всё описано.
@user-np6lg1ru8h
@user-np6lg1ru8h 2 жыл бұрын
Не прошлой неделе столкнулся на работе с несовсем корректной работой кодогенератора. Серия g0, usart, dma. Генератор сначала проинициализировал dmamux, а потом включил его тактирование. Но в целом генератор маст хэв и очень помогает на первых этапах.
@NRelectronics
@NRelectronics 2 жыл бұрын
Спасибо за инфу, обращу внимание.
@liliansirbu840
@liliansirbu840 2 жыл бұрын
Спасибо за ваш труд. Можете сделать Multiple (или Dual) USB CDC?
@NRelectronics
@NRelectronics 2 жыл бұрын
С одного юсб два ком порта?
@liliansirbu840
@liliansirbu840 2 жыл бұрын
@@NRelectronics так точно. я тоже не знал что ето возможно на STM32, но вот как показывают екстерименты это работает, даже поставил пару hex-ов с гитхаба, вроди бы супер. Мне это тема очень интересно и за того что на одмом канале можно читать на пример сенсоры, или управлять чем то по UARTy, SPI, I2C, I2S, на другом подавать стрим данных (Камера, или даже скоросной АЦП). Изначально хотел это зделать на Cypress ez-usb fx2/fx3, но не могу найть хороший учитель ))) думаю это тема выстрелит, так как это очень хорошая тема и многим будет интеренсно. спасибо что отклинкулись нa мой комент.
@neshkeev
@neshkeev 2 жыл бұрын
А что вы думаете на счёт использования clion вместо Cube IDE? Есть ли смысл clion использовать для разработки под STM32?
@NRelectronics
@NRelectronics 2 жыл бұрын
Вместо CubeIDE я использую только Keil.
@user-gy9ro5hc3j
@user-gy9ro5hc3j 2 жыл бұрын
Здравствуйте, можно ли программировать микроконтроллеры без самого МК? Есть ли какая либо симуляция МК (типа STM32, ESP32).
@NRelectronics
@NRelectronics 2 жыл бұрын
Здравствуйте. Есть симулятор в Proteus и Keil. Рекомендую Proteus если нет отладки, но лучше железа нет, этот наверняка, софтом можно глюки словить которых нет в железе.
@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 не задавался целью проверять пока.
@Scherbakov
@Scherbakov Ай бұрын
Интересно было бы узнать как по usb отправлять аудиоданные в компьютер. Stm32 определяется как аудиоустройство, но начать передавать данные (как звук) всё ещё не удаётся..
@NRelectronics
@NRelectronics Ай бұрын
Профиль usb audio надо настраивать.
@user-ld7vr3fz3p
@user-ld7vr3fz3p 2 жыл бұрын
Основная проблема урока - показать практическое применение. Я мышь делал. Долго думал, что прицепить к плате с минимальными затратами, но оставить 4 оси? В итоге просто сделал "движение влево"...
@NRelectronics
@NRelectronics 2 жыл бұрын
Конечно, теорию дать можно много и с разной степени глубины. А вот полезную практику пойди выкрутись. Мышь тоже сниму через некоторое время.
@NRelectronics
@NRelectronics 2 жыл бұрын
Теперь есть видео с движением во всё стороны мыши и скролингом 😉
@user-ld7vr3fz3p
@user-ld7vr3fz3p 2 жыл бұрын
@@NRelectronics Я делал на основе bluepill, там джойстика нет... А Ваше видео я уже посмотрел.
@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 это будет круто
@alexeymaximov174
@alexeymaximov174 2 жыл бұрын
Windows 10 ставит драйвер автоматически, если видит класс CDC. Cтандартный usbser.sys. Для младших Windows надо самому писать (или найти готовый) файл *.inf
@NRelectronics
@NRelectronics 2 жыл бұрын
Спасибо. Как чувствовал что от десятки такая подстава...
@Korbomen
@Korbomen 2 жыл бұрын
на CMSIS написал работу с usb
@Korbomen
@Korbomen 2 жыл бұрын
в 350 строк уложился)
@NRelectronics
@NRelectronics 2 жыл бұрын
Молодцы! Многовато получилось🙂
@AWSXDER
@AWSXDER Жыл бұрын
А как данные от пользователя получить то? CDC_Receive_FS по умолчанию нет в пространстве пользователя.
@NRelectronics
@NRelectronics Жыл бұрын
В халовской библиотеки есть подобная функция как раз, в стм32.
@AWSXDER
@AWSXDER Жыл бұрын
@@NRelectronics спасибо. Я уже переписал функцию CDC_Receive_FS так чтобы она копировала данные в кольцевой буфер. Откуда я уже читаю их при необходимости. Просто странно, что по умолчанию пользователю дается полуфабрикат который необходимо дорабатывать.
@NRelectronics
@NRelectronics Жыл бұрын
Такой вот HAL, такая библиотека.
@user-wb1ow1pk9v
@user-wb1ow1pk9v 2 жыл бұрын
👍🏼
@NRelectronics
@NRelectronics 2 жыл бұрын
👍
@NeirRon82
@NeirRon82 2 жыл бұрын
В будущих видео можно качество сделать хотя бы 720p?
@NRelectronics
@NRelectronics 2 жыл бұрын
В этом работает с 1440p. Только что ещё раз проверил. Переключите у себя просто в настройках.
@alx123
@alx123 2 жыл бұрын
Наверно это было из-за только что залитого видео, т.к. ютуб сначала перекодирует в низких разрешениях, а потом появляется качество.
@NRelectronics
@NRelectronics 2 жыл бұрын
да, так бывает на ютубе
Mom's Unique Approach to Teaching Kids Hygiene #shorts
00:16
Fabiosa Stories
Рет қаралды 35 МЛН
50 YouTubers Fight For $1,000,000
41:27
MrBeast
Рет қаралды 209 МЛН
UI на ESP32 своими руками при помощи LVGL
12:34
Kirill Ivanychev
Рет қаралды 6 М.
Большой урок по программированию на Processing
1:00:53
Заметки Ардуинщика
Рет қаралды 199 М.