USB-устройство с 2-мя портами - как защитить от подключения обоих пользователей


11

У меня есть полноскоростное USB-устройство, для которого я хочу предоставить 2 порта - по одному на противоположных концах корпуса. Это позволяет подключать кабель в любом удобном месте. Мой MCU (atmega32u4) имеет только один интерфейс, поэтому физические порты будут общими, но только один должен быть подключен одновременно.

Конечно, нельзя доверять пользователям не подключать обе стороны одновременно. Как защититься от этого?

Идеи, которые я придумал:

  • Просто подключите их «как есть» и надейтесь, что хост сможет справиться с соединенными D + / D- выводами
  • Вентиль NAND с отдельными выводами 5 В в качестве входа, вывод на полевой МОП-транзистор, который отключает Vcc, когда оба подключены.

Второй вариант звучит разумно, или требуется более сложное решение?


Как вы предлагаете соединить два порта для соединения D + и D- вместе? Вы должны добавить диаграмму, поясняющую макет, который вы предлагаете.
Солнечный Майк

@SolarMike Совместно используется между двумя - в «правильном» сценарии, когда подключен только один кабель, D + / D- другого разъема останется висящим.
Монти

7
Вам также следует подумать о том, чтобы создать корпус с подвижной крышкой, чтобы одновременно был открыт только один порт USB. Таким образом, вы четко сообщаете пользователю, что ему разрешено подключаться только к одному из портов одновременно, а не путать его, когда подключаются два хоста, а один не работает.
Нонни Мус

4
не забывайте о пользователе, которому удается найти USB-кабель "мужчина-мужчина" и подключить устройство к себе !!!
RozzA

Ответы:


23

Как уже указывалось, вы не можете напрямую подключить два хоста к устройству - поэтому, если вы просто соедините их вместе, и кто-то подключит его с обоих концов, у вас возникнет проблема.

Однако у вас также есть проблема, если подключен только один конец. USB, особенно высокоскоростной (480 Мбит / с) режим, является контролируемым сопротивлением. Если вы соедините линии данных обоих разъемов вместе, вы получите то, что известно как заглушка в высокочастотной конструкции. Кабель, идущий к неиспользуемому разъему, ухудшит характеристики активного разъема.

Чтобы сделать это правильно, вы хотите мультиплексор IC. Вы можете купить специальные мультиплексоры USB2.0, разработанные специально для такого рода приложений - что-то вроде TS3USB30 . Это позволит вам подключить линии данных от обоих портов к входам мультиплексора и подключить выход к вашему устройству внутри. Мультиплексор отключит неиспользуемый разъем, который отсоединит заглушки линии передачи.

Для питания я, вероятно, использовал бы силовой мультиплексор, такой как диодная схема ИЛИ. Линия VBUS от одного из портов (до мультиплексора мощности) может затем использоваться в качестве входа в мультиплексор данных.

Заземление будет общим (подключенным) между двумя портами USB и вашим устройством.


1
Я не рассматривал заглушки - этот мультиплексор (в сочетании с силовым мультиплексом) выглядит идеально!
Монти

3
Заглушки не должны быть проблемой на полной скорости, это все, о чем вы спрашивали в своем вопросе.
Дэйв Твид

1
@DaveTweed Я добавил пояснение по полной скорости после того, как понял, что этот ответ касается высокой скорости. Знание, что я могу «сойти с рук», хорошо для этого дизайна, но я определенно ценю знание последствий на более высоких скоростях.
Монти

Теперь мне искренне интересно, как заставить atmega32u4 поддерживать 480 Мбит / с :)
Дмитрий Григорьев

9

Мультиплексор, предложенный Томом Карпентером, является хорошим решением.

Но для полной скорости USB (12 Мбит / с) заглушки в сигналах не особенно важны. Если расстояние между концами заглушки остается ниже 1/10 длины волны, то есть ниже ~ 2 метров, отражения не будут сильно искажать форму волны.

Кроме того, уровни напряжения на выводах D + и D- будут оставаться в допустимом диапазоне, так что нет большого риска повреждения электроники для любого хоста.

Основная проблема, которая остается, заключается в том, что если вы соедините контакты + 5V от обоих хостов вместе, то могут возникнуть большие токи. Вы можете использовать диод из разъема + 5V каждого разъема USB, чтобы позволить току входить, а не выходить.


4

Ленивый способ электронного проектирования будет состоять в том, чтобы просто использовать физический многоконтактный переключатель, чтобы выбрать, какой из них использовать.

Обратите внимание, что это даст дополнительное преимущество, поскольку вы сможете оставить их подключенными и использовать переключатель, чтобы выбрать, какой вход использовать.


2

Нет USB-совместимого способа сделать это. USB не предназначен для совместного использования между двумя хостами, и попытка сделать это приведет к потенциально катастрофическим ситуациям.

В лучшем случае вы можете использовать USB-мультиплексор или коммутатор IC, с GPIO, чтобы определить, какой разъем подключен. Вы должны решить, какое USB-соединение имеет приоритет, потому что оба не могут быть одновременно подключены к вашему USB-интерфейсу.

Или посмотрите на альтернативы. Пусть один компьютер общается с другим. Или используйте Bluetooth или Wi-Fi или другой тип подключения.


Я добавил уточнение к этому вопросу - одновременно будет использоваться только один порт, и (мы надеемся), шлюз NAND может решить проблему приоритета, просто отказавшись от сценария «оба подключены».
Монти

Как вы думаете, к каким катастрофическим ситуациям это может привести?
JPA

1
@jpa Предположим, что две системы имеют «заземляющие» потенциалы, например, 50В. Подключение их обоих к D- может быть «интересным». Даже если потенциалы различаются только на 50 мВ, возможно, вы создали «контур заземления», создающий шум.
алефзеро

1
@alephzero Конечно, но даже типичный мультиплексор или микросхема коммутатора не справятся с этим. Однако заземление, сначала подключаемое к разъему USB, в основном устраняет эту проблему.
JPA

2

У меня есть планшет Wacom с этой функцией. Они решают проблему, которую вы описываете, используя механическую блокировку.

Есть пластиковый слайдер, который блокирует один порт или другой, в зависимости от его положения.

введите описание изображения здесь


1

Возможно, было бы проще оставить USB-разъем на одной стороне корпуса и дублировать и / или перемещать все другие элементы, обращенные к пользователю, симметрично. Затем корпус можно повернуть так, чтобы порт USB был обращен к разъему, а все остальные элементы по-прежнему были легко доступны.

Другой вариант заключается в размещении обоих портов на одной стороне корпуса (на противоположных концах) и добавлении в корпус скользящей заглушки, которую пользователь может перемещать, чтобы открыть один или другой порт. 12 МГц USB имеет хорошие шансы работать с подключенным к нему дополнительным отключенным портом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.