Périphérique USB avec 2 ports - comment se protéger contre le branchement des deux utilisateurs

11

J'ai un périphérique USB pleine vitesse pour lequel je veux fournir 2 ports - un chacun aux extrémités opposées du boîtier. C'est ainsi que le câble peut être connecté à l'endroit le plus pratique. Mon MCU (atmega32u4) n'a qu'une seule interface, donc les ports physiques seront partagés, mais un seul doit être branché à la fois.

Bien sûr, on ne peut pas faire confiance aux utilisateurs pour ne pas brancher les deux côtés à la fois. Comment se protéger contre cela?

Idées que j'ai trouvées:

  • Câblez-les simplement "en l'état" et espérez que l'hôte pourra gérer les broches D + / D- jointes
  • Porte NAND avec broches 5V séparées en entrée, sortie vers un MOSFET qui déconnecte Vcc lorsque les deux sont branchés.

La deuxième option semble-t-elle raisonnable ou une solution plus complexe est-elle nécessaire?

monty
la source
Comment proposez-vous de câbler les deux ports pour connecter D + et D- ensemble? Vous devez ajouter un diagramme expliquant la disposition que vous proposez.
Solar Mike
@SolarMike Partagé entre les deux - dans le scénario "correct", avec un seul câble connecté, l'autre connecteur D + / D- restera suspendu.
monty
7
Vous devriez également envisager de concevoir le boîtier avec un couvercle mobile afin qu'un seul port USB soit exposé à la fois. De cette façon, vous communiquez clairement à l'utilisateur qu'il n'est autorisé à se connecter qu'à l'un des ports à la fois au lieu de le confondre lorsqu'il branche deux hôtes et que l'un ne fonctionne pas.
Nonny Moose
4
n'oubliez pas l'utilisateur qui parvient à trouver un câble USB mâle-mâle et branche l'appareil lui-même !!!
RozzA

Réponses:

23

Comme indiqué, vous ne pouvez pas connecter directement deux hôtes à un appareil - donc si vous les câbliez simplement et que quelqu'un le connectait aux deux extrémités, vous auriez un problème.

Cependant, vous avez également un problème si une seule extrémité est branchée. L'USB, en particulier le mode haute vitesse (480 Mbps), est une impédance contrôlée. Si vous câblez les deux lignes de données des connecteurs ensemble, vous vous retrouvez avec ce qui est connu comme un stub dans la conception haute fréquence. Le câble allant au connecteur inutilisé dégradera les performances du connecteur actif.

Pour ce faire correctement, vous voulez un CI multiplexeur. Vous pouvez acheter des multiplexeurs USB 2.0 dédiés spécialement conçus pour ce type d'application - quelque chose comme le TS3USB30 . Cela vous permettrait de connecter les lignes de données des deux ports aux entrées mux et de connecter la sortie à votre appareil en interne. Le multiplexeur déconnectera le connecteur inutilisé qui déconnectera les tronçons de la ligne de transmission.

Pour l'alimentation, j'utiliserais probablement un multiplexeur de puissance tel qu'un circuit de diode OR-ing. La ligne VBUS de l'un des ports (avant le multiplexeur de puissance) peut ensuite être utilisée comme entrée pour le multiplexeur de données.

La masse serait commune (connectée) entre les deux ports USB et votre appareil.

Tom Carpenter
la source
1
Je n'ai pas considéré les talons - ce multiplexeur (combiné avec le multiplex de puissance) semble idéal!
monty
3
Les talons ne devraient pas être un problème à pleine vitesse, c'est tout ce que vous avez demandé dans votre question.
Dave Tweed
1
@DaveTweed J'ai ajouté la clarification Full Speed ​​après avoir réalisé que cette réponse couvrait High Speed. Savoir que je peux "m'en tirer" est bon pour cette conception, mais j'apprécie vraiment connaître les implications à des vitesses plus élevées.
monty
Maintenant, je suis vraiment intéressé par la façon de faire le support de atmega32u4 480 Mbps :)
Dmitry Grigoryev
9

Le multiplexeur tel que suggéré par Tom Carpenter est une bonne solution.

Mais pour l'USB pleine vitesse (12 Mbps), les stubs dans les signaux ne sont pas particulièrement importants. Si la distance entre les extrémités du talon reste inférieure à 1 / 10e de la longueur d'onde, c'est-à-dire inférieure à ~ 2 mètres, les réflexions ne déforment pas beaucoup la forme d'onde.

De plus, les niveaux de tension sur les broches D + et D- resteront dans la plage acceptable, il n'y a donc pas beaucoup de risques de dommages électroniques à l'un ou l'autre hôte.

Le principal problème qui reste est que si vous connectez les broches + 5V des deux hôtes ensemble, il pourrait y avoir de grands courants impliqués. Vous pouvez utiliser une diode provenant de la broche + 5 V de chaque connecteur USB pour ne laisser entrer que du courant, jamais en sortir.

jpa
la source
4

La conception électronique paresseuse consisterait simplement à utiliser un commutateur multi-connecteur physique pour choisir celui qui est utilisé.

Notez que cela aurait l'avantage supplémentaire de pouvoir les laisser tous les deux branchés et d'utiliser le commutateur pour sélectionner l'entrée à utiliser.

Lassi Kinnunen
la source
2

Il n'y a aucun moyen compatible USB de le faire. L'USB n'est pas conçu pour être partagé entre deux hôtes et tenter de le faire entraînera des situations potentiellement désastreuses.

Au mieux, vous pouvez utiliser un multiplexeur USB ou un commutateur IC, avec GPIO pour déterminer quel connecteur est connecté. Vous devrez décider quelle connexion USB a la priorité, car les deux ne peuvent pas être connectées à votre interface USB en même temps.

Ou regardez des alternatives. Demandez à un ordinateur de communiquer avec l'autre. Ou utilisez Bluetooth ou Wi-Fi ou un autre type de connexion.

Passant
la source
J'ai ajouté une clarification à la question - un seul port sera jamais utilisé à la fois, et (espérons-le) la porte NAND peut résoudre le problème de priorité en refusant simplement le scénario "les deux branchés".
monty
À quel genre de situations désastreuses pensez-vous que cela pourrait conduire?
jpa
1
@jpa suppose que les deux systèmes ont des potentiels "de masse" différents de 50 V, par exemple. Les relier tous les deux à D- pourrait être "intéressant". Même si les potentiels ne sont différents que de 50 mV, vous avez peut-être créé une «boucle de masse» génératrice de bruit.
alephzero
1
@alephzero Bien sûr, mais même un multiplexeur ou un circuit intégré de commutateur typique ne gérerait pas cela. Cependant, la mise à la terre en premier dans le connecteur USB élimine principalement ce problème.
jpa
2

J'ai une tablette Wacom avec cette fonctionnalité. Ils gèrent le problème que vous décrivez en utilisant un verrouillage mécanique.

Il y a un curseur en plastique qui bloque un port ou l'autre, selon sa position.

entrez la description de l'image ici

A dessiné
la source
1

Il serait peut-être plus facile de laisser le connecteur USB d'un côté du boîtier et de dupliquer et / ou de déplacer symétriquement tous les autres éléments orientés utilisateur. Ensuite, le boîtier peut être tourné de sorte que le port USB soit face au connecteur, tandis que tous les autres éléments sont toujours facilement accessibles.

Une autre option consiste à localiser les deux ports d'un côté du boîtier (aux extrémités opposées) et à ajouter un talon coulissant à l'intérieur du boîtier que l'utilisateur peut déplacer pour ouvrir un port ou l'autre. L'USB 12 MHz a de bonnes chances de fonctionner avec un port supplémentaire déconnecté qui lui est attaché.

Dmitry Grigoryev
la source