Если вы следите за нашей сагой про USB-C, то уже знаете, что жила CC в этих кабелях используется для коммуникации и определения полярности. Однако есть и один малоизвестный факт, а именно то, что в USB-C коммуникация реализуется через два протокола – аналоговый и цифровой. Сегодня мы разберём аналоговую передачу, получше уяснив роль и принцип работы пресловутых резисторов 5,1 кОм. Помимо этого, мы познакомимся с микросхемами E-Marker и таинственным VCONN.
Прим. пер.: Продолжение серии статей про особенности реализации и использования стандарта USB-C. Остальные доступны здесь:
- Всё про USB-C: введение для электронщиков
- Всё про USB-C: типы кабелей
- Всё про USB-C: механика разъёмов
- Всё про USB-C: переходники вне стандарта
- Всё про USB-C: резисторы и E-Marker < — Вы здесь
- Всё про USB-C: обеспечение питания
Источник питания с USB-C ожидает на линии CC pulldown-сигнала определённой величины, после чего уже подаёт на VBUS 5 В. При этом более высокое напряжение должно согласовываться уже цифровым сигналом. Источник питания, будь то ноутбук или зарядное устройство, способен обнаружить подтяжку к земле (называемую Rd
), поскольку поддерживает подтяжку к питанию (называемую Rp
) на линии СС – после этого он проверяет, сформировался ли на CC делитель напряжения, и находится ли итоговое напряжение в допустимом диапазоне.
Если подключить устройство, которое не обеспечивает подтяжку к земле на линии CC, то оно никогда не получит питание от порта USB-C и работать будет только с кабелем USB-A – USB-C. Даже более продуманные девайсы, способные взаимодействовать через цифровую часть USB-C, должны иметь pulldown-резисторы. Разница лишь в том, что они устанавливаются внутри используемой для коммуникации микросхемы. Порт USB-C, на который требуется подать питание, должен иметь pulldown-резистор.
Всё это хорошо известно, но мы нередко встречали случаи сбоев, связанных с отсутствием резисторов в дешёвых устройствах, откуда и взялась рекомендация: «Добавляйте резисторы 5,1кОм». Вы можете не поверить, что всё настолько просто, но будете удивлены.
▍ Pullup + pulldown = делитель напряжения
У портов USB-С может быть две роли – передача и получение. Аналоговая часть USB-C позволяет разработчикам добавить простой способ согласования требований по питанию в случае использования USB-C при 5 В, не применяя какие-либо специфичные или дорогостоящие микросхемы. Для этого они задействуют pullup-резисторы у источников и pulldown-резисторы у получателей. Комбинация подтягивания к питанию и земле формирует делитель напряжения, а само напряжение представляет токовые возможности зарядного устройства.
Теперь в аналоговом режиме передачи сигнала источник может скорректировать подтягивание на основе доступного бюджета питания, и это очень полезно. Представьте себе ноутбук или зарядное устройство с несколькими портами 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 А – тут уже придётся проверять.
Причём pulldown-резистор на 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 сигнализирует о своём присутствии через pulldown-резистор (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.