Diseño de dispositivo USB [cerrado]

1

Quiero construir un dispositivo periférico USB. El dispositivo se conecta a un teléfono inteligente Android con capacidades USB OTG. El teléfono inteligente será un host y ejecutará una aplicación que se comunica con mi dispositivo. Quiero diseñar ese dispositivo periférico desde cero, es decir, crear mi propia PCB.

Chip de controlador periférico USB: estaba buscando chips que pudiera usar para mi dispositivo, pero luego pensé que primero debería entrenar en un tablero de evaluación / desarrollo. Quiero poder configurar y programar el chip para que se comunique con el teléfono Android. No quiero estos convertidores FTDI de usb a serie porque parecen poco profesionales y me gustaría tener una comunicación adecuada de usb a usb.

Preguntas:

  1. ¿Hay placas eval / dev de precio razonable para chips USB?

  2. ¿Puedes recomendar chips específicos?

  3. Me gustaría aprender más sobre usb, he investigado un poco y estoy un poco confundido: ¿sería demasiado loco escribir mis propios controladores usb para mi dispositivo?

  4. ¿Hay alguien más que haya hecho algo similar que pueda compartir su experiencia?

  5. ¿Debo deshacerme de mi plan por completo y simplemente obtener algún tipo de solución estándar?

pregunta Shady Programmer

2 respuestas

3

Mi opinión sobre esto.

  

¿Hay placas eval / dev de precio razonable para chips USB?

Supongo que con "chip USB" te refieres a un microcontrolador programable con periférico USB.

Sí, mucho. Pero si quieres mantenerte enfocado, comienza a mirar desde donde estás ahora. Y con eso quiero decir; ¿Cuánto y particularmente en qué plataformas integradas está familiarizado? Algunas sugerencias:

  • Arduino Leonardo
  • Arduino Zero
  • Arduino Due
  • ST STM32F4Discovery
  • ST Nucleo (hay un par de docenas de tarjetas, algunas con USB, Ethernet, etc.)
  • Kit de inicio USB MicroChip PIC32 II
  • Mbed
  

¿Puedes recomendar chips específicos?

Personalmente, he usado USB en los dispositivos Microchip, y estoy bastante satisfecho con ellos. PIC24FJ64GB004 es mi favorito personal. Es más rápido que el microcontrolador promedio de 8 bits, tiene mucha memoria, E / S periférica extraíble, puede ejecutar USB desde un oscilador interno, TQFP-44 es razonablemente fácil de soldar (-02 chips en DIP-28 para el empapelado), y Su implementación USB tiene 32 puntos finales. No todos los microcontroladores tienen 32 puntos finales disponibles. Es suficiente para admitir cualquier descriptor USB que desee (por ejemplo, crear dispositivos USB compuestos).

Sin embargo, no tengas miedo de mirar otros dispositivos. Estoy satisfecho con ese chip en particular porque he invertido algo de tiempo en familiarizarme con él. Hace lo que necesito que haga, especialmente teniendo en cuenta el tamaño / rendimiento / costo / etc.

  

Me gustaría aprender más sobre usb, he investigado un poco y estoy un poco confundido. ¿Escribir mis propios controladores usb para mi dispositivo sería una locura?

USB es un protocolo duro. Por lo tanto, un buen enfoque es verificar primero que el hardware está bien y luego comenzar a ver sus propias implementaciones.

"Drivers" es una historia de dos caras. El host necesita un controlador, y el dispositivo también. La mayoría de los hosts USB admitirán controladores de dispositivos estándar como HID, CDC y almacenamiento masivo. Estos son "clase específica". Si quieres algo personalizado, debes ir "específico del proveedor", que es mucho más complicado. En ese caso, debe definir sus propios comandos de configuración, arreglos de punto final, qué datos se rellenan en los buffers de punto final, etc.

En la PC, puede usar libusb para cargar un controlador "genérico" e interactuar con los puntos finales en "usuario". Esto mitiga la necesidad de un controlador de "kernel land". Sin embargo, esto puede estar bien para una máquina desarrolladora, pero no para una máquina cliente.

En el microcontrolador, recomendaría encarecidamente utilizar un marco. El USB es difícil porque muchos sistemas operativos darán poca o ninguna información de depuración sobre por qué un dispositivo no pudo enumerar. Se puede realizar la depuración del USB, pero cualquiera requiere costosos rastreadores de hardware USB o solo funciona cuando se pasa la etapa de enumeración. Además, la depuración en el dispositivo puede aprovechar la comunicación (por ejemplo, se alcanza un punto de interrupción) y terminar la sesión USB.

Por eso recomendaría usar lo que ya funciona. No trates de correr cuando no puedes caminar.

  

¿Hay alguien más que haya hecho algo similar que pueda compartir su experiencia?

Yo mismo he hecho algunos proyectos USB. Como he dicho, da pequeños pasos.

1) Diseñe su PCB siguiendo la hoja de datos del chip que ha elegido. También me aseguro de que haya una aplicación de demostración disponible para el chip que he elegido.

2) Considera lo que quieres hacer con USB.

¿Desea crear un mouse / teclado / joystick (por ejemplo, periférico de entrada del juego personalizado)? Probablemente sea necesario un dispositivo de clase HID. ¿Desea cargar nuevos firmware y / o configuraciones en su dispositivo? Probablemente dispositivo de almacenamiento masivo. ¿Quieres tener necesidades personalizadas? Las opciones de IMHO 2 permanecen:

a) Simule un puerto serie con el CDC-ACM. Luego construya un protocolo RS232 clásico sobre esto.

b) Escriba su host y controlador de cliente completamente personalizados. Esto no es trivial.

3) Si desea vender dispositivos USB, también necesita un VID / PID. Estos no son gratuitos, al contrario, está fuera del alcance de casi todos los aficionados e incluso de algunas pequeñas empresas. Alternativamente, algunos fabricantes (como Microchip) permiten el uso limitado de su VID para las aplicaciones de los clientes.

  

¿Debo deshacerme de mi plan por completo y simplemente obtener algún tipo de solución estándar?

No estoy de acuerdo con que los chips "FTDI" no sean profesionales. Son una forma diferente de hacer las cosas. Lograr que su primer proyecto USB funcione llevará tiempo. Me tomó un par de tardes jugueteando. Sin embargo, si no lo haces, te perderás la experiencia y mantendrás esta barrera (mental).

    
respondido por el Hans
6

Esta no es una respuesta completa, y su pregunta es demasiado amplia para eso. Puedo darte mi experiencia.

  

¿Hay placas eval / dev de precio razonable para chips USB?

No puedo responder esto.

  

¿Puedes recomendar chips específicos?

He usado PIC16F1454 en dos proyectos. Tiene todo lo incorporado para su uso como un periférico USB. Literalmente solo necesitas 1-2 condensadores y un conector USB. Cuenta con un regulador de voltaje 3.3 incorporado para los controladores USB, limitación de velocidad de giro, pull-ups, todo. Funciona con el USB de 5 voltios.

(Es probable que muchas personas me griten por recomendar un PIC; trátelo. Lo odio tanto como a cualquiera, tiene una arquitectura horrible internamente, pero a quién le importa hoy, la codificará en C de todos modos. Teniendo en cuenta que Microchip está comprando Atmel ahora, también es difícil saber qué sucederá con los controladores AVR).

  

Me gustaría aprender más sobre usb, he investigado un poco y estoy un poco confundido

No eres el único que está confundido. USB es difícil. Si desea una descripción general de USB, puedo recomendar USB Made Simple .

  

¿Estaría demasiado loco escribir mis propios controladores USB para mi dispositivo?

Cuando escribes "controlador usb", asumo que te refieres al firmware en chip. No es una locura, es una estupidez. Un desarrollador incrustado normal usará una de las pilas USB suministradas por el fabricante, o alguien más que esté lo suficientemente loco como para crear una, esencialmente eligiendo un programa que esté lo suficientemente cerca de lo que quiera lograr. Para el PIC16F1454 que recomendé, hay cientos de programas de ejemplo con el software cliente correspondiente, o existe el código abierto M-Stack .

  

¿Hay alguien más que haya hecho algo similar que pueda compartir su experiencia?

Es probable, pero no en el intercambio de pila. O en realidad, eso es lo que estoy haciendo ahora, en un sentido limitado.

  

¿Debo deshacerme de mi plan por completo y simplemente obtener algún tipo de solución estándar?

No, porque escribes "Quiero diseñar ese dispositivo periférico desde cero, es decir, crear mi propia PCB". . Este es un buen objetivo y su pregunta es un buen comienzo.

    
respondido por el pipe

Lea otras preguntas en las etiquetas