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).