Интерфейс USB. Виртуальный COM порт и схемотехника.

Ғылым және технология

Рассказывается о том, как строится схемотехника интерфейса USB на микроконтроллерах STM32. Рассказывается о программировании и использовании USB Virtual COM port и использовании этого интерфейса при отладке.
Канал в телеграмм - t.me/vladimir_medintsev
Канал Яндекс.Дзен - zen.yandex.ru/vladimir_medintsev
Канал на RuTube - rutube.ru/channel/1797552/
Канал на KZread - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------
Интерфейс USB. Создаем Mass Storage на STM32F4 и странные косяки от CubeMX - • Интерфейс USB. Создаем...
Отладка STM32. Перенаправление ввода-вывода. Возможности SWD, отладка больших программ. - • Отладка STM32. Перенап...

Пікірлер: 82

  • @anatoliygavrilov958
    @anatoliygavrilov9584 жыл бұрын

    Подтягивающие к земле резисторы 10-15к нужны только на стороне "хоста", то есть в Вашем случае не нужны. Подтягивающий к +3,3В резистор 1,5к нужен только на стороне "девайса". С его помощью "хост" определяет подключение "девайса" и его скорость. Если резистор на линии DM, то скорость 1,5Mbit/s (Low speed). Если резистор на линии DP, то скорость 12Mbit/s (Full speed) или 480Mbit/s (High speed). Об это можно прочесть в спецификации USB. Микроконтроллеры STM32 в режиме "девайса" не умеют режим Low speed, по этому вариант тут только один - подтягивать линию DP, но некоторые серии микроконтроллеров имеют встроенный подтягивающий резистор. Для выбранного Вами микроконтроллера STM32F303CB он нужен. Об это можно прочесть в AN4879. Согласующие резисторы (последовательные) 20-30 Ом для микроконтроллеров STM32 не нужны, т.к. они уже имеются в микроконтроллере. Об это написано в AN4879 в разделе FAQs. С защитными диодами всё немного сложнее. Устройства должны соответствовать стандарту JESD22-A114D (выдерживать разряд 2кВ) и встроенные в STM32 защитные диоды это обеспечивают. Но если устройство имеет разъемное (пользователем) соединение USB, то оно так же должно соответствовать и более строгому стандарту IEC 61000-4-2. Для этого микроконтроллерам STM32 нужны внешние защитные диоды. В Вашем случае они нужны. Об это можно прочесть в AN4879 в разделе "Protection against ESD and EMI".

  • @ivanslivin6804

    @ivanslivin6804

    3 жыл бұрын

    Спасибо за развернутый комментарий! Вопрос. Если мы все же ставим диоды (или сбору TVS), и придет импульс. То где рассеится его энергия? Я вот именно для этого ставлю последовательные резисторы на 22 Ома. Но не уверен что это правильный подход.

  • @vadimvarlamov7907
    @vadimvarlamov79074 жыл бұрын

    Очень познавательно. Часто в проектах с STM32 использую USB, либо для настроек, либо просто для отладки.

  • @VladimirMedintsev
    @VladimirMedintsev4 жыл бұрын

    @Денис Позолотин был заблокирован на канале за переход на личности и матершину. Меня поражает беспричинная агрессия некоторых индивидов. Материться идите за гаражами, а тут интернет, тут нельзя.

  • @user-co8un6lx3t

    @user-co8un6lx3t

    3 жыл бұрын

    За гаражами знаете ли можно и выхватить, а тут ващпе не страшно ))

  • @f33net
    @f33net2 жыл бұрын

    Так там же сэтэшики буковками написали "всё, народ, не балуйтесь - необходимая защита и согласование на борту, лепите прямые дорожки". На 2.0 повесить внешнюю ESD защиту можно, но на 3.0 она будет кусаться ёмкостью.

  • @TEENASPECT
    @TEENASPECT4 жыл бұрын

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

  • @sailtogether3236
    @sailtogether32362 жыл бұрын

    Крайне полезный и актуальный обзор, спасибо! И изюминкой про ардуиновский плоттер) Сколько раз проходил мимо и не заметил его.

  • @ajdarseidzade688
    @ajdarseidzade6884 жыл бұрын

    За 'Serial Plotter' отдельное спасибо! А также за такое видео и кол-во материала в нем. Именно рассмотренных документов. Я все их, буквально все, нашел/скачал по-одному. Кроме "старой версии" AN4879 от ST. Хороший и большой обзор различной документации по USB и все уместилось в этом видео. Даже программная часть рассмотрена. Этакий вводный курс и пр. - ничего большего и не нужно, а дальше самому лучше запускать/разбираться.

  • @alexanderurezchenko6446
    @alexanderurezchenko64464 жыл бұрын

    Спасибо, Владимир!

  • @user-tz2zg3so2v
    @user-tz2zg3so2v4 жыл бұрын

    Спасибо за ваши видео

  • @Insideus2786
    @Insideus27864 жыл бұрын

    Спасибо за видео. Тоже в свое время стояла задачи создания схемотехники USB интерфейса на STM32. В итоге решил не "изобретать велосипед", а посмотреть готовые решения от STM, проанализировать, то как это было сделано у них в демобордах Discovery и Nucleo, и выбрать лучшее на свой взгляд.

  • @user-je8oz6lh6w
    @user-je8oz6lh6w Жыл бұрын

    Для тех, кто любит читать коментарии. В ролике прозвучало (11:40) "...это для того случая, когда надо внешним резистором энумерейшн включить...". Докладываю. Оказывается у STM32F103, без подтяжки сигнала USB_DP к питанию, USB не работает от слова совсем. Хотя как вы видите на видео, в списке процессоров, кому это необходимо, F103го нет.

  • @admin_of_youtube
    @admin_of_youtube4 жыл бұрын

    интересное видео, спасибо!

  • @motoday3580
    @motoday35804 жыл бұрын

    Реально актуальная тема ! По своему опыту, в простых разработках использую сопротивления , в более жирных проектах использую защитные микросхемы.

  • @motoday3580

    @motoday3580

    4 жыл бұрын

    Добрый день! Почитайте о типах микросхем !

  • @PastuhMedvedey
    @PastuhMedvedey4 жыл бұрын

    Понравилось видео . Но хотелось бы еще услышать и про эмуляцию линий RTS CTS для такого виртуального com порта, и то как сделать их например два, или более. Спасибо.

  • @user-tg6ox3wh4v
    @user-tg6ox3wh4v4 жыл бұрын

    Интересно.

  • @WISELORD
    @WISELORD4 жыл бұрын

    CDC, Mass storage и прочее по отдельности - не слишком интересно, так как уже фактически встроено в Cube. А вот когда, скажем, хочется одновременно и CDC и HID - и вот тут-то полный затык получается.

  • @f33net
    @f33net2 жыл бұрын

    Самая лучшая консоль это TeraTerm - очень рекомендую, не пожалеете, настоящий терминал, а не дуринкина фигня. Тока UTF по умолчанию у него выключено, надо в настройках включить.

  • @sergey3947
    @sergey39474 жыл бұрын

    Спасибо за видео, оно оказалось очень полезным, повторил VCM в CubeIDE. Только возникает вопрос: зачем нужна функция CDC_Init_FS если она не используется ?

  • @zhen.shenka
    @zhen.shenka4 жыл бұрын

    Выскажу своё представление. Все способы развязки USB правильные и не правильные одновременно. Зависит от того какой уровень защиты и помехоустойчивости хотите получить. Если вам нужны цепи особого исполнения с защитой класса ia, то ставите одну обвязку и жертвуете скоростью и стабильность. Если надо выжать из usb максимум то выравнивание все длины и импедансы. Ну или экономите на комплектухе и молитесь чтоб статикой не прошло.

  • @user-qo6uk4xs7m
    @user-qo6uk4xs7m3 жыл бұрын

    На канале компании ST есть видео-тренинг по USB. В одном из видео рассказывается про ESD, про резисторы в цепях D+/D- (и почему их не надо ставить), про подтяжки и т.д. В этом видео инженер ST говорит о том, что зачастую люди, в качестве образца для своих устройств, берут схемотехнику USB с демо плат ST, типа Discovery. Он говорит, что в некоторых их платах есть ошибки по части USB (с примерами). Но насколько я понял, проблемы в схемах есть только у FullSpeed, а для HighSpeed и в схемах, и в документации, ошибок нет. Возможно это видео окажется полезным, я оставлю ссылку: STM32 USB training - 07 STM32 USB hardware design kzread.info/dash/bejne/qKugureIiZqxiZM.html

  • @VladimirMedintsev

    @VladimirMedintsev

    3 жыл бұрын

    Ролики от ST всегда славились индийским английским и дичайшими неточностями. Читать их ещё куда не шло, но блин слушать, бедные мои уши...

  • @user-qo6uk4xs7m

    @user-qo6uk4xs7m

    3 жыл бұрын

    @@VladimirMedintsev да есть такое )), но в этом ролике не индус, но звук хреновый.

  • @Red_Avenger

    @Red_Avenger

    Жыл бұрын

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

  • @MrBorsoft
    @MrBorsoft4 жыл бұрын

    Спасибо за ролик👍🏼 А заливать прошивку через этот USB средствами стандартного бутлоадера возможно? И ещё вопрос - на платах Nucleo во встроенном st-link’e есть Virtual COM port, на который выведен uart2 от STM32. Получается там чип st-link’a просто перебрасывает данные со входа своего uart’а (от uart2 STM32) на usb. Ну и обратно соответсвенно… Так?

  • @VladimirMedintsev

    @VladimirMedintsev

    4 жыл бұрын

    1.Да, можно. 2. Да, упрощенно можно сказать и так.

  • @RepomanBY
    @RepomanBY4 жыл бұрын

    Удобно будет каждый раз при перепрошивке девайса (раз уж речь идет об отладке) закрывать-открывать порт, т.к. он в эти моменты будет исчезать из системы?

  • @iwh1te340

    @iwh1te340

    4 жыл бұрын

    Совершенно верно, для отладки лучше использовать uart, да и скорость можно поставить побольше.

  • @vadimerofeev1148
    @vadimerofeev11484 жыл бұрын

    Так и назовите: "имплементация USB для чацников".

  • @Michael_Kaa
    @Michael_Kaa4 жыл бұрын

    USBLC6 на практике не раз выручала.

  • @liliansirbu840
    @liliansirbu8402 жыл бұрын

    насколько реально писать USB через DMA? можешь показать нам?

  • @arakeldesign
    @arakeldesign4 жыл бұрын

    @Vladimir помогите пожалуйста советом. Собираю наручные электронные часы, сзади есть 4 контактные площадки для зарядки. Стоит ли защищать от статики цепи которые подключены к данным площадкам (там + - и SWD для прошивки)?

  • @VladimirMedintsev

    @VladimirMedintsev

    4 жыл бұрын

    Я бы поставил защиту. Причина проста, корпус наверняка пластик, одежда любая, ну по-любому там будет статика. Мы же двигаемся. Поглядите на ESDA5V3SC5

  • @arakeldesign

    @arakeldesign

    4 жыл бұрын

    Vladimir Medintsev понял, спасибо, но корпус алюминий анодированный. В этом случае насколько это критично?

  • @VladimirMedintsev

    @VladimirMedintsev

    4 жыл бұрын

    @@arakeldesign Тогда не переживайте. Выживет.

  • @arakeldesign

    @arakeldesign

    4 жыл бұрын

    Vladimir Medintsev спасибо, хороший человек)

  • @user-je8oz6lh6w
    @user-je8oz6lh6w3 жыл бұрын

    Сделал всё как в этом видео. Но COM порт в диспетчере устройств не появился. Windiws 7. Более того - при подключении USB сразу же слетает программатор. Что не есть хорошо т.к. питание схемы у меня происходит от USB. Пришлось применить другой источник питания. Есть какие мысли на этот счет ?

  • @VladimirMedintsev

    @VladimirMedintsev

    3 жыл бұрын

    Нет, проверять подключения и земляные петли. Может по питанию бяка лезет

  • @user-je8oz6lh6w

    @user-je8oz6lh6w

    3 жыл бұрын

    @@VladimirMedintsev ок. Спасибо

  • @user-gb1xp3ej2i
    @user-gb1xp3ej2i4 жыл бұрын

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

  • @VladimirMedintsev

    @VladimirMedintsev

    4 жыл бұрын

    Там в начале видео целых три платы мелькало. Вы хотели увидеть схему которой из них?

  • @user-gb1xp3ej2i

    @user-gb1xp3ej2i

    4 жыл бұрын

    @@VladimirMedintsev тайминг на 0:30, при беглом просмотре, на плате USB-изолятор (ADUM) и изолированный dc-dc преобразователь, если я все правильно понял. Именно эта часть схемы меня интересует... Я так же делаю проект с применением USB Virtual COM port, но что-то с ADUM у меня нечего не работает, без него все хорошо определяется, а с ним ни в какую. Хотел бы посмотреть как вы развели ADUM

  • @VladimirMedintsev

    @VladimirMedintsev

    4 жыл бұрын

    А, блин вы про программатор. Я уже делал когда-то видео с ADum - kzread.info/dash/bejne/Y3mH1rCfoNPbnbA.html Схема изолятора доступна вот по этой ссылке - yadi.sk/i/4HY0NIhPngYbsQ А вот схема того устройства что на видео показано - yadi.sk/i/dN5rBeliyy8oeg

  • @user-gb1xp3ej2i

    @user-gb1xp3ej2i

    4 жыл бұрын

    @@VladimirMedintsev Спасибо, большое

  • @VladimirMedintsev

    @VladimirMedintsev

    4 жыл бұрын

    Удачи

  • @user-je8oz6lh6w
    @user-je8oz6lh6w Жыл бұрын

    Здравствуйте Владимир! Убив значительное время, решился обратиться за помощью. Суть - не заводится Virtual Com Port. Причем на 2х разных изделиях. На одном стоит STM32F103C8T6, на другом - STM32F103R8T6. Правильность разводки проверил, кабель прозвонил, в кубе всё инициализировал правильно. И тишина. Скажу ещё что с USB я уже раньше работал на 2х изделиях. На одном - был STM32L433 - сделал на нем Virtual ComPort, на другом был STM32L476 - сделал на нем Mass Storage Host Class. Проблем никаких не возникало. Поэтому сегодняшняя ситуация стала полной неожиданность. Вопрос: Приходилось ли Вам работать с USB на F103 и нет ли там каких недокументированных особенностей ?

  • @VladimirMedintsev

    @VladimirMedintsev

    Жыл бұрын

    Вообще ни разу не трогал F103 процессор. Я его сильно не люблю. Так что по теме я подсказать точно ничего не могу.

  • @user-je8oz6lh6w

    @user-je8oz6lh6w

    Жыл бұрын

    @@VladimirMedintsev Я разобрался !!! У F103 сигнал USB_DP надо подтягивать к питанию резистором 1К5 !!!!!

  • @VladimirMedintsev

    @VladimirMedintsev

    Жыл бұрын

    @@user-je8oz6lh6w А вы об.этом не знали?????

  • @user-je8oz6lh6w

    @user-je8oz6lh6w

    Жыл бұрын

    @@VladimirMedintsev Нееет! У STM32L433 с которым я работал, так делать не надо.

  • @VladimirMedintsev

    @VladimirMedintsev

    Жыл бұрын

    @@user-je8oz6lh6w Блин. Я в каком-то древнем видео об этом говорил. Кстати такое же и в более современных МК встречается. Например STM32F303CBT тоже нуждается в подтяжке. А вообще где-то есть AN в котором ST пишет кому подтяжка нужна а кому не нужна.

  • @leoned1797
    @leoned17973 жыл бұрын

    Ох! Скольк же раз я сжигал USB на 103c8..

  • @user-co8un6lx3t

    @user-co8un6lx3t

    3 жыл бұрын

    Как вам удалось, поясните нубу..

  • @leoned1797

    @leoned1797

    3 жыл бұрын

    @@user-co8un6lx3t статикой

  • @dmitriibannikovasx
    @dmitriibannikovasx2 жыл бұрын

    Не понимаю, почему бы разработчикам чипов не встраивать все эти подтяжки, защиты от статики и прочую обвязку, относящуюся к usb в свои чипы при проектировании? Не пинайте сильно, если глупый вопрос)

  • @f33net

    @f33net

    2 жыл бұрын

    Они так и сделали, но стеснялись сказать об этом уверенно. В последнем АN, собственно, Ваше пожелание и удовлетворили.

  • @uvatenkovdmitrii1847
    @uvatenkovdmitrii18472 жыл бұрын

    Уважаемый автор! Быть может подскажете как снять защиту flach памяти полетного контроллера на чипе ARM STM32F722RET6. Контроллер не определяется ПК. Заранее спасибо.

  • @VladimirMedintsev

    @VladimirMedintsev

    2 жыл бұрын

    Никто в здравом уме вам этого не подскажет.

  • @dmitriibannikovasx

    @dmitriibannikovasx

    2 жыл бұрын

    Я думаю, тут только искать статьи про реверс инжиниринг этого чипа, ну либо делать это самому)

  • @f33net

    @f33net

    2 жыл бұрын

    Вообще, это описано в даташите в разделе FMC. В HAL есть функции по этому поводу.

  • @f33net

    @f33net

    2 жыл бұрын

    @@VladimirMedintsev легальную защиту флэш от записи легко выключать/включать регистрами FMC. Если человек спрашивал не про защиту от чтения...

  • @scilab5929

    @scilab5929

    2 жыл бұрын

    @@f33net Судя по исходному вопросу у него не определяется контроллер. А значит стоит защита RDP и она не имеет никакого отношения к FMC.

  • @Michael_Kaa
    @Michael_Kaa4 жыл бұрын

    Лучшая консоль это putty. vt100 и прочее. Не ради холивара.

  • @sailtogether3236

    @sailtogether3236

    2 жыл бұрын

    А screen чем вам не зашёл? Не ради троллинга.

  • @Michael_Kaa

    @Michael_Kaa

    2 жыл бұрын

    @@sailtogether3236 Как то он мимо меня прошел....

  • @dmitriibannikovasx
    @dmitriibannikovasx2 жыл бұрын

    А нет никакого метода, позволяющего понять, открыт ли порт?

  • @alx643
    @alx6434 жыл бұрын

    ну правильно, чем быстрее спалишь контроллер, тем быстрее у них купишь новый...

  • @user-zj8ib5sw7l
    @user-zj8ib5sw7l4 жыл бұрын

    Диоды особо не помогли при контакте с щупом осциллографа и незаземленном компьютере.

  • @VladimirMedintsev

    @VladimirMedintsev

    4 жыл бұрын

    Разумеется, это ведь была уже не статика... Это было больно.

  • @user-mm7zi4ey6i

    @user-mm7zi4ey6i

    4 жыл бұрын

    @@kokotmkokot4926 каким образом осцил палит мк? Можете объяснить с точки зрения схемотехники?

  • @bogdan1543

    @bogdan1543

    4 жыл бұрын

    @@user-mm7zi4ey6i ground loops в Google

Келесі