1 votos

Diseño del dispositivo USB

Quiero construir un dispositivo periférico USB. El dispositivo debe conectarse a un smartphone Android con capacidades USB OTG. El teléfono inteligente será un anfitrión 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 controlador de periféricos USB - Estuve buscando chips que pudiera utilizar para mi dispositivo, pero luego pensé que debería conseguir una placa de evaluación/dev para entrenar, primero. Quiero ser capaz de 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. ¿Existe alguna placa de evaluación/devolución a un precio razonable para los chips USB?

  2. ¿Puede recomendar alguna ficha específica?

  3. 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 demasiado loco?

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

  5. ¿Debería abandonar mi plan por completo y adquirir algún tipo de solución estándar?

6voto

pipe Puntos 314

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

¿Existe alguna placa de evaluación/devolución a un precio razonable para los chips USB?

No puedo responder a esto.

¿Puede recomendar alguna ficha específica?

He utilizado el PIC16F1454 en dos proyectos. Tiene todo incorporado para su uso como periférico USB. Literalmente sólo necesitas 1-2 condensadores y un conector USB. Tiene 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 mucha gente me grite por recomendar un CFP, pero hay que aceptarlo. Lo odio tanto como cualquiera, tiene una arquitectura horrible internamente, pero a quién le importa hoy en día, lo codificarás en C de todos modos. Teniendo en cuenta que Microchip está comprando Atmel ahora, también es difícil saber qué va a pasar con los controladores AVR).

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

No eres el único que está confundido. El USB es difícil. Si quieres una visión general de los USB te puedo recomendar El USB en su forma más sencilla .

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

Cuando escribes "controlador usb", supongo que te refieres a un firmware en el chip. No es una locura, es simplemente una estupidez. Un desarrollador embebido normal utilizará uno de los stacks USB suministrados por el fabricante, o por alguien lo suficientemente loco como para hacer uno, esencialmente escogiendo un programa que se acerque lo suficiente a lo que quieres lograr. Para el PIC16F1454 que recomendé, hay cientos de programas de ejemplo con el correspondiente software cliente, o está 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 pilas. O en realidad, eso es lo que estoy haciendo ahora, en un sentido limitado.

¿Debería abandonar mi plan por completo y adquirir algún tipo de solución estándar?

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

3voto

Avner Puntos 2065

Mi opinión al respecto.

¿Existe alguna placa de evaluación/devolución a un precio razonable para los chips USB?

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

Sí, mucho. Pero si quieres mantenerte centrado, empieza a mirar desde donde estás ahora. Y con esto quiero decir: ¿cuánto y, sobre todo, con qué plataformas integradas estás familiarizado? Algunas sugerencias:

  • Arduino Leonardo
  • Arduino Cero
  • Arduino Due
  • ST STM32F4Discovery
  • ST Nucleo (hay un par de docenas de placas - algunas con USB, Ethernet, etc.)
  • MicroChip PIC32 USB starter Kit II
  • Mbed

¿Puede recomendar alguna ficha específica?

Personalmente he utilizado el USB en los dispositivos de Microchip, y estoy bastante satisfecho con ellos. El PIC24FJ64GB004 es mi favorito. Es más rápido que la media de los microcontroladores de 8 bits, tiene mucha memoria, E/S periféricas reutilizables, puede ejecutar el USB desde el oscilador interno, el TQFP-44 es razonablemente fácil de soldar (¡el chip -002 en DIP-28 para el breadboarding!), y su implementación del USB tiene 32 puntos finales. No todos los microcontroladores tienen 32 puntos finales disponibles. Es suficiente para soportar cualquier descriptor USB que quieras (por ejemplo, crear dispositivos USB compuestos).

Sin embargo, no tengas miedo de mirar otros dispositivos. Yo estoy contento 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/coste/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 demasiado loco?

El USB es un protocolo duro. Así que un buen enfoque es verificar primero que el hardware está bien, y luego empezar a buscar sus propias implementaciones.

Los "drivers" tienen dos caras. El host necesita un controlador, y el dispositivo también. La mayoría de los hosts USB soportan controladores de dispositivos estándar como HID, CDC y Mass Storage. Estos son "específicos de la clase". Si quieres algo personalizado tienes que ir a "vendor specific" que es mucho más complicado. En ese caso necesitas definir tus propios comandos de configuración, arreglos de los puntos finales, qué datos se llenan en los buffers de los puntos finales, etc.

En el PC se podría utilizar libusb para cargar un controlador "genérico" e interactuar con los puntos finales en "tierra de usuarios". Esto mitiga la necesidad de un controlador de "tierra del kernel". Sin embargo, esto puede estar bien para una máquina de desarrollador, pero no para una máquina de cliente.

En cuanto al microcontrolador, yo recomendaría encarecidamente el uso de un framework. USB es difícil porque muchos sistemas operativos dan poca o ninguna información de depuración acerca de por qué un dispositivo no se puede enumerar. La depuración de USB se puede hacer, pero o bien requiere costosos sniffers de hardware USB o sólo funciona cuando se pasa la etapa de enumeración. Además, la depuración en el dispositivo puede interrumpir la comunicación (por ejemplo, si se alcanza un breakpoint) y terminar la sesión USB.

Por eso recomendaría utilizar lo que ya funciona. No intentes 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 de USB. Como he dicho dar pequeños pasos.

1) Diseña tu PCB siguiendo la hoja de datos del chip que has elegido. También me aseguro de que hay una aplicación de demostración disponible para el chip que he elegido.

2) Piensa en lo que quieres hacer en el USB.

¿Quieres crear un ratón/teclado/joystick (por ejemplo, un periférico de entrada de juego personalizado)? Probablemente sea necesario un dispositivo de clase HID. ¿Quiere cargar un nuevo firmware y/o ajustes en su dispositivo? Probablemente un dispositivo de almacenamiento masivo. ¿Quiere tener necesidades personalizadas? En mi opinión, quedan dos opciones:

a) Simular un puerto serie con el CDC-ACM. Luego construye un protocolo RS232 clásico sobre este.

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

3) Si quieres vender dispositivos USB, también necesitas 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 un uso limitado de su VID para aplicaciones de clientes.

¿Debería abandonar mi plan por completo y adquirir algún tipo de solución estándar?

No estoy de acuerdo en que los chips "FTDI" no sean profesionales. Son una forma diferente de hacer las cosas. Conseguir que tu primer proyecto USB funcione te llevará tiempo. A mí me llevó un par de tardes trastear. Sin embargo, si no lo haces, te perderás la experiencia y mantendrás esta barrera (mental).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X