¿Es posible usar un Microchip PIC32 como un dispositivo y host USB al mismo tiempo?

6

Estoy diseñando un sistema y quizás (si no encuentro mejores alternativas) necesitaré usar un PIC32 como controlador entre dos dispositivos USB y un host. Mi plan es usar el PIC32 para ocultar los dispositivos, por lo que el PIC tiene ciertos protocolos en sentido descendente y otro protocolo en sentido ascendente. He estado leyendo mucho sobre la especificación de USB y sobre el soporte de USB en la serie de microcontroladores Microchip PIC32. Pero aún así, tengo una duda fundamental: ¿es posible conectar dos dispositivos corriente abajo del PIC y conectar el PIC corriente arriba a un host al mismo tiempo? En otras palabras, ¿es posible que el PIC32 actúe como host y dispositivo al mismo tiempo?

Realmente apreciaría cualquier sugerencia o sugerencia acerca de esto

Gracias de antemano.

    
pregunta Federico

4 respuestas

10

El USB puede estar en modo de dispositivo o en modo OTG. No puede tener OTG en el mismo bus USB que un host como una computadora.

Varios dispositivos OTG pueden cambiar entre host y amp; modo de dispositivo usando "HNP" (protocolo de negociación de host) pero no puede hacerlo con un host puro.

Necesitaría dos buses USB separados, uno entre la PC y el PIC, y uno entre el PIC y los dispositivos. No creo que haya ningún dispositivo PIC que tenga 2 interfaces USB distintas.

Yo sugeriría usar un segundo dispositivo junto con el PIC32 para actuar como un dispositivo USB para conectarse a la PC, y usar el USB del PIC32 en modo OTG para hablar con los dispositivos. Este otro dispositivo podría ser tan simple como un chip FTDI para hablar con el PIC32 a través de RS232, o algo más poderoso como otro PIC (quizás un PIC18 con USB) para que pueda hablar a través de otros protocolos como I²C o SPI.

    
respondido por el Majenko
5

Parece que estás hablando de algo similar a un concentrador USB. Como dice Majenko, (y que yo sepa también) todos los PIC32s solo tienen un puerto USB, por lo que esto no sería posible con la PC involucrada. Necesitaría otro dispositivo USB (por ejemplo, FTDI, Cypress IC, otro PIC) para conectar el PIC32 a la PC, y luego el PIC32 puede actuar como host para los dispositivos posteriores.

Como pregunta Kevin, ¿ tienes para hablar con los dispositivos con USB? Si esto no es una necesidad, use SPI, I2C, UART o lo que sea y las cosas se vuelven mucho más simples. El hecho de contarnos un poco más sobre los dispositivos podría aportar algunas sugerencias útiles.

Dependiendo de la potencia de procesamiento necesaria, es posible que desee ver a Cypress y TI y FTDI (¿Viniculum?), ya que hacen algunos IC de controlador USB que tienen una unidad de control integrada incorporada, por lo que puede ser una mejor opción que el PIC32. / p>     

respondido por el Oli Glaser
2

Si lo que intentas hacer es conectar 2 dispositivos descendentes a un PIC32, la respuesta es no ... necesitarías un concentrador, y los PICS aún no tienen esos controladores (no de Microchip) (a menos que quieras escribir el controlador y compartirlo con nosotros, sería genial ;-))

Si lo que estás tratando de hacer es conectar un PIC como dispositivo USB, la respuesta es un simple sí. Si lo que intentas hacer es conectar un PIC como host y dispositivo al mismo tiempo, la respuesta es un claro no. Necesitaría una unidad uC con 2 puertos USB ... todavía no PIC.

Tal vez tu situación sea así:

  • PIC-1 funciona como un dispositivo para conectarse a la PC (capaz de "ocultar" sus otros dispositivos)
  • PIC-2 funciona como un host conectado a uno de sus dispositivos
  • PIC-3 funciona como un host conectado a su otro dispositivo
  • PIC-1, PIC-2 y PIC-3 interconectados con i2c u otro bus para compartir información entre ellos
  • Finalmente, ¿los PIC tienen el poder de manejar esa situación, la respuesta es sí?
respondido por el Alfredo Meraz
-1

Esto es lo que se conoce como una pregunta de "cuánto dura un trozo de cuerda". La respuesta depende completamente de cuán "difíciles" sean las tareas relacionadas con el dispositivo. Es muy probable que pueda hacer fácilmente lo que quiere. Pero, sigue leyendo ...

El único problema real debería ser "¿Tiene el PIC suficientes recursos?"

Los recursos aquí incluirían:

  • Poder de procesamiento

  • Memoria de programa

  • Memoria de datos (RAM y flash)

  • Capacidad de respuesta en tiempo real (por ejemplo, la capacidad de servir interrupciones y realizar tareas impulsadas por interrupciones).

  • Periféricos para fines especiales (por ejemplo, tal vez hardware para USB y / o Ethernet)

  • Otras características especiales que facilitan la implementación de una interfaz de dispositivo determinada.

  • E / S general

  • Otro ...

El PIC32 es razonablemente capaz. El USB representa una carga de programas razonablemente pesada, pero debería ser fácil determinar la cantidad de recursos que consume. Después de eso, ¿cuánto recurso en cada categoría requiere cada una de las interfaces del dispositivo? ¿Y cuánto le queda al procesador?

Si sus dispositivos son como "normales", no tendrá ningún problema para administrarlos y también para USB.

Si sus dispositivos son especialmente exigentes, deberá abordar cada uno de los puntos anteriores. Por ejemplo, si está intentando administrar una tarjeta de memoria flash grande a 100 MB / s, o controlar una unidad SATA sin una interfaz personalizada IC, o realizar una criptografía compleja en datos, o codificación de video MPEG, o ... quedarse sin caballos de fuerza.

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas