[Перевод] Всё про USB-C: резисторы и E-Marker
Если вы следите за нашей сагой про USB-C, то уже знаете, что жила CC в этих кабелях используется для коммуникации и определения полярности. Однако есть и один малоизвестный факт, а именно то, что в USB-C коммуникация реализуется через два протокола — аналоговый и цифровой. Сегодня мы разберём аналоговую передачу, получше уяснив роль и принцип работы пресловутых резисторов 5,1кОм. Помимо этого, мы познакомимся с микросхемами E-Marker и таинственным VCONN.
Это продолжение серии статей про особенности реализации и использования стандарта USB-C. Предыдущие части доступны здесь:
Источник питания с USB-C ожидает на линии CC стягивающего сигнала определённой величины, после чего уже подаёт на VBUS 5В. При этом более высокое напряжение должно согласовываться уже цифровым сигналом. Источник питания, будь то ноутбук или зарядное устройство, способен обнаружить подтягивание (называемое Rd
), поскольку поддерживает стягивание (называемое Rp
) на линии СС — после этого он проверяет, сформировался ли на CC делитель напряжения, и находится ли итоговое напряжение в допустимом диапазоне.
Если подключить устройство, которое не обеспечивает стягивание на линии CC, то оно никогда не получит питание от порта USB-C и работать будет только с кабелем USB-A — USB-C. Даже более продуманные девайсы, способные взаимодействовать через цифровую часть USB-C, должны иметь стягивающие резисторы. Разница лишь в том, что они устанавливаются внутри используемой для коммуникации микросхемы. Порт USB-C, на который требуется подать питание, должен иметь стягивающий резистор.
Всё это хорошо известно, но мы нередко встречали случаи сбоев, связанных с отсутствием резисторов в дешёвых устройствах, откуда и взялась рекомендация: «Добавляйте резисторы 5,1кОм». Вы можете не поверить, что всё настолько просто, но будете удивлены.
▍ Подтягивание + стягивание = делитель напряжения
У портов USB-С может быть две роли — передача и получение. Аналоговая часть USB-C позволяет разработчикам добавить простой способ согласования требований по питанию в случае использования USB-C при 5В, не применяя какие-либо специфичные или дорогостоящие микросхемы. Для этого они задействуют подтягивающие резисторы у источников и стягивающие у получателей. Комбинация подтягивания и стягивания формирует делитель напряжения, а само напряжение представляет токовые возможности зарядного устройства.
Теперь в аналоговом режиме передачи сигнала источник может скорректировать подтягивание на основе доступного бюджета питания, и это очень полезно. Представьте себе ноутбук или зарядное устройство с несколькими портами USB-C. По мере загрузки каждого из этих портов для других будет оставаться всё меньше доступного тока, величина которого в основном определяется внутренней схемой устройства. Возьмём в качестве примера ноутбук Framework с четырьмя портами USB-C. Каждый порт обеспечивает 15Вт мощности при 5В/3А. Но если вы хотите одновременно запитать четыре потребляющих устройства с USB-C, то на третий и четвёртый порты ноутбук сможет подать лишь 1,5А — довольно разумное ограничение с инженерной точки зрения.
Это означает, что устройства с повышенной потребностью к силе тока, например 1,5А и 3А, должны мониторить напряжение на линии CC, чтобы определять, не превысят ли они бюджет мощности. При этом они корректируют собственные потребности и в случае превышения возникшего ограничения по току отключаются.
Питание Default относится к заявленным ограничениям USB по силе тока — максимум 500 мА для устройств USB 2 и 900 мА для устройств USB 3. И хотя эти ограничения редко соблюдаются, в стандарте они действительно прописаны.
Что это значит для вас как для пользователя? Ничего, если ваши устройства не особо требовательны. Они должны мониторить напряжение на линии CC и соответствующим образом корректировать свой аппетит. Некоторые коммерческие устройства этого не умеют, но встречаются такие редко.
А если вы электронщик? В таком случае, создавая устройство, питающееся через USB-C, с намерением получить полноценные 3А при 5В, нужно помнить, что не все порты USB-C смогут его обеспечить. Хотя вы можете проверять возможность получения 3А путём измерения напряжения на линии CC. Но это уже на ваше усмотрение, многие самодельные девайсы неплохо справляются и без этого.
А какое напряжение можно ожидать на линии CC? Это напряжение, которое вы сможете считать посредством простого АЦП, присутствующего в вашем микроконтроллере, или даже с помощью компаратора.
Как видите, всё находится в пределах 3,3В, значит при использовании АЦП с полной амплитудой сигнала делитель напряжения вам не потребуется. И да, если у вас гнездо USB-C, то, естественно, мониторить контакты CC нужно по отдельности.
▍ Это действительно необходимо?
Действительно ли вам необходимо мониторить напряжение на линии CC? Когда вы просто с чем-то экспериментируете, это не обязательно. Однако этот приём пригодится в случаях, когда вы хотите выйти за рамки 0,5А — 1А. Если вы превысите потребности в токе, который может обеспечить порт источника, то на ваше устройство просто перестанет подаваться питание — довольно безопасный исход. С другой стороны, концепция USB-C предполагает наличие нескольких уровней защиты. Так что если вы собираете устройство мощностью 15Вт, используя простой подход с резистором на 5,1кОм, то можете также внедрить в него возможность обнаруживать недостаток питания. К тому же, сделать это не так уж сложно.
В противном случае можете ожидать, что вашему устройству потребуется зарядка, всегда обеспечивающая 3А при 5В, на что способно подавляющее их большинство. Если так и окажется, то проблем у вас никогда не возникнет — вы всегда сможете получить необходимые 15Вт. Хотя в случае подключения устройства к порту ноутбука, будь то USB-C или USB-A, через переходник на USB-C, не стоит ожидать постоянного наличия 3А — тут уже придётся проверять.
Причём стягивающий резистор на 5,1кОм — не единственный, с которым вы столкнётесь. Существует и другой вид стягивания, с которым мы имели дело ранее. Речь идёт о Ra
, который становится актуален при использовании кабелей с E-Marker.
▍ VCONN: правильное запитывание E-Marker
По своей сути, E-Marker — это микросхемы памяти, способные взаимодействовать по протоколу Power Delivery (PD). Их используют в кабелях, имеющих более широкие возможности в сравнении с обычными, то есть в высокоскоростных моделях вроде USB 3 и Thunderbolt, а также в тех, которые поддерживают 5А. Они подключаются к линии CC кабеля и опрашиваются источником либо получателем — хотя обычно это всё же источник.
Если в вашем кабеле USB-C установлена E-Marker, то ей потребуется питание, и в USB-C есть способ его обеспечить, называемый VCONN. Как вы знаете, для коммуникации задействуется лишь один контакт CC. Противоположный CC, не подключённый к линии CC, используется для подачи на E-Marker питания. Вот этот контакт и есть VCONN.
В штекере USB-C вы разберётесь, какой контакт CC связан с линией CC, а значит заранее узнаете, какой будет выступать в качестве VCONN. Однако штекер можно подключать в двух разных направлениях — в связи с чем принимающая сторона должна уметь распознать каждый контакт CC как отвечающий за коммуникацию либо за питание VCONN. Это делает кабели относительно простыми и дешёвыми, поскольку обработка всей сложности здесь ложится на сами устройства.
Как электронщику вам вряд ли придётся задумываться о VCONN. Большинство из нас работают с USB 2 или USB 3, поддерживающими не более 3А, и проверка E-Marker тут не обязательна. Кроме того, существуют микросхемы, способные взять на себя обработку многих аспектов USB-C, включая обеспечение питания для VCONN.
Требования VCONN здесь довольно гибкие в сравнении с 5В, которые требуются для VBUS — допустимый диапазон напряжения составляет от 3В до 5,5В. В смартфонах это питание зачастую обеспечивается напрямую от литий-ионного аккумулятора, что избавляет вас от двух преобразований и экономит энергию. Всё же подача питания на VCONN используется не только в случае E-Marker — его также можно задействовать для запитывания небольших аксессуаров и переходников на наушники с бюджетом мощности до 1Вт. В этой интересной презентации специалисты рассказывают о прототипировании устройств, которые работают на VCONN и охватывают весь спектр возможностей, допускаемых для них спецификацией.
Как бы то ни было, но чаще всего VCONN требуется именно для микросхем E-Marker, которые довольно просты. Иногда кабель содержит две таких микросхемы, иногда одну — тут уже выбор производителя. Во втором случае эта микросхема устанавливается с одной стороны кабеля, а к противоположному штекеру прокладывается дополнительная линия питания, подключаемая к контакту VCONN. Так что, если вы вдруг увидите упоминание линии VCONN, то именно об этом оно и говорит — изолированная диодом линия, подключённая к неиспользуемому контакту CC на одном из концов кабеля для запитывания E-Marker на другом конце.
Всё это очень круто, но что насчёт стягивания с помощью Ra
?
▍ Проблема Ra-spberry Pi 4
E-Marker сигнализирует о своём присутствии через стягивающий резистор (Ra
), подключённый к контакту VCONN. Его среднее сопротивление составляет 1кОм, балансируя в диапазоне от 800 Ом до 1200 Ом. Если принимающая сторона может предоставить VCONN, она ищет такой резистор на свободном в данный момент контакте CC, и в случае обнаружения подключает VCONN к этому контакту. В результате резистор оказывается доступен также второму контакту СС, расположенному в противоположном штекере.
Что произойдёт, если замкнуть два контакта CC в принимающем порту вашего устройства, а затем подключить кабель с E-Marker? Резистор 5,1кОм окажется запараллелен с резистором 1кОм, и вы получите общее стягивание ~840 Ом. Именно это стягивание, которое теперь отклоняется от ожидаемых 5,1кОм, источник питания и видит на линии СС. Говоря точнее, делитель излишне подтягивает напряжение вниз, в результате чего источник питания не подаёт на VBUS 5В.
Если помните, то именно это происходило в первых ревизиях Raspberry Pi 4. В итоге вы не могли запитать малинку от зарядки Type-C через кабель с E-Marker — для этого приходилось брать кабель без этой микросхемы либо его альтернативу USB-A — USB-C с источником питания USB-A. Естественно, в комплектном кабеле блока питания Raspberry Pi микросхема E-Marker тоже отсутствует. Но ему она и не нужна — в конце концов E-Marker предназначены для опроса неизвестных кабелей, а комплектные, само собой, таковыми не являются.
Странно, но я ни разу не слышала вопрос: «Зачем они так сделали?». Если посмотреть схему, то на ней видно, что связка PD_SENSE
из объединённых контактов CC идёт на аналоговый входной пин PMIC. Теперь вы можете догадаться — они реализовали часть стандарта, связанную с «мониторингом напряжения», но не озадачились должным образом по части E-Marker. Степень, в которой выполняется мониторинг напряжения, тут под вопросом, но такой функционал, по крайней мере, присутствует.
В последующих ревизиях разработчики Raspberry Pi устранили эту проблему, и если у вашей малинки ревизия старая, то можете её пропатчить. Нам пока не известно, что именно подлатали разработчики, но в конечном счёте мы это узнаем. А пока это всё, что вам следует знать о резисторах, E-Marker и загадочном VCONN.
Играй в нашу новую игру прямо в Telegram!