В современных embedded-устройствах используется огромное количество различных разъемов, таких как USB Type-B, miniUSB, microUSB и так далее. Все они отличаются форм-фактором, максимальной пропускной способностью и другими различными характеристиками. Самым верным решением в данной ситуации было бы минимизировать количество используемых разъемов и остановиться на каком-то одном, «едином» для большинства разработок. Наиболее перспективным выглядит использование разъема Type-C. В нем объединены невероятная пропускная способность с высокой мощностью питания. Такие производители, как Apple, Huawei, Sony уже внедряют разъем Type-C в свои разработки, постепенно отказываясь от использования «старых» разъемов. А чем embedded-разработчики хуже? В данной статье мы приведем общую информацию, необходимую для практического применения Type-C. Наиболее полезной она будет для новичков в сфере embedded, но надеемся, что каждый найдет в ней что-то интересное. Если так получилось, что вы не доверяете выбору разработчиков таких интерфейсов, как USB4, Thunderbolt 3 (TBT3), DisplayPort 2.0 (DP) (все они работают через USB Type-C), то в Интернете достаточно много статей, описывающих различные преимущества разъема Type-C, более подробно можно почитать тут и тут. Мы же хотим представить вам небольшую, но полезную «шпаргалку», содержащую основные характеристики и примеры практического применения. Далее будут приведены основные характеристики разъема Type-C, которые необходимо знать. В Type-C реализовано множество функций для различных пинов: Рассмотрим их назначение: Описание: существует множество различных режимов передачи питания: от 5 В – 500 мА (2,5 Вт) до 20 В – 5 А (100 Вт). Но просто так заставить устройство работать на питании 20 В не получится, к тому же это было бы небезопасно. Для согласования напряжения между устройством и источником, значение которого превышает 5 В, используется протокол Power Delivery (PD). Без использования данного протокола максимальная мощность, которую может выдать хост-устройство, составляет 15 Вт (5 В – 3 А). Этого вполне достаточно практически для любого embedded-устройства, но, к сожалению, данное значение мощности (15 Вт) зависит от конфигурации хост-устройства и не всегда может быть достигнуто.
Power Delivery (PD) – это стандарт, устанавливающий роли «источник/потребитель» между устройствами, а также оптимальный уровень мощности между ними. Более подробно про данный протокол можно прочитать в этой статье. Характеристики: Описание: именно эти пины отвечают за определение ориентации подключения кабеля. Также один из этих пинов, в зависимости от ориентации подключения кабеля, становится источником питания (Vconn) для внутренних интегральных схем подключаемого активного кабеля. Общение между устройствами по протоколу PD происходит по второму оставшемуся пину. Для более простых устройств, в которых не требуется использовать протокол PD, подключение определяется пассивным способом: за счет резистивного делителя, образовавшегося на данной линии между устройствами. Характеристики:  Описание: данные пины являются дополнительными для различных интерфейсов. Для таких интерфейсов, как USB2/3.2 данные пины не используются. Во время работы интерфейса USB4 по этим пинам происходит инициализация интерфейса и дополнительная настройка его работы, а также инициализация линий данных и их направления. Для интерфейса DP эти пины выполняют работу AUX-канала. В режиме аудиоадаптера один из них (в зависимости от ориентации подключения) используется в качестве аналогового сигнала микрофона, второй же используется в качестве аналоговой «земли». Характеристики: Описание: стандартные линии данных для интерфейса USB 2.0. Сигналы симметрично повторяются на двух сторонах разъема для возможности работы с любой ориентацией кабеля. Для других интерфейсов, таких как USB3.2/USB4/TBT3/DP данные пины не используются. Таким образом, USB2.0 может работать параллельно с другими интерфейсами. В режиме аудиоадаптера эти пины используются в качестве правого и левого каналов аудиосигнала. Характеристики: Описание: высокочастотные дифференциальные пары, необходимые для передачи данных. Для различных интерфейсов скорость передачи отличается. Для интерфейсов USB4/TBT3/DP имеется возможность настроить все линии для передачи данных в одном направлении (режим Simplex). Таким образом, скорость передачи данных увеличивается в два раза. Характеристики: Ниже приведены ссылки на официальную документацию упомянутых стандартов: В спецификациях определение active cable (активный кабель) отличается. Так, в спецификации для протокола PD прописано, что активным считается тот кабель, который имеет поддержку SOP (Start of packet), то есть способен отвечать на запросы, отправленные ему протоколом PD, и сообщать свои характеристики (какие интерфейсы и варианты питания он способен поддерживать). В соответствии со спецификацией на Type-C активным кабелем является тот, который имеет внутри себя различные повторители, необходимые для улучшения передаваемого сигнала. Так как на данный момент по спецификации все кабели Type-C должны иметь электронную маркировку (Emark), то есть иметь поддержку SOP, правильнее будет считать активными кабелями только те, которые имеют различные ретаймеры и редрайверы.  ReTimer (ретаймер) и ReDriver (редрайвер) – микросхемы, установленные в линиях данных. Они обеспечивают улучшение проходящего сигнала. Ретаймеры и редрайверы могут устанавливаться на всем пути передачи сигнала: и в кабеле, и на печатных платах источника/получателя (если это необходимо).  Сигнал может затухать или ослабевать при передаче на большие расстояния. Для его восстановления используются данные микросхемы. Они имеют достаточно сложный принцип работы, мы не будем описывать его в данной статье. Следует отметить, что редрайвер – это более простое устройство, которое усиливает проходящий сигнал. Ретаймер – более сложное устройство, которое ретранслирует копию сигнала. Ниже приведен пример глазковой диаграммы ослабленного сигнала, проходящего через редрайвер и ретаймер соответственно. С появлением новых интерфейсов увеличивается скорость передачи данных, тем самым уменьшается и расстояние, на которое можно передать эти данные. Это видно, если обратить внимание на длину стандартных кабелей: И это с учетом того, что длина 0,8 м достижима только с использованием активных кабелей. Пассивные кабели (без использования различных повторителей) имеют длину только ~ 0,3 м. Кабель Optically Isolated Active (OIA). За счет своей внутренней структуры данный кабель способен передавать данные на расстояние более чем 50 м, тем самым увеличивая границу использования таких интерфейсов, как USB3.2/TBT3. Этот кабель электрически изолирован между двумя штекерами и должен иметь поддержку SOP с каждой из сторон. Но нужно учитывать, что кабель передает данные только дифференциальных пар RX/TX, поэтому питание и интерфейс USB2.0 не поддерживаются данным интерфейсом. Также необходимо, чтобы каждый из двух подключаемых устройств имел поддержку Vconn для питания внутренних интегральных схем кабеля. Уже в этом году ожидается разработка OIA-кабелей для интерфейса USB4. Также необходимо помнить, что не все кабели способны поддерживать все интерфейсы, поэтому лучшим на данный момент решением будет использовать кабель для TBT3-устройств, так как он поддерживает и максимальную передачу данных, и максимальную мощность питания (имеются в виду короткие кабели до 0,8 м). Обратная совместимость с разъемами предыдущего поколения. Для поддержки подключения устройств с Type-C к устройствам с разъемами предыдущего поколения существуют следующие типы кабелей:  Описание структуры и подробная информация обо всех вышеперечисленных кабелях приведена в спецификации на кабель и разъем Type-C. Основные отличия структуры штекера (plug) от разъема (receptacle):  Перед тем как выбрать разъем, необходимо определиться, передачу какого интерфейса необходимо поддерживать в своей разработке. На данный момент в embedded-разработке основными являются интерфейсы USB2/USB3, поэтому далее мы будем рассматривать именно их. Важно понимать, что разъем USB является одной из самых часто используемых и наиболее сильно подверженных износу частей вашего устройства, поэтому необходимо, чтобы он был изготовлен качественно и выдерживал большое количество подключений.  Большинство производителей предлагают широкий спектр различных разъемов. Рассмотрим основные параметры, на которые стоит обратить внимание. Важно! Если устройство не является единичным и подразумевается последующий серийный выпуск, следует обратить внимание на такой параметр, как Part Status. Если он имеет статус Active, то данный разъем является активным и в ближайшее время будет поддерживаться производителем. Если же компонент имеет иной статус, есть вероятность, что в будущем купить такой разъем еще раз не получится. В зависимости от поддерживаемых интерфейсов разъем может иметь меньшее количество контактов. Так, если поддержка высокочастотных интерфейсов, работающих на RX/TX-линиях (USB3.2/USB4/TBT3/DP), не требуется, то можно выбрать разъемы с 16 контактами или меньше: Существуют различные способы установки разъема. Все они отличаются параметрами, мы рассмотрим только основные из них. Тип установки разъема на печатную плату: Surface Mount / поверхностный монтаж Board Cutout / вырез в печатной плате Ориентация разъема относительно печатной платы: Right Angle / прямой угол Vertical/вертикальный Vertical Right Angle / вертикальный под прямым углом Тип установки контактов на печатную плату: Поверхностный монтаж контактов Выводной монтаж контактов Поверхностно-выводной монтаж Важно! При выборе разъема следует обратить внимание на длину выводных контактов, так как некоторые производители предлагают несколько вариантов одного и того же разъема для печатных плат разной толщины. Многие разъемы внешне сильно отличаются друг от друга, так как предназначены для работы в различных условиях. Многие из производимых разъемов имеют различные степени защиты (Ingress Protection), IP65, IPX2 и так далее. В связи с этими требованиями внешняя конструкция разъема достаточно специфическая, поэтому использовать его в стандартных тонкостенных корпусах затруднительно. Поэтому, если нет необходимости, рекомендуем использовать стандартные разъемы без каких-либо степеней защиты. Разъем со степенью защиты IPX7 Стандартный разъем В данной статье мы рассматриваем только UFP (Upstream Facing Port) Sink, то есть USB-устройства, которые не могут идентифицироваться при подключении как хост-устройство или источник питания. Более подробную информацию по UFP и разработке DFP (Downstream Facing Port) и Source-устройств (источник питания) можно найти в спецификациях, ссылки на которые были приведены выше. Рассмотрим два варианта подключения: Необходимо выполнить следующее: К пинам A5/B5 (CC1/CC2) подключить резисторы (Rd resistor) с подтяжкой к «земле» номиналом 5,1 кОм ± 20 %, как показано на рисунке ниже. При подключении устройства к кабелю пара резисторов Rp–Rd образует делитель напряжения. Измеряя полученное напряжение, хост устанавливает, какой из CC-пинов подключился к хосту, тем самым определяет ориентацию кабеля. В связи с тем, что используется только USB 2.0, ориентация не имеет значения, поэтому на каждый из CC-пинов подключается резистор Rd. Если резистор Rd подключить только к одному из пинов, а другой оставить «в воздухе», то устройство будет работать только с определенной ориентацией кабеля. Резисторы Ra установлены внутри кабеля и имеют номинальное значение, отличное от Rd. Соединить пины A6–B6 (D+) и A7–B7 (D-). Данный шаг необходим для успешной работы устройства с любой ориентацией кабеля.  Также у большинства разъемов Type-C присутствуют пины, соединенные с корпусом разъема (Shield). Их также рекомендуется подключить к «земле» через схему защиты. Размещать схему защиты необходимо как можно ближе к разъему. В зависимости от цели и характеристик устройств схема защиты может отличаться. Пример схемы защиты представлен ниже под спойлером.  RX1/TX1, RX2/TX2, SBU1/SBU2 не используются, подключать их не требуется.  Печатная плата: Пример трассировки разъема Type-C для интерфейса USB2.0 (разъем: 2129691-1 от TE Connectivity) Необходимо выполнить следующее: С пинами CC1/CC2 в данном примере все чуть сложнее. Если бы наше устройство поддерживало интерфейс USB 3.2 Gen 2x2, то было бы достаточно подтянуть пины СС1/CC2 к «земле» через резисторы Rd с номиналом 5,1 кОм. При любой ориентации кабеля все высокочастотные дифференциальные пары соединялись бы друг с другом.  Так как в нашем случае используются только две высокочастотные дифференциальные пары (RX/TX) вместо четырех, возникает следующая проблема: данные могут передаваться либо по первой паре, либо по второй, в зависимости от ориентации подключения.  Для решения данной проблемы можно использовать связку из двух микросхем: RX1/TX1 и RX2/TX2 подключить к мультиплексору. Подключить схему защиты к контактам Shield. SBU1/SBU2 не используются, подключать их не требуется. Печатная плата: Четырехслойная печатная плата с использованием конденсаторов, соединяющих опорные слои (разъем: 2305018-2 от TE Connectivity) Шестислойная печатная плата (С1, С2,R1 – shield), (632723300011 от Wurth Elektronik) Данная статья была нацелена на новичков в разработке embedded-устройств, но мы старались представить информацию таким образом, чтобы каждый нашел в ней что-то полезное. Надеемся, нам удалось показать, насколько перспективно, легко и удобно использование многофункционального разъема Type-C. Он может стать универсальным элементом в растущем количестве разрабатываемых устройств. И с каждым годом количество разрабатываемых устройств с использованием Type-C будет только расти. Пишите в комментариях, какой информации вам не хватило, и мы обязательно постараемся ее добавить.   Raccoon Security – специальная команда экспертов НТЦ «Вулкан» в области практической информационной безопасности, криптографии, схемотехники, обратной разработки и создания низкоуровневого программного обеспечения.