Quiero diseñar un concentrador USB inverso con prioridad, donde una unidad flash USB está conectada de forma predeterminada a un dispositivo, pero cambia a otro cuando hay una conexión.
La configuración de mi producto utiliza una Raspberry Pi y una unidad flash USB dentro de una caja. En el exterior de la caja tengo 2 puertos USB, uno para alimentación y otro para datos, ninguno de ellos se conecta directamente a la Raspberry.
De forma predeterminada, la unidad flash USB está conectada a la Raspberry, pero cuando conecto un cable USB al puerto de datos de la caja, la Raspberry lo nota y cambia la unidad flash USB desde este al puerto de datos USB de la caja. Cuando quito el cable, la Raspberry cambia de nuevo la unidad flash USB a uno de sus puertos USB internos.
El esquema para esto es el siguiente:
Entonces,leíaquíenelintercambiodepilaquelas4clavijasUSBdebenestarcambiadasynosololasclavijasD+yD-.EstossecambianatravésdeuninterruptorICFSUSB30USB,enlapartesuperiordelesquema.Deformapredeterminada,inclusosiUSB_SELesdealtaimpedancia,elinterruptorconectalospinesD+DdeUSB_PEN_DATA(unidadflash)alospinesD+D-deUSB_INT_DATA(RPiUSB).
Paraelladodepoder(aquíesdondetengomisdoupts),usounICMOSFETdedosparacambiarGROUNDS.Básicamente,leíquedoscomputadoraspuedentener5VligeramentediferentesentreelVCCyelGNDdesusUSB,porloquedospuertosUSBdediferentesdispositivosPOWEREDnodeberíanestarconectadosentresí.Ok,entoncesacabodeconectarlosterminalespositivosenunared"VCC_USB_COMMON", y cambio la conexión a tierra de la memoria USB "MAGIC_USB_GROUND" a la tierra RPi "GND" o a la computadora "PE".
La conexión a tierra de la computadora y el RPi se aíslan mediante el uso de un optoacoplador de salida de disparador schmitt que impulsa el MOSFET que conmuta la conexión a tierra PE del lado de la computadora. En el lado de RPi, el terreno se cambia directamente con RPI_GPIO_PIN_OUT_X.
Finalmente, para que el RPi sepa si un cable USB está conectado al puerto de datos externo, puse un segundo optoacoplador que tiene el LED IR alimentado por la computadora y el disparador schmitt alimentado por la Raspberry y su salida es leído por un pin IO "RPI_GPIO_PIN_IN_X".
Todo esto parece ser una sobreexplotación, pero creo que me da un control perfecto sobre los tiempos de conmutación de datos y líneas eléctricas. En algún lugar también leí que el orden era importante.
¿Este circuito suena? Todavía no revisé los valores típicos de resistencia, solo puse algo que pensé que funcionaría como un valor de campo de juego, pero lo verificaré detalladamente si este circuito puede hacer lo que quiero. Además, las tapas de desacoplamiento no están presentes, pero estarán en el diseño final. ¿Son realmente necesarias las cuentas de ferrita? Solo voy a requerir USB2.0 a 480Mbps así que ...
EDIT: Ok, si entendí correctamente por la respuesta de Ali Chen, estoy pensando demasiado en las cosas y solo D + y D- deberían cambiarse. El circuito actualizado es el siguiente: