Estoy diseñando un sistema y tal vez (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 aguas abajo y otro protocolo aguas arriba. He estado leyendo mucho sobre la especificación USB y sobre el soporte de USB en la serie de microcontroladores Microchip PIC32. Pero aun así, tengo una duda fundamental: ¿es posible conectar dos dispositivos aguas abajo del PIC y conectar el PIC aguas arriba a un host al mismo tiempo? En otras palabras, ¿es posible que el PIC32 actúe como host y dispositivo al mismo tiempo?
Agradecería mucho cualquier pista o sugerencia al respecto
Gracias por adelantado.
El USB puede estar en modo dispositivo o en modo OTG. No puede tener OTG en el mismo bus USB que un host como una computadora.
Múltiples dispositivos OTG pueden cambiar entre el modo host y 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 otro entre el PIC y los dispositivos. No creo que haya ningún dispositivo PIC que tenga 2 interfaces USB distintas.
Sugeriría usar un segundo dispositivo junto con el PIC32 para que actúe 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 potente como otro PIC (tal vez un PIC18 con soporte USB) para que puedas hablar a través de otros protocolos como I²C o SPI.
Parece que estás hablando de algo similar a un concentrador USB. Como dice Majenko, (y que yo sepa también) todos los PIC32 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 de descarga.
Como pregunta Kevin, ¿tienes que 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.
Contarnos un poco más sobre los dispositivos podría generar algunas sugerencias útiles.
Dependiendo de la potencia de procesamiento necesaria, es posible que desee ver Cypress y TI y FTDI (¿Viniculum?) ya que tienen algunos circuitos integrados de controlador USB que tienen un uC incorporado, por lo que puede ser una mejor opción que el PIC32.
Si lo que está tratando de hacer es conectar 2 dispositivos descendentes a un PIC32, la respuesta es no... necesitaría un concentrador, y PICS aún no tiene esos controladores (no de Microchip) (a menos que desee escribir el Conduce tú mismo y compártelo con nosotros, eso sería genial ;-) )
Si lo que estás intentando hacer es conectar un PIC como dispositivo USB, la respuesta es un simple sí. Si lo que está tratando de hacer es conectar un PIC como host y dispositivo al mismo tiempo, la respuesta es un claro no. Necesitaría un uC con 2 puertos USB... todavía no hay PIC.
Tal vez tu situación sea así:
Esto es lo que se conoce como una pregunta de "cuán largo es 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 atender interrupciones y llevar a cabo tareas impulsadas por interrupciones).
Periféricos de propósito especial (por ejemplo, tal vez hardware para USB y/o ethernet)
Otras características especiales que facilitan la implementación de una determinada interfaz de dispositivo.
E/S generales
Otro ...
El PIC32 es razonablemente capaz. USB representa una carga de programa razonablemente pesada, pero debería ser fácil determinar cuántos recursos consume. Después de eso, ¿cuántos recursos en cada categoría requiere cada una de las interfaces del dispositivo? y cuanto le queda al procesador?
Si sus dispositivos son algo así como "normales", no tendrá problemas para administrarlos y USB también.
Si sus dispositivos son especialmente exigentes, deberá abordar cada uno de los puntos anteriores. Por ejemplo, si está intentando administrar una tarjeta flash grande a 100 MB/s, o controlar una unidad SATA sin IC de interfaz personalizado, o realizar criptografía compleja en datos, o codificación de video MPEG, o... quedarse sin caballos de fuerza.
kevin vermeer
federico
joeforker