Обнаружение USB3.0 и USB2.0 на аппаратном уровне

Я разрабатываю зарядное устройство USB и пытаюсь использовать простое аппаратное обеспечение (микросхемы в порядке, просто ничего, на что мне предпочтительно загружать прошивку), чтобы определить, является ли USB-разъем, к которому я подключаю устройство, USB3.0 или USB2.0, поэтому я могу с уверенностью определить, какой ток я могу потреблять. Я использую чип BQ2439RSER, чтобы определить, является ли розетка, к которой я подключен, стандартным нисходящим портом, нисходящим портом для зарядки или выделенным портом для зарядки. Однако у меня возникли проблемы с поиском простого способа проверить, является ли хост-порт USB3.0 или USB2.0.

Моя первоначальная мысль состояла в том, чтобы проверить наличие подтягиваний/подтягиваний на любом из дополнительных выводов USB3, отсутствующих на разъеме USB2, однако на всех схемах, которые я просмотрел, суперскоростные дифференциальные пары имеют блокировочные конденсаторы на них (см. стр. 11 это техническое описание http://www.ti.com/lit/an/slla329/slla329.pdf ). Следующим моим шагом было просто проверить, подключен ли контакт GND_DRAIN к общему контакту USB GND, но в этом посте ( USB3 с меньшим количеством проводов ) говорится, что GND_DRAIN и GND не обязательно будут одинаковыми.

Мне не нужна ни одна из пар RX/TX для работы или передачи данных, меня интересует только определение максимально допустимого тока и его отрисовка. Я знаю, что некоторые устройства будут ограничивать меня до 100 мА, но, по моему опыту, в наши дни их мало, поэтому я готов протестировать прототип без перечисления (в худшем случае я объявлю хост FT232R). контроллер, чтобы позаботиться об этом позже, но я стараюсь сделать это как можно проще).

Спасибо за помощь

Какую скорость поддерживает ваше устройство? У него есть USB3?
Так ваше устройство является периферийным? Тогда вы можете захотеть изучить любую новую ИС, кроме BQ, которую вы упомянули. Тот, который делает для вас высокопроизводительные переговоры USB 3.0. Я уверен, что есть некоторые, которые можно настроить с помощью резисторов вместо какой-либо программируемой версии.
Потому что зарядка usb 3.0 на более высоком токе или напряжении требует перебора.
На самом деле устройство не осуществляет никакой связи. Мне нужно только определить тип порта, чтобы определить, могу ли я безопасно получить 500 мА или 900 мА от порта. Я искал пару дней и не нашел микросхему, которая будет выполнять идентификацию зарядного устройства и согласование уровня usb3.0. (редактировать: да, мое устройство является периферийным устройством. Однако оно совершенно тупое, оно не предназначено для связи с хостом, а просто получает питание от Vbus).
@Прохожий, нет, не совсем так. Для обычного хоста USB3 (который формально обозначается как «порт высокой мощности») нумерация не требуется, и всегда можно безопасно получить 900 мА. Это требование к хозяину. Однако функциональное устройство не имеет права принимать более «одной единицы» до того, как будет пронумеровано и сконфигурировано, что составляет 150 мА. Правило «одного устройства» применяется только к так называемым «встроенным хостам с низким энергопотреблением», обычно гаджетам с батарейным питанием. Но кто будет пытаться заряжать ноутбук или внешний аккумулятор от крошечного смартфона? А "маломощные хосты" все равно должны ограничивать ток VBUS.
@alichen, мы говорим о напряжениях не 5 В и токах 1 А плюс, которые требуют согласования связи.
@Passerby, нет. См. раздел 11.4.1 спецификаций USB3.1. «Системы, которые получают рабочее питание извне, переменного или постоянного тока, должны быть способны подавать не менее шести единичных нагрузок на каждый порт». И далее: «Концентраторы, получающие рабочее питание извне (не от VBUS), должны подавать на каждый порт по шесть единичных нагрузок». Никаких других условий не прилагается. Шесть раз 150 мА = 900 мА на каждый порт на обычном ПК или даже ноутбуке при подключении к адаптеру переменного тока.
Ты смотришь на минимум...
Да, это «минимум» для стандартного порта USB3.1. Но чтобы получить более высокие токи, характеристики зарядки аккумулятора (BC1.2) будут обрабатываться микросхемой BQ2439RSER. Без Type-C питание можно согласовать только через BC. ВО ВСЕХ СЛУЧАЯХ перечисление USB не требуется. Все спецификации USB намеренно отделены от BC или Power Delivery. Это почти независимые спецификации.

Ответы (1)

Обычно возможности порта определяются устройством после подключения и настройки интерфейса USB. И затем контролируйте зарядное устройство соответственно. Но если устройство, которое вы проектируете, не имеет USB, а только зарядное устройство с кабелем USB3, вы можете использовать функцию Rx-detect канала USB3 Tx, см. раздел 6-11 спецификаций USB3.0.

По сути, вам необходимо обеспечить оконечную нагрузку 45 Ом на проводах Tx -> Rx. Хост подаст импульс на провода Tx-/Tx+ и будет следить за временем отклика RC. Однако этот импульс может быть трудно обнаружить на стороне Rx. Если хост обнаружит завершение, он начнет отправлять дифференциальные сигналы LFPS, Polling.LFPS, которые представляют собой всплески с частотой 10-50 МГц и продолжительностью 1 мкс, повторяющиеся каждые 10 мкс до истечения времени ожидания 360 мс, поскольку ваше устройство не будет отвечать. Вы должны быть в состоянии обнаружить эту активность. Или, может быть, просто любая дифференциальная активность на линиях Tx даст вам подсказку, является ли хост-порт USB3 или USB2.

На самом деле, вы можете захотеть просто обнаружить активность Rx-detect, не предоставляя завершение, подойдет только односторонний приемник с высоким импедансом, поскольку хост должен периодически проверять наличие завершения Rx.

Спасибо за совет! Я прочитаю 6-11 и посмотрю, смогу ли я придумать какое-нибудь решение для опроса! Я буду предоставлять обновления, когда я добьюсь определенного прогресса
Не могли бы вы дать некоторое представление о сроках секвенирования RX-Detect? Я знаю, что это будет синфазный сигнал, подаваемый на входящие линии RX+/RX-, с напряжением не более 600 мВ, но спецификация не содержит более подробной информации. Кроме того, как часто он будет перепроверять наличие завершения? Извините, если ответы есть в спецификации, я просмотрел, но это гигантский документ. Если я не могу заставить это работать, я всегда могу добавить завершение, а затем поставить небольшой балун на линии RX для обнаружения сигналов LFPS. Еще раз спасибо за вашу помощь!
@ Platytude, о, чувак, ты заставил меня включить прицел ... Импульс имеет длину 10 мкс, положительную высоту 400 мВ, а частота повторения составляет около 5 мс. Край составляет около 50 нс по кабелю ~ 2 м. Я пришлю вам счет...
Хахахаха, очень признателен, это все, что мне нужно