Интерфейс USB. Виртуальный COM порт и схемотехника.
Vložit
- čas přidán 17. 11. 2019
- Рассказывается о том, как строится схемотехника интерфейса USB на микроконтроллерах STM32. Рассказывается о программировании и использовании USB Virtual COM port и использовании этого интерфейса при отладке.
Канал в телеграмм - t.me/vladimir_medintsev
Канал Яндекс.Дзен - zen.yandex.ru/vladimir_medintsev
Канал на RuTube - rutube.ru/channel/1797552/
Канал на CZcams - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------
Интерфейс USB. Создаем Mass Storage на STM32F4 и странные косяки от CubeMX - • Интерфейс USB. Создаем...
Отладка STM32. Перенаправление ввода-вывода. Возможности SWD, отладка больших программ. - • Отладка STM32. Перенап... - Věda a technologie
Подтягивающие к земле резисторы 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".
Спасибо за развернутый комментарий!
Вопрос. Если мы все же ставим диоды (или сбору TVS), и придет импульс. То где рассеится его энергия? Я вот именно для этого ставлю последовательные резисторы на 22 Ома. Но не уверен что это правильный подход.
@Денис Позолотин был заблокирован на канале за переход на личности и матершину. Меня поражает беспричинная агрессия некоторых индивидов. Материться идите за гаражами, а тут интернет, тут нельзя.
За гаражами знаете ли можно и выхватить, а тут ващпе не страшно ))
Очень познавательно. Часто в проектах с STM32 использую USB, либо для настроек, либо просто для отладки.
Так там же сэтэшики буковками написали "всё, народ, не балуйтесь - необходимая защита и согласование на борту, лепите прямые дорожки". На 2.0 повесить внешнюю ESD защиту можно, но на 3.0 она будет кусаться ёмкостью.
Крайне полезный и актуальный обзор, спасибо! И изюминкой про ардуиновский плоттер) Сколько раз проходил мимо и не заметил его.
Круто. Полезно. И кажется таким простым. Но потом садишься за комп, врубаешь кубмх, генеришь проект и тупишь часами в кейле.
За 'Serial Plotter' отдельное спасибо! А также за такое видео и кол-во материала в нем. Именно рассмотренных документов. Я все их, буквально все, нашел/скачал по-одному. Кроме "старой версии" AN4879 от ST. Хороший и большой обзор различной документации по USB и все уместилось в этом видео. Даже программная часть рассмотрена. Этакий вводный курс и пр. - ничего большего и не нужно, а дальше самому лучше запускать/разбираться.
Спасибо за видео. Тоже в свое время стояла задачи создания схемотехники USB интерфейса на STM32. В итоге решил не "изобретать велосипед", а посмотреть готовые решения от STM, проанализировать, то как это было сделано у них в демобордах Discovery и Nucleo, и выбрать лучшее на свой взгляд.
Спасибо, Владимир!
Спасибо за ваши видео
Реально актуальная тема ! По своему опыту, в простых разработках использую сопротивления , в более жирных проектах использую защитные микросхемы.
Добрый день! Почитайте о типах микросхем !
Понравилось видео
. Но хотелось бы еще услышать и про эмуляцию линий RTS CTS для такого виртуального com порта, и то как сделать их например два, или более. Спасибо.
Для тех, кто любит читать коментарии. В ролике прозвучало (11:40) "...это для того случая, когда надо внешним резистором энумерейшн включить...". Докладываю. Оказывается у STM32F103, без подтяжки сигнала USB_DP к питанию, USB не работает от слова совсем. Хотя как вы видите на видео, в списке процессоров, кому это необходимо, F103го нет.
интересное видео, спасибо!
Интересно.
Спасибо за видео, оно оказалось очень полезным, повторил VCM в CubeIDE. Только возникает вопрос: зачем нужна функция CDC_Init_FS если она не используется ?
CDC, Mass storage и прочее по отдельности - не слишком интересно, так как уже фактически встроено в Cube. А вот когда, скажем, хочется одновременно и CDC и HID - и вот тут-то полный затык получается.
Удобно будет каждый раз при перепрошивке девайса (раз уж речь идет об отладке) закрывать-открывать порт, т.к. он в эти моменты будет исчезать из системы?
Совершенно верно, для отладки лучше использовать uart, да и скорость можно поставить побольше.
Самая лучшая консоль это TeraTerm - очень рекомендую, не пожалеете, настоящий терминал, а не дуринкина фигня. Тока UTF по умолчанию у него выключено, надо в настройках включить.
Выскажу своё представление. Все способы развязки USB правильные и не правильные одновременно. Зависит от того какой уровень защиты и помехоустойчивости хотите получить. Если вам нужны цепи особого исполнения с защитой класса ia, то ставите одну обвязку и жертвуете скоростью и стабильность. Если надо выжать из usb максимум то выравнивание все длины и импедансы. Ну или экономите на комплектухе и молитесь чтоб статикой не прошло.
Сделал всё как в этом видео. Но COM порт в диспетчере устройств не появился. Windiws 7. Более того - при подключении USB сразу же слетает программатор. Что не есть хорошо т.к. питание схемы у меня происходит от USB. Пришлось применить другой источник питания. Есть какие мысли на этот счет ?
Нет, проверять подключения и земляные петли. Может по питанию бяка лезет
@@VladimirMedintsev ок. Спасибо
@Vladimir помогите пожалуйста советом. Собираю наручные электронные часы, сзади есть 4 контактные площадки для зарядки. Стоит ли защищать от статики цепи которые подключены к данным площадкам (там + - и SWD для прошивки)?
Я бы поставил защиту. Причина проста, корпус наверняка пластик, одежда любая, ну по-любому там будет статика. Мы же двигаемся. Поглядите на ESDA5V3SC5
Vladimir Medintsev понял, спасибо, но корпус алюминий анодированный. В этом случае насколько это критично?
@@arakeldesign Тогда не переживайте. Выживет.
Vladimir Medintsev спасибо, хороший человек)
Спасибо за ролик👍🏼 А заливать прошивку через этот USB средствами стандартного бутлоадера возможно? И ещё вопрос - на платах Nucleo во встроенном st-link’e есть Virtual COM port, на который выведен uart2 от STM32. Получается там чип st-link’a просто перебрасывает данные со входа своего uart’а (от uart2 STM32) на usb. Ну и обратно соответсвенно… Так?
1.Да, можно. 2. Да, упрощенно можно сказать и так.
насколько реально писать USB через DMA? можешь показать нам?
На канале компании ST есть видео-тренинг по USB. В одном из видео рассказывается про ESD, про резисторы в цепях D+/D- (и почему их не надо ставить), про подтяжки и т.д.
В этом видео инженер ST говорит о том, что зачастую люди, в качестве образца для своих устройств, берут схемотехнику USB с демо плат ST, типа Discovery. Он говорит, что в некоторых их платах есть ошибки по части USB (с примерами). Но насколько я понял, проблемы в схемах есть только у FullSpeed, а для HighSpeed и в схемах, и в документации, ошибок нет. Возможно это видео окажется полезным, я оставлю ссылку:
STM32 USB training - 07 STM32 USB hardware design
czcams.com/video/vwlXUOY7KY0/video.html
Ролики от ST всегда славились индийским английским и дичайшими неточностями. Читать их ещё куда не шло, но блин слушать, бедные мои уши...
@@VladimirMedintsev да есть такое )), но в этом ролике не индус, но звук хреновый.
По идее резисторы нужны как токовые ограничители. А сопротивление выбираться на основе предельного тока выходного каскада порта. Можно конечно и не ставить, но тогда в случае внештатной ситуации (замыкания данных на землю или питание) выходные ключи могут дать дуба (пробьёт или верхнее плечо или нижнее, по превышению тока).
Здравствуйте Владимир! Убив значительное время, решился обратиться за помощью. Суть - не заводится Virtual Com Port. Причем на 2х разных изделиях. На одном стоит STM32F103C8T6, на другом - STM32F103R8T6. Правильность разводки проверил, кабель прозвонил, в кубе всё инициализировал правильно. И тишина. Скажу ещё что с USB я уже раньше работал на 2х изделиях. На одном - был STM32L433 - сделал на нем Virtual ComPort, на другом был STM32L476 - сделал на нем Mass Storage Host Class. Проблем никаких не возникало. Поэтому сегодняшняя ситуация стала полной неожиданность. Вопрос: Приходилось ли Вам работать с USB на F103 и нет ли там каких недокументированных особенностей ?
Вообще ни разу не трогал F103 процессор. Я его сильно не люблю.
Так что по теме я подсказать точно ничего не могу.
@@VladimirMedintsev Я разобрался !!! У F103 сигнал USB_DP надо подтягивать к питанию резистором 1К5 !!!!!
@@user-je8oz6lh6w А вы об.этом не знали?????
@@VladimirMedintsev Нееет! У STM32L433 с которым я работал, так делать не надо.
@@user-je8oz6lh6w Блин. Я в каком-то древнем видео об этом говорил. Кстати такое же и в более современных МК встречается. Например STM32F303CBT тоже нуждается в подтяжке. А вообще где-то есть AN в котором ST пишет кому подтяжка нужна а кому не нужна.
USBLC6 на практике не раз выручала.
Насколько я понял, схема у вас заработала. В начале видео вы показывали платку, хотелось бы увидеть схему данной платы
Там в начале видео целых три платы мелькало. Вы хотели увидеть схему которой из них?
@@VladimirMedintsev тайминг на 0:30, при беглом просмотре, на плате USB-изолятор (ADUM) и изолированный dc-dc преобразователь, если я все правильно понял. Именно эта часть схемы меня интересует... Я так же делаю проект с применением USB Virtual COM port, но что-то с ADUM у меня нечего не работает, без него все хорошо определяется, а с ним ни в какую. Хотел бы посмотреть как вы развели ADUM
А, блин вы про программатор. Я уже делал когда-то видео с ADum - czcams.com/video/1EStNfppumM/video.html
Схема изолятора доступна вот по этой ссылке - yadi.sk/i/4HY0NIhPngYbsQ
А вот схема того устройства что на видео показано - yadi.sk/i/dN5rBeliyy8oeg
@@VladimirMedintsev Спасибо, большое
Удачи
Уважаемый автор! Быть может подскажете как снять защиту flach памяти полетного контроллера на чипе ARM STM32F722RET6. Контроллер не определяется ПК. Заранее спасибо.
Никто в здравом уме вам этого не подскажет.
Я думаю, тут только искать статьи про реверс инжиниринг этого чипа, ну либо делать это самому)
Вообще, это описано в даташите в разделе FMC. В HAL есть функции по этому поводу.
@@VladimirMedintsev легальную защиту флэш от записи легко выключать/включать регистрами FMC. Если человек спрашивал не про защиту от чтения...
@@f33net Судя по исходному вопросу у него не определяется контроллер. А значит стоит защита RDP и она не имеет никакого отношения к FMC.
Так и назовите: "имплементация USB для чацников".
Ох! Скольк же раз я сжигал USB на 103c8..
Как вам удалось, поясните нубу..
@@user-co8un6lx3t статикой
А нет никакого метода, позволяющего понять, открыт ли порт?
Не понимаю, почему бы разработчикам чипов не встраивать все эти подтяжки, защиты от статики и прочую обвязку, относящуюся к usb в свои чипы при проектировании? Не пинайте сильно, если глупый вопрос)
Они так и сделали, но стеснялись сказать об этом уверенно. В последнем АN, собственно, Ваше пожелание и удовлетворили.
Диоды особо не помогли при контакте с щупом осциллографа и незаземленном компьютере.
Разумеется, это ведь была уже не статика... Это было больно.
@@kokotmkokot4926 каким образом осцил палит мк? Можете объяснить с точки зрения схемотехники?
@@user-mm7zi4ey6i ground loops в Google
Лучшая консоль это putty. vt100 и прочее. Не ради холивара.
А screen чем вам не зашёл? Не ради троллинга.
@@sailtogether3236 Как то он мимо меня прошел....
ну правильно, чем быстрее спалишь контроллер, тем быстрее у них купишь новый...