Интерфейс 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. Перенап... - Наука та технологія
Подтягивающие к земле резисторы 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, и выбрать лучшее на свой взгляд.
Для тех, кто любит читать коментарии. В ролике прозвучало (11:40) "...это для того случая, когда надо внешним резистором энумерейшн включить...". Докладываю. Оказывается у STM32F103, без подтяжки сигнала USB_DP к питанию, USB не работает от слова совсем. Хотя как вы видите на видео, в списке процессоров, кому это необходимо, F103го нет.
интересное видео, спасибо!
Реально актуальная тема ! По своему опыту, в простых разработках использую сопротивления , в более жирных проектах использую защитные микросхемы.
Добрый день! Почитайте о типах микросхем !
Понравилось видео
. Но хотелось бы еще услышать и про эмуляцию линий RTS CTS для такого виртуального com порта, и то как сделать их например два, или более. Спасибо.
Интересно.
CDC, Mass storage и прочее по отдельности - не слишком интересно, так как уже фактически встроено в Cube. А вот когда, скажем, хочется одновременно и CDC и HID - и вот тут-то полный затык получается.
Самая лучшая консоль это TeraTerm - очень рекомендую, не пожалеете, настоящий терминал, а не дуринкина фигня. Тока UTF по умолчанию у него выключено, надо в настройках включить.
Спасибо за видео, оно оказалось очень полезным, повторил VCM в CubeIDE. Только возникает вопрос: зачем нужна функция CDC_Init_FS если она не используется ?
Выскажу своё представление. Все способы развязки USB правильные и не правильные одновременно. Зависит от того какой уровень защиты и помехоустойчивости хотите получить. Если вам нужны цепи особого исполнения с защитой класса ia, то ставите одну обвязку и жертвуете скоростью и стабильность. Если надо выжать из usb максимум то выравнивание все длины и импедансы. Ну или экономите на комплектухе и молитесь чтоб статикой не прошло.
На канале компании 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
Ролики от ST всегда славились индийским английским и дичайшими неточностями. Читать их ещё куда не шло, но блин слушать, бедные мои уши...
@@VladimirMedintsev да есть такое )), но в этом ролике не индус, но звук хреновый.
По идее резисторы нужны как токовые ограничители. А сопротивление выбираться на основе предельного тока выходного каскада порта. Можно конечно и не ставить, но тогда в случае внештатной ситуации (замыкания данных на землю или питание) выходные ключи могут дать дуба (пробьёт или верхнее плечо или нижнее, по превышению тока).
Спасибо за ролик👍🏼 А заливать прошивку через этот USB средствами стандартного бутлоадера возможно? И ещё вопрос - на платах Nucleo во встроенном st-link’e есть Virtual COM port, на который выведен uart2 от STM32. Получается там чип st-link’a просто перебрасывает данные со входа своего uart’а (от uart2 STM32) на usb. Ну и обратно соответсвенно… Так?
1.Да, можно. 2. Да, упрощенно можно сказать и так.
Удобно будет каждый раз при перепрошивке девайса (раз уж речь идет об отладке) закрывать-открывать порт, т.к. он в эти моменты будет исчезать из системы?
Совершенно верно, для отладки лучше использовать uart, да и скорость можно поставить побольше.
Так и назовите: "имплементация USB для чацников".
USBLC6 на практике не раз выручала.
насколько реально писать USB через DMA? можешь показать нам?
@Vladimir помогите пожалуйста советом. Собираю наручные электронные часы, сзади есть 4 контактные площадки для зарядки. Стоит ли защищать от статики цепи которые подключены к данным площадкам (там + - и SWD для прошивки)?
Я бы поставил защиту. Причина проста, корпус наверняка пластик, одежда любая, ну по-любому там будет статика. Мы же двигаемся. Поглядите на ESDA5V3SC5
Vladimir Medintsev понял, спасибо, но корпус алюминий анодированный. В этом случае насколько это критично?
@@arakeldesign Тогда не переживайте. Выживет.
Vladimir Medintsev спасибо, хороший человек)
Сделал всё как в этом видео. Но COM порт в диспетчере устройств не появился. Windiws 7. Более того - при подключении USB сразу же слетает программатор. Что не есть хорошо т.к. питание схемы у меня происходит от USB. Пришлось применить другой источник питания. Есть какие мысли на этот счет ?
Нет, проверять подключения и земляные петли. Может по питанию бяка лезет
@@VladimirMedintsev ок. Спасибо
Насколько я понял, схема у вас заработала. В начале видео вы показывали платку, хотелось бы увидеть схему данной платы
Там в начале видео целых три платы мелькало. Вы хотели увидеть схему которой из них?
@@VladimirMedintsev тайминг на 0:30, при беглом просмотре, на плате USB-изолятор (ADUM) и изолированный dc-dc преобразователь, если я все правильно понял. Именно эта часть схемы меня интересует... Я так же делаю проект с применением USB Virtual COM port, но что-то с ADUM у меня нечего не работает, без него все хорошо определяется, а с ним ни в какую. Хотел бы посмотреть как вы развели ADUM
А, блин вы про программатор. Я уже делал когда-то видео с ADum - ua-cam.com/video/1EStNfppumM/v-deo.html
Схема изолятора доступна вот по этой ссылке - yadi.sk/i/4HY0NIhPngYbsQ
А вот схема того устройства что на видео показано - yadi.sk/i/dN5rBeliyy8oeg
@@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 пишет кому подтяжка нужна а кому не нужна.
Ох! Скольк же раз я сжигал USB на 103c8..
Как вам удалось, поясните нубу..
@@user-co8un6lx3t статикой
Не понимаю, почему бы разработчикам чипов не встраивать все эти подтяжки, защиты от статики и прочую обвязку, относящуюся к usb в свои чипы при проектировании? Не пинайте сильно, если глупый вопрос)
Они так и сделали, но стеснялись сказать об этом уверенно. В последнем АN, собственно, Ваше пожелание и удовлетворили.
Уважаемый автор! Быть может подскажете как снять защиту flach памяти полетного контроллера на чипе ARM STM32F722RET6. Контроллер не определяется ПК. Заранее спасибо.
Никто в здравом уме вам этого не подскажет.
Я думаю, тут только искать статьи про реверс инжиниринг этого чипа, ну либо делать это самому)
Вообще, это описано в даташите в разделе FMC. В HAL есть функции по этому поводу.
@@VladimirMedintsev легальную защиту флэш от записи легко выключать/включать регистрами FMC. Если человек спрашивал не про защиту от чтения...
@@f33net Судя по исходному вопросу у него не определяется контроллер. А значит стоит защита RDP и она не имеет никакого отношения к FMC.
Лучшая консоль это putty. vt100 и прочее. Не ради холивара.
А screen чем вам не зашёл? Не ради троллинга.
@@sailtogether3236 Как то он мимо меня прошел....
А нет никакого метода, позволяющего понять, открыт ли порт?
ну правильно, чем быстрее спалишь контроллер, тем быстрее у них купишь новый...
Диоды особо не помогли при контакте с щупом осциллографа и незаземленном компьютере.
Разумеется, это ведь была уже не статика... Это было больно.
@@kokotmkokot4926 каким образом осцил палит мк? Можете объяснить с точки зрения схемотехники?
@@user-mm7zi4ey6i ground loops в Google