Puerto USB OTG en modo esclavo, ¿es posible usar puertos USB-A en modo host simultáneamente?

1

He estado investigando USB OTG por un tiempo y no pude encontrar una respuesta a mi pregunta. Estoy buscando las condiciones, si es posible, bajo las cuales puedo hacer que un puerto USB OTG funcione en modo esclavo y que al menos un puerto USB-A actúe como host simultáneamente. Definitivamente no es posible cuando los dos puertos están conectados al mismo concentrador USB (por ejemplo, como es el caso de un RPi Zero + Zero4U), pero ¿qué ocurre cuando los dos puertos están completamente separados? Aquí puede encontrar un 'Mapa USB' del Orange PI Plus2:

¿Puedo usar el puerto USB OTG, que se origina en USB0, como puerto esclavo mientras, al mismo tiempo, uso uno de los puertos del concentrador conectados a USB1 en el modo host?

¡Gracias de antemano por su tiempo y por compartir sus experiencias!

    
pregunta M. Häuser

2 respuestas

1

Si son periféricos USB distintos, al menos uno de los cuales admite la funcionalidad de cambio de modo, entonces sí. De hecho, esto es bastante común en microcontroladores USB dobles y SoC tipo tableta. Su diagrama parece mostrar tal situación, con un puerto de doble función con capacidad OTG directamente accesible, y una configuración de segundo puerto para uso del host con un concentrador incorporado.

Un concentrador USB tiende a ser completamente incompatible con el uso de cualquiera de sus puertos como dispositivo USB, ya que operar el motor USB en modo dispositivo sería incompatible con operarlo en modo host para hablar con el concentrador.

Probablemente, lo más cerca que podría llegar a eso sería utilizar un cable de intercambio de datos USB conectado a un puerto de un concentrador integrado. Un cable de intercambio de datos es un tipo de dispositivo USB de doble extremo, pero generalmente se limita a un esquema particular de transferencia de datos. Por supuesto, una vez que haya soportado esa tubería en ambos extremos, puede empujar datos arbitrarios de hadas hacia abajo.

Teóricamente, podría ser posible diseñar un chip concentrador con un único puerto "pasante" que podría invertirse (mientras se deshabilitan todos los demás puertos) para funcionar como un dispositivo y enviar datos a la interfaz USB del SoC que funciona en modo dispositivo, pero Esto parece poco probable como producto, ya que la mayoría de los dispositivos en los que se admite el funcionamiento como dispositivo no tienen espacio para los conectores desde un concentrador interno. En última instancia, en la mayoría de las configuraciones de tarjeta integrada / dev, el periférico USB doble en el enfoque de chip es preferible a un solo puerto conectado permanentemente a un concentrador incorporado.

Por supuesto, al final, el USB no solo se trata de hardware, sino también de pilas de controladores y servicios del sistema, API de modo de usuario, etc. Definitivamente, ha habido un hardware que viene con capacidades que no se refleja en el software, y es teóricamente Es posible que una pila de software pueda imponer algún tipo de límite donde ambos puertos deberían estar en el mismo modo. Pero eso no parece demasiado común. Aunque a menudo no se puede cambiar de modo, la determinación del modo generalmente se realiza en última instancia por un software, que puede o no considerar o respetar un pin de entrada de detección de modo de hardware.

    
respondido por el Chris Stratton
-2

La respuesta a su pregunta es "sí", pero el diagrama adjunto está incompleto. De hecho, casi todos los SoC recientes de Intel tienen la topología que soporta OTG en un puerto, más muchos puertos de host. El diagrama pierde un bloque importante "Controlador de dispositivo USB", que generalmente se multiplexa en uno de los puertos USB en el nivel PHY (que también puede ser USB3.0), generalmente en el puerto USB0. El hardware del controlador del dispositivo debe estar en la parte superior de la imagen. Muchas tabletas nuevas admiten varios dispositivos USB (como paneles táctiles y radios Bluetooth) internamente o a través de puertos USB externos, y un puerto OTG, que puede cambiar las funciones. Esta función ahora es totalmente compatible, tanto en Windows como principalmente en Android.

ADDENDUM: El Allwinner (China) H3 el mapa de memoria muestra dos IP Bloques para dispositivo OTG, y host OTG. Los otros 3 puertos USB están conectados a un controlador EHCI / OHCI separado . En la descripción adicional de OTG (Sección 8.5.1) se muestra la topología de conexión estándar: dos bloques individuales se combinan en el bus UTMI a un UTMI PHY común (interno). Igual que en todas partes, como en los productos INTEL. Tanto los bloques IP OTG como otros bloques host USB tienen mapas de registro, relojes y controles de reinicio individuales, y definitivamente están destinados a usarse simultáneamente. El resto depende del software incorporado.

Entonces, nuevamente, la respuesta a la pregunta principal es incondicional SÍ, el puerto OTG se puede usar como DISPOSITIVO esclavo mientras que otros puertos USB sirven como hosts. Este es todo el propósito del puerto OTG en SoC.

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas