¿Hay alguno de los chips puente USB-to-SPI * slave * disponibles?

5

Me gustaría conectar un dispositivo alimentado por batería a USB, sin requerir que los usuarios instalen controladores. Los requisitos de transferencia de datos son moderados, por lo que los ~ 60kbytes / seg del modo HID estarían bien, pero no quiero ser mucho más lento que eso. El procesador principal probablemente será alimentado por baterías incluso cuando el cable USB esté enchufado, por lo que me gustaría tener ese procesador en reposo cada vez que la PC no se esté comunicando activamente.

He estado considerando el uso de un puente USB a serie, pero los que he visto con la mayoría de los microcontroladores requieren que la velocidad de datos sea lo suficientemente lenta como para adaptarse al peor tiempo de respuesta de interrupción de puerto serie. Además, mientras que todos los que he visto permiten que un controlador indique si está listo para recibir datos, ninguno tiene ningún medio para pedirle a un controlador "no preparado" que se prepare. Todos los chips de puente USB a SPI que he visto están limitados a actuar como maestros SPI, lo que empeoraría las cosas para cualquier microcontrolador conectado a ellos.

Una interfaz USB que actuó como un esclavo SPI con un pin de interrupción parecería ideal, ya que podría comunicarse muy rápidamente cuando el procesador principal quería comunicarse, y podría decirle al procesador principal cuándo necesitaba atención, pero no perdería datos, incluso si la PC lo enviaba justo cuando el procesador principal deseaba ir a dormir (la interrupción provocaría una activación dentro de 100 microsegundos aproximadamente, con lo cual el controlador podría preguntar qué sucedió y luego recibir datos). A diferencia de los puentes maestros USB a serie o USB a SPI, que necesitan almacenamiento de configuración no volátil, el maestro SPI al que está conectado puede configurar un puente esclavo USB a SPI, lo que posiblemente reduce los requisitos de silicio. .

Debería ser posible, por lo menos, utilizar un microcontrolador compatible con USB barato y programarlo para que actúe como un puente; Si alguien ha hecho algo así y lo ha publicado como código abierto, lo usaría tan pronto como lo volvería a implementar. Podría ser posible usar un UART en lugar de SPI si el dispositivo admitía el protocolo de intercambio y tenía un pin que indicaría cuándo tenía datos para enviar (incluso cuando se mantenía apagado); tal enfoque podría ser necesario cuando se usa un microcontrolador como puente, ya que la mayoría de los microcontroladores hacen esclavos SPI pésimos. Por otro lado, si tal cosa está disponible como una pieza barata y comercial, eso parece más fácil que tener que comprar chips de microcontroladores y luego programarlos. ¿Alguien tiene alguna recomendación?

Addendum

Tal vez debería haber aclarado que estoy tratando de encontrar algo realmente barato, y estoy evaluando las posibilidades de usar un controlador principal con USB integrado en lugar de usar algún tipo de puente. El uso de un puente puede permitir el uso de un procesador principal más económico que el que de otro modo se requeriría, y puede simplificar el diseño de la fuente de alimentación (ya que el puente podría ser alimentado por USB sin tener que asegurarse de que el procesador recibiría energía del USB de + 5V en lugar del Batería de + 6V cuando ambos suministros estaban disponibles); incluso si bridge + CPU termina siendo una moneda de diez centavos o dos más que una CPU principal compatible con USB, la separación del USB de las otras funciones de la CPU podría terminar siendo una "victoria".

De los diseños que he construido hasta ahora, mi favorito usaba un FT245 en combinación con un CPLD ubicado en un tablero de teclado / pantalla / USB que se comunicaba al tablero principal a través de una interfaz estilo SPI de 3 cables (dos cables de la placa principal; un cable retrocediendo). Cuando tanto el reloj como los datos se encontraban en estado inactivo, el CPLD usaría el retorno de datos para indicar cuándo la CPU principal necesitaba un servicio (debido a que se presionó un botón, los datos llegaron al USB, el USB se conectó / desconectó, etc.) .) La CPU principal podría entonces, en su tiempo libre, despertarse, preguntar al CPLD qué es exactamente lo que quería y hacer lo que fuera necesario. Realmente me gustó ese estilo de comunicación, pero el FT245 y el CPLD juntos cuestan demasiado. Además, el hecho de poder utilizar HID en lugar de CDC podría mejorar la experiencia del cliente final.

Conceptualmente, parece que un chip que fue diseñado para servir como un puente entre el USB y una CPU que fue diseñado para hablar con él podría ser eléctricamente más simple y más barato que las interfaces USB a otras cosas que he visto, ya que no necesitaría ningún tipo de almacenamiento de configuración no volátil y no requeriría muchas opciones de configuración; principalmente habilita los diversos puntos finales, posiblemente algunos tiempos de espera, y una memoria para datos para alimentar al host en el punto final de control . La mayoría de las otras lógicas serían manejadas por el procesador conectado. Desafortunadamente, no conozco ningún dispositivo de este tipo que esté realmente a la venta.

    
pregunta supercat

3 respuestas

1

El convertidor FTDI USB a serie siguió a mi MCU en modo esclavo SPI.

El firmware simplemente transferiría los datos entre el SPI en el puerto a la línea Tx que se enviará a través del FTDI al puerto USB.

De manera similar, el firmware almacenará en caché los datos de Rx del puerto USB / serie y los colocará en el búfer SPI Tx a la espera de ser leído.

Dos soluciones IC simplemente para lograr un esclavo USB a SPI.

    
respondido por el smashtastic
1

Creo que, desde el punto de vista del costo y el espacio de la placa, un uC compatible con USB (por ejemplo, el ATTiny85) sería el mejor enfoque. Puede personalizarlo según el protocolo que quiera que vea su CPU principal, viene con unos pocos cientos de bytes de RAM para almacenar en búfer mientras se procesa la interrupción de activación, y es un SOP-8 que cuesta, literalmente, unos pocos centavos. p>     

respondido por el WooShell
0

Este chip FTDI funciona como un esclavo I2C y parece ser relativamente barato:

enlace

Y este funciona como un esclavo SPI:

enlace

    
respondido por el foldl

Lea otras preguntas en las etiquetas