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

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

КОМЕНТАРІ • 82

  • @anatoliygavrilov958
    @anatoliygavrilov958 4 роки тому +42

    Подтягивающие к земле резисторы 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
    @vadimvarlamov7907 4 роки тому +4

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

  • @VladimirMedintsev
    @VladimirMedintsev  4 роки тому +15

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

    • @user-co8un6lx3t
      @user-co8un6lx3t 3 роки тому +2

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

  • @f33net
    @f33net 2 роки тому +4

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

  • @TEENASPECT
    @TEENASPECT 4 роки тому +3

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

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

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

  • @ajdarseidzade688
    @ajdarseidzade688 4 роки тому +1

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

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 4 роки тому

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

  • @user-tz2zg3so2v
    @user-tz2zg3so2v 4 роки тому

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

  • @Insideus2786
    @Insideus2786 4 роки тому

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

  • @user-je8oz6lh6w
    @user-je8oz6lh6w Рік тому +3

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

  • @admin_of_youtube
    @admin_of_youtube 4 роки тому

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

  • @motoday3580
    @motoday3580 4 роки тому +1

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

    • @motoday3580
      @motoday3580 4 роки тому

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

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

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

  • @user-tg6ox3wh4v
    @user-tg6ox3wh4v 4 роки тому +1

    Интересно.

  • @WISELORD
    @WISELORD 4 роки тому +3

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

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

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

  • @sergey3947
    @sergey3947 4 роки тому +1

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

  • @zhen.shenka
    @zhen.shenka 4 роки тому +3

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

  • @user-qo6uk4xs7m
    @user-qo6uk4xs7m 3 роки тому +3

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

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

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

    • @user-qo6uk4xs7m
      @user-qo6uk4xs7m 3 роки тому

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

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

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

  • @MrBorsoft
    @MrBorsoft 4 роки тому +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +3

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

  • @RepomanBY
    @RepomanBY 4 роки тому +1

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

    • @iwh1te340
      @iwh1te340 4 роки тому +1

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

  • @vadimerofeev1148
    @vadimerofeev1148 4 роки тому +2

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

  • @Michael_Kaa
    @Michael_Kaa 4 роки тому +1

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

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

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

  • @arakeldesign
    @arakeldesign 4 роки тому

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +2

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

    • @arakeldesign
      @arakeldesign 4 роки тому

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

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

    • @arakeldesign
      @arakeldesign 4 роки тому

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

  • @user-je8oz6lh6w
    @user-je8oz6lh6w 3 роки тому +2

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

    • @VladimirMedintsev
      @VladimirMedintsev  3 роки тому

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

    • @user-je8oz6lh6w
      @user-je8oz6lh6w 3 роки тому

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

  • @user-gb1xp3ej2i
    @user-gb1xp3ej2i 4 роки тому

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

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

    • @user-gb1xp3ej2i
      @user-gb1xp3ej2i 4 роки тому +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +2

      А, блин вы про программатор. Я уже делал когда-то видео с ADum - ua-cam.com/video/1EStNfppumM/v-deo.html
      Схема изолятора доступна вот по этой ссылке - yadi.sk/i/4HY0NIhPngYbsQ
      А вот схема того устройства что на видео показано - yadi.sk/i/dN5rBeliyy8oeg

    • @user-gb1xp3ej2i
      @user-gb1xp3ej2i 4 роки тому

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Удачи

  • @user-je8oz6lh6w
    @user-je8oz6lh6w Рік тому +1

    Здравствуйте Владимир! Убив значительное время, решился обратиться за помощью. Суть - не заводится 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
    @leoned1797 3 роки тому +1

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

    • @user-co8un6lx3t
      @user-co8un6lx3t 3 роки тому +1

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

    • @leoned1797
      @leoned1797 3 роки тому +1

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

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

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

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

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

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

    Уважаемый автор! Быть может подскажете как снять защиту 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_Kaa 4 роки тому +2

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

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

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

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

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

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

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

  • @alx643
    @alx643 4 роки тому +6

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

  • @user-zj8ib5sw7l
    @user-zj8ib5sw7l 4 роки тому

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

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

    • @user-mm7zi4ey6i
      @user-mm7zi4ey6i 4 роки тому +1

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

    • @bogdan1543
      @bogdan1543 4 роки тому

      @@user-mm7zi4ey6i ground loops в Google