Pull to refresh

Comments 57

Данная статья была нацелена на новичков в разработке embedded-устройств
Главный вопрос зачем новичку в embedded разработке использовать USB3? Особенно учитывая, что большая часть любительского железа физически не потянет даже 480 Мб/с. Плюс проблемы разводки платы: даже для USB2 уже иногда требуется согласовывать линии.
Иначе говоря, это все уже далеко не уровень новичка.
Многие любительские устройства работают на интерфейсах USB2.0 FS или LS. Там скорости не такие большие, и согласование линий не так сильно влияет на работоспособность.
Новичка не всегда стоит ассоциировать с любителем. Создание конкурентоспособной техники подразумевает использование самых современных интерфейсов. Поэтому многие стажеры и молодые инженеры-разработчики очень скоро будут иметь дело с USB3.2/USB4 интерфейсами.
Здравствуйте,

Никак не мог пройти мимо с вопросами:
Для высокочастотных дифференциальных пар рекомендуем использовать минимум шестислойную печатную плату

А почему? Скажем, какой-нибудь LGA1151 вместе с памятью и периферией спокойно кладется на 4х слоях. Что дадут 6 слоев?
image
На этой картинке видно что, вроде как, есть некий вырез под антипад, однако по расположению сигнальных виа и размеру самого антипада это не похоже на 90 Ом- правильно ли я понимаю, Вы не симулировали антипад в EM софте? Помимо всего прочего, с одного бока виа на землю(которое и станет т.н. return via), а с другого на питание- как же преобразование мод? Еще и странный via sharing с конденсатором- зачем?
image
Вы на полном серьезе предлагаете ставить такие бампы на USB.3.x? И к слову, какое расстояние выход от сигналов на внешних слоях до ближайшей опоры и какое до полигона на внешних же слоях?

А почему? Скажем, какой-нибудь LGA1151 вместе с памятью и периферией спокойно кладется на 4х слоях. Что дадут 6 слоев?

На 6 слоях можно выделить два слоя полностью под землю для формирования опорных слоев. С 4 слоями тоже можно, но сложнее. Многое, конечно же, зависит от специфики устройства и существующих ограничений.

На этой картинке видно что, вроде как, есть некий вырез под антипад, однако по расположению сигнальных виа и размеру самого антипада это не похоже на 90 Ом- правильно ли я понимаю, Вы не симулировали антипад в EM софте?

Да, вырез под антипад есть. Симуляцию мы не проводили, поэтому придерживаемся рекомендаций по трассировке USB 3.х от ведущих компаний, в том числе TI. Конструкция, представленная на рисунке, этим рекомендациям соответствует.

Помимо всего прочего, с одного бока виа на землю(которое и станет т.н. return via), а с другого на питание- как же преобразование мод? Еще и странный via sharing с конденсатором- зачем?

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

Вы на полном серьезе предлагаете ставить такие бампы на USB.3.x?

Да, тут Вы правы, попался некорректный пример. Рисунок заменили.

И к слову, какое расстояние выход от сигналов на внешних слоях до ближайшей опоры и какое до полигона на внешних же слоях?

0.15 / 0.4

Спасибо за Ваш комментарий!
Спасибо за статью! Требуется ли подтяжка пинов A5/B5 (CC1/CC2) к земле через резистор, если разъём нужен только для питания?
Да, данные резисторы все равно необходимы. Без них хост-устройство не сможет проинициализировать устройства на линии и не будет подавать питание.
Что конкретно Вы хотели бы услышать? Про протокол Power Delivery? На Хабре есть хорошая статья на эту тему.
UFO just landed and posted this here
По приведенной Вами ссылке есть информация о распиновке данного разъема. К сожалению, он имеет только 6 пинов:
2 — Vbus;
2 — GND;
2 — CC пины;
Его можно использовать только для подачи питания — необходимо оба CC пина подтянуть резисторами 5.1 кОМ на землю.

Но мы не рекомендуем использовать такие разъемы, поскольку нет никакой гарантии в их качестве. У нас был печальный опыт использования подобной продукции.
UFO just landed and posted this here
Можно использовать любой разъем, главное проверить распиновку и убедиться, что присутствуют пины DP(D+) и DM(D-).
Хорошим примером данного разъема является СX90M-16P от Hirose Connector.
В аналогии с тем, который Вы хотели использовать, подойдет вот этот, но про его качество мы ничего не можем сказать, и Вы покупаете его на свой страх и риск.
Как правильно его подключать смотрите в статье в разделе «Поддержка интерфейса USB2.0».
UFO just landed and posted this here
Какой USB3? Много ли современных микроконтроллеров хотя бы полноценный USB2 умеют? А много ли программистов правильно осилят написать все необходимое, чтобы шина работала полноценно?
Какой type C? А паять его кто будет?
Много ли современных микроконтроллеров хотя бы полноценный USB2 умеют?

С внешней физикой — многие STM32 умеют, как и MSP432 от TI, например.
У NXP — есть куча чипов с внутренним HS PHY, вот прямо сейчас у меня в проекте подобный, из семейства LPC4300.

А такие статьи — дико полезные, спасибо большое. Да, у МК USB3 вроде нету, зато его можно прикручивать к FPGA.
Имеется в виду не usb1 со скоростью 1.5 Мб/с или 12 Мб/с, пусть даже с расширенными возможностями. А хотя бы о 480 Мб/с. У большинства контроллеров не хватит быстродействия хотя бы для подготовки данных.
Статьи полезные, но явно не для начинающих.
Используя DMA и прерывания можно выжать хорошие скорости. Тем не менее Type-C не только про скорость, но и про удобство использования. Даже, если у Вас устройство передает данные на ПК раз в секунду, конечному пользователю удобнее будет подключить его по Type-C нежели по micro/miniUSB.
При частоте порядка 100 МГц никакие программные и аппаратные ухищрения не помогут генерировать достаточно данных хотя бы на USB2.0
Даже, если у Вас устройство передает данные на ПК раз в секунду, конечному пользователю удобнее будет подключить его по Type-C нежели по micro/miniUSB.
Это вопрос скорее разъема, чем интерфейса. И то USB-A все еще гораздо более распространен.
А почему Вы пишете о частоте порядка 100 МГц? STM32H7 работают и на 550 МГц, NXP — и на 600 МГц. И до кризиса полупроводников STM32H750 в LQFP стоили порядка $6.
Есть серия FX3 от Cypress. Там полноценный USB3 с достаточно быстродействующим ядром.
По первой ссылке в гугле вылез контроллер в 120-выводном BGA (уже ясно, что не для новичков) и с частотой 200 МГц. Как эта частота согласуется с 5 Гб/с пока непонятно.
Да, данный контроллер не запаять паяльником на плату, но преимущества USB3.0 он способен раскрыть практически на полную. Если интересно, вот документ , в котором производители тестируют его пропускную способность.
Глубоко документ не смотрел, но судя по таблицам, максимум что смогли выжать это 454 кБ/с, то есть менее 5 Мб/с. Это скорость USB1.1
но в таблице написано 454,300, а не 454300. Впрочем, в другом месте, не в таблице, действительно пишут 403.2 MB/s. Частоту ядра я там не нашел, как и соотношения его со скоростью обмена.

Буржуи используют десятичную точку, а запятую — как разделитель групп разрядов для удобства чтения больших чисел.

Именно поэтому в тексте стоит использовать пробелы или одинарные кавычки: 454 300 или 454`300.
Вопрос про частоту ядра остается. Откуда контроллер берет достаточно данных для usb?

Кому стоит, Cypress Semiconductor в своём документе на американском английском? Нет, не стоит. Они пишут в согласии с типографическими правилами английского языка и там для разделения используются именно запятые.


Ни в тексте данной статьи, ни даже в комментариях к ней, кроме вашего комментария, я не вижу использования запятой в качестве разделителя разрядов в тексте на русском языке. Если я пропустил и таковое всё же имеется в тексте статьи: выделить текст, Ctrl+Enter и написать сообщение автору.


Вопрос про частоту ядра остается. Откуда контроллер берет достаточно данных для usb?

Вам уже сказали, что частота ядра здесь вообще ни при чём. ПДП (DMA) и либо уже готовые данные в памяти, либо от внешнего устройства, опять же, с использованием DMA.


Ядро контроллера типичного SSD не сможет сгенерировать столько данных, чтобы загрузить интерфейс, да и не должно — его задача настроить оборудование, а дальше оно само, без участия ядра, занимается передачей данных от одного устройства к другому.


А частота для USB получается via Phase-locked loop (PLL):


Many electronic systems include processors of various sorts that operate at hundreds of megahertz. Typically, the clocks supplied to these processors come from clock generator PLLs, which multiply a lower-frequency reference clock (usually 50 or 100 MHz) up to the operating frequency of the processor. The multiplication factor can be quite large in cases where the operating frequency is multiple gigahertz and the reference crystal is just tens or hundreds of megahertz.

Или, вот ещё ссылка: Phase-locked loops with frequency dividers.

Вы лучше скажите прямо — для DIY он подходит?
Под DIY использованием я подразумеваю следующее:
1) Его можно использовать для типовых DIY-шных MCU (STM32F, ATMEGA/XMEGA c usb-uart)*
2) Для разводки платы не нужны какие-то сокральные знания о согласовании линий, волновом сопротивлении и т.д.
3) Его можно припаять обыным паялником как смд компонент (хотябы 0806)
4) Требования к технологии изготовления ПП достаточные для того, чтбы заказывать у китайцев на jlcpcb ну или на крайняк — в резоните.

* Не нужны какие-то сверхспособности type-c. Тостаточно передачи питания и скоростей usb1/2.
Почему нет? В статье же сказано, что заведены обычные линии 2.0, так что используйте на здоровье.
P.S. Даже 0402 паяются паяльником спокойно.
Наверно я плохо рассмотрел, но в примере трассировки в статье — SMD выводы от разъема находятся довольно далеко от края корпуса. Как паяльником до них добраться чтобы припаять?
image
Ну при желании можно… наверное. Или просто взять другой разъём.
Скажу больше — если брать Foxconn разъем UT12113-11601-7H с двойным рядом SMD ножек, похожего футпринтом на тот, что на рисунке в статье — он и на производстве плохо запаивается.
Вот только что обнаружил, что он на нашей серверной материнке в производстве не запаян совсем. Шилд запаян, там trough-hole, а SMD ножки — нет. Полез в аналогичную из брэндового масс продакшен — тоже. Еще на одной серийной, другого брэнда — повезло :) там припаяли как-то.
Но его и вправду запаять трудно — ноги прикрыты шилдом со всех сторон, и не прогреваются ничем.
Да, он подходит для DIY устройств.
Теперь по порядку на Ваши вопросы:
1) Нет никаких проблем использования с перечисленными MCU. В подобных решения USB-UART, при использовании mini/microUSB и тд., задействуются линии D+/D-. Те же самые линии данных присутствуют и в разъеме USB Type C.
2) Нет, это ведь всего лишь разъем. )) Все эти «сакральные» знания необходимы для правильной трассировки высокочастотных сигналов. Для устройств, использующих USB LS/FS USB-Uart и т.п., этот вопрос не является принципиальным.
3) Возможно и паяльником, но надо понимать, что разъемов Type C великое множество, и все они немного отличаются свой конструкцией. Для DIY решений, которые не используют какие-то высокочастотные сигналы (USB3.2 и т.д.), хорошим вариантом можно считать CX90M-16P от Hirose Connector. Данный вариант можно посчитать достаточно дорогостоящим, поэтому есть и более дешевая альтернатива из комментария выше. У подобных разъемов контактов не так много и они все легко доступны для пайки.
4) И «Резонит» и «JLCPCB» обладают технологиями, достаточными для изготовления ПП c разъемом Type C.
Основная проблема заключается в том, что существует огромное разнообразие видов конструкций разъема. Поэтому, главное — внимательно проверить футпринт разъема, которые Вы хотите использовать.
спасибо за разъяснения, буду пробовать
выводной — просто супер! пошел заказывать.
Его можно припаять обыным паялником

А зачем вы ограничиваете себя? По-моему, можно один раз разориться на какую-нибудь Lukey 702 (можно купить менее, чем за 5тр новую в локальном магазине в России) или что-то подобное. Для DIY такой станции должно хватить надолго.


Качество и скорость вашей пайки возрастут значительно. И можно больше не бояться небольших QFN и BGA: например, я спокойно такой станцией перепаиваю eMMC (шаг между выводами 0,5 мм) на небольших платах (на больших без станции нижнего подогрева сложнее, но тоже можно научиться для DIY).

Не посоветуете МК, чтобы попробовать USB3? C поддержкой USB2.0 достаточно просто, хоть atmega32u4+LUFA, а вот аппаратного 3.0 с нормальными библиотеками я что-то не видел.

Если рассматривать именно микроконтроллеры со встроенным USB3.0, то кроме FX3 от Cypress вроде бы и нет вариантов. SDK у них неплохой, но исходники закрыты. Посмотреть, что дергают функции на уровне регистров не получится. Хотя скорее всего это и не понадобится.

Исходники старого SDK точно есть, они выкладывали их на своем форуме вместе с инструкцией по сборке.

У Type-C есть один важный недостаток — отсутствие фиксаторов. Как следствие, при частом использовании вилка очень скоро начинает весьма слабо фиксироваться в розетке и даже при слабом усилии может выпадать. МикроUSB случайно не извлечь, два его зуба-фиксатора держат вилку в розетке довольно прочно.
Отсюда логичный вывод — для устройства, которым будут пользоваться часто при небольшом объеме передаваемой информации микроUSB предпочтительнее. Надежнее.
У Type-C разъёма на моей материнке недостаток другой — он слишком тугой, тяжело вставляется флешка. Зато симметричность Type-C бывает очень кстати.
А вот разболтанных micro-USB в доме хватает, он слишком плоский и легко сгибается в поперечном направлении, в отличие от (надеюсь) Type-C.
UFO just landed and posted this here

Странно, не попадались такие разъемы. Все фирменные разъемы, с которыми имел дело, держали кабель прочно. Также при постоянном переподключении не расшатывались. Возможно Вам попались не качественные разъемы. Так как один раз все же закупили китайские разъемы, так они вообще через 10 подключений переставали полностью работать.

Родственник смартфон купил с USB Type-C, так месяцев через 7-8 начало происходить именно это — при очень легком усилии зарядный кабель выпадает из разъема.
Я свой предыдущий смартфон покупал в 2012 году, тот, с которым сейчас хожу — в феврале 2018. Оба с микроUSB, таких проблем нет. Отсюда и вывод. Вообще не понимаю, зачем было делать так, чтобы разъем обязательно в любом из двух положений мог работать. У современных пользователей не хватает интеллекта определить местоположение ключа на разъеме? Если б не это требование, можно было бы фиксаторы сделать…

У меня была такая фигня, правда не так быстро проявилась, в разъём что-то попало скорее всего, на стороне телефона, надо тонкой иголочкой аккуратно почистить. Возможно поможет.

UFO just landed and posted this here
У них есть фиксаторы — чувствуется щелчок при вставке кабеля. Если у вас щелчка нет, то скорее всего забилась грязь на дно разъема.

А надежность в плане расшатывания протестирована достаточно подробно профессионалами и любителями на ютюбе.
На практике из USB3 контроллеров все равно нет ничего лучше Cypress FX3 который в теории дает 3.2 Gbps (по 32 * SE 100 Mbps), а на практике модно выжать 3 Gbps. Альтернативы — дорогие IP блоки на ПЛИС.
Вот без резисторов на CC1/CC2 можно поймать забавное: с кабелем USBA-USBC все работает, так как за неимением этих контактов в USBA питание подается постоянно, а с USBC-USBC питания нет. Причем этим страдают даже китайские платки с USBC, видимо, рассчитанные и тестированные на компы с обычными разъёмами.

Знаю что есть от Molex USB-C коннектор выводной и дешевый.
Знаете кто-нибудь партнамбер?


P.S. ставил USB-C на промышленную аппаратуру еще в 2016 году, когда не на всех телефонах оно еще было! Удобно что по USB-C телефон еще умеет питать аппаратуру, а в анроиде есть драйвера для ft232.

Правильно я понял, что если я на плату (usb device 2.0) хочу поставить usb-c вилку, чтоб устройство втыкалось в хост без кабеля, мне достаточно поставить резистор только на А5(CC1) и использовать только одну пару A6(D+) и A7(D-)?
Да, для Вашего случая все верно. Для USB2.0 со стороны «вилки» используются только 2 пина — А6 и А7. А для определения подключённого устройства со стороны хоста необходимо подтянуть пин А5 к земле через резистор номиналом 5,1 кОм.
1) Более быстрых альтернатив Cypress FX3 за много лет так и не сделали, кроме программных IP на ПЛИС.

2) Если есть место, то по надёжности нет ничего лучше большого разъема USB-B без всяких микро.
Sign up to leave a comment.