11 votos

Dispositivo USB con 2 puertos: cómo protegerlo de que el usuario conecte ambos

Tengo un dispositivo USB de alta velocidad al que quiero dotar de 2 puertos, uno en cada extremo de la caja. Esto es para que el cable pueda ser conectado donde sea más conveniente. Mi MCU (atmega32u4) sólo tiene una interfaz, por lo que los puertos físicos serán compartidos, pero sólo uno debe estar conectado a la vez.

Por supuesto, no se puede confiar en que los usuarios no se conecten a ambos lados a la vez. ¿Cómo protegerse de esto?

Ideas que se me ocurren:

  • Simplemente conéctalos "tal cual" y espera que el anfitrión pueda lidiar con los pines D+/D- unidos
  • Puerta NAND con pines separados de 5V como entrada, salida a un MOSFET que desconecta Vcc cuando ambos están conectados.

¿Suena razonable la segunda opción, o es necesaria una solución más compleja?

0 votos

¿Cómo propones cablear los dos puertos para conectar D+ y D- juntos? Deberías añadir un diagrama explicando la disposición que propones.

0 votos

@SolarMike Compartido entre los dos - en el escenario "correcto", con sólo un cable conectado, el D+/D- del otro conector quedará colgando.

7 votos

También deberías considerar la posibilidad de diseñar la carcasa con una tapa móvil para que sólo quede expuesto un puerto usb a la vez. De este modo, se comunica claramente al usuario que sólo puede conectar uno de los puertos a la vez, en lugar de confundirlo cuando conecta dos hosts y uno no funciona.

23voto

Tom Carpenter Puntos 7192

Como se ha señalado, no se pueden conectar directamente dos hosts a un dispositivo, por lo que si se conectan por cable y alguien lo enchufa en ambos extremos, tendrías un problema.

Sin embargo, también hay un problema si sólo se conecta un extremo. El USB, especialmente el de alta velocidad (480Mbps), tiene una impedancia controlada. Si conectas las dos líneas de datos de los conectores, acabas con lo que se conoce como stub en el diseño de alta frecuencia. El cable que va al conector no utilizado degradará el rendimiento del conector activo.

Para hacerlo correctamente, necesitas un CI multiplexor. Puedes comprar multiplexores USB2.0 diseñados específicamente para este tipo de aplicaciones, como el TS3USB30 . Eso te permitiría conectar las líneas de datos de ambos puertos a las entradas del mux, y conectar la salida a tu dispositivo internamente. El mux desconectará el conector no utilizado que desconectará los stubs de la línea de transmisión.

Para la alimentación probablemente utilizaría un multiplexor de potencia como un circuito de diodos OR-ing. La línea VBUS de uno de los puertos (antes del multiplexor de potencia) puede utilizarse como entrada al multiplexor de datos.

La tierra sería común (conectada) entre los dos puertos USB y su dispositivo.

1 votos

No había tenido en cuenta los talones, ¡ese multiplexor (combinado con el multiplexor de potencia) parece ideal!

3 votos

Los talones no deberían ser un problema a toda velocidad, que es lo único que has preguntado en tu pregunta.

1 votos

@DaveTweed He añadido la aclaración de Full Speed después de darme cuenta de que esta respuesta cubría High Speed. Saber que puedo "salirme con la mía" es bueno para este diseño, pero definitivamente aprecio saber las implicaciones a velocidades más altas.

9voto

Paul Puntos 101

El multiplexor sugerido por Tom Carpenter es una buena solución.

Pero para el USB de máxima velocidad (12 Mbps), los stubs de las señales no son especialmente importantes. Si la distancia entre los extremos de los stubs se mantiene por debajo de 1/10 de la longitud de onda, es decir, por debajo de ~2 metros, las reflexiones no distorsionarán mucho la forma de onda.

Además, los niveles de voltaje en los pines D+ y D- permanecerán dentro del rango aceptable, por lo que no hay mucho riesgo de daños electrónicos en ninguno de los dos hosts.

El principal problema que queda es que si conectas los pines de +5V de ambos hosts juntos, podría haber grandes corrientes involucradas. Podrías utilizar un diodo desde el pin +5V de cada conector USB para que sólo entre corriente, nunca salga.

4voto

Lassi Kinnunen Puntos 131

La forma más perezosa de diseño electrónico sería simplemente utilizar un interruptor físico de varios conectores para elegir cuál se utiliza.

Ten en cuenta que esto tendría la ventaja añadida de poder dejar los dos enchufados y utilizar el interruptor para seleccionar qué entrada se va a utilizar.

2voto

Passerby Puntos 28913

No hay ninguna forma de hacer esto que sea compatible con USB. El USB no está diseñado para ser compartido entre dos hosts y el intento de hacerlo conducirá a situaciones potencialmente desastrosas.

En el mejor de los casos, puedes utilizar un multiplexor USB o un IC de conmutación, con GPIO para determinar qué conector está conectado. Tendrás que decidir qué conexión USB tiene prioridad, porque ambas no pueden estar conectadas a tu interfaz USB al mismo tiempo.

O buscar alternativas. Que un ordenador se comunique con el otro. O utiliza Bluetooth o usa Wi-Fi o un tipo de conexión diferente.

0 votos

He añadido una aclaración a la pregunta: sólo se utilizará un puerto a la vez, y (con suerte) la puerta NAND puede resolver el problema de la precedencia simplemente negando el escenario de "ambos enchufados".

0 votos

¿A qué tipo de situaciones desastrosas crees que puede llevar?

1 votos

@jpa supongamos que los dos sistemas tienen potenciales de "tierra" que son 50V diferentes, por ejemplo. Conectar ambos a D- podría ser "interesante". Incluso si los potenciales son sólo 50mV diferentes, puedes haber creado un "bucle de tierra" generador de ruido.

1voto

Mark0978 Puntos 495

Tal vez sería más fácil dejar el conector USB en un lado de la caja y duplicar y/o reubicar todos los demás elementos orientados al usuario de forma simétrica. Así, la caja puede girarse para que el puerto USB esté orientado hacia el conector, mientras que todos los demás elementos siguen siendo convenientemente accesibles.

Otra opción es situar los dos puertos en un lado de la caja (en los extremos opuestos) y añadir un tope deslizante dentro de la caja que el usuario pueda mover para abrir un puerto o el otro. El USB de 12 MHz tiene muchas posibilidades de funcionar con un puerto extra desconectado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X