¿Cuál es la mejor manera de agregar soporte USB a un proyecto?

2

Dio la casualidad de que necesito agregar una comunicación de usb para mi próximo proyecto en el que estoy trabajando. ¿Cuál es la forma mejor / más barata de hacer esto?

¿Debería estar usando un microcontrolador con soporte USB como quizás el ATMEGA32U2 o usar un chip ftdi, o tal vez otra cosa?

Nunca he trabajado con USB antes, así que cualquier ayuda sería buena.

    
pregunta Saptarshi Ghosh

3 respuestas

1

Voy a asumir que "mejor" es la forma más fácil.

Es posible que desee comprobar primero si puede encontrar una biblioteca con las API USB adecuadas para una MCU específica o para un chip. Muchos proveedores proporcionan soporte de software. En pocas palabras, no vaya por uno a menos que ofrezcan soporte de API. Es un proceso doloroso para construir el protocolo desde cero y no debería serlo. Más fácil sería si tiene un USB integrado en el chip. Es barato y comparativamente fácil de programar que tener que acomodar dos ICS, aumentando el costo, el esfuerzo en la soldadura, etc.

    
respondido por el Dina
2

Depende de tu volumen. Si está haciendo miles de sus tableros, entonces probablemente sea mejor encontrar un chip que le guste, extienda su PCB y utilícelo. Mi favorito personal es la serie LPC11U de NXP. Son agradables porque son modernos núcleos ARM Cortex, tienen un cargador de arranque incorporado que emula el almacenamiento USB. Así que cuando habilitas el cargador de arranque y conectas tu dispositivo, la computadora a la que está conectado lo mostrará como una unidad USB. Luego puedes copiar / pegar en un nuevo binario de firmware allí y actualizarlo así. Hace que sea muy fácil para usted y sus usuarios finales actualizar el firmware. Escribir firmware para ellos también es muy fácil y fácil gracias al proyecto mbed que admite esos chips.

Si está haciendo algo de bajo volumen, use módulos, lo más barato que pueda encontrar. Vaya a Aliexpress.com o Alibaba y busque clones de Arduino. Los clones del Arduino Nano son geniales y también tienen los basados en ATmega32u4. Estas tablas son ridículamente baratas, yendo de $ 2.5 USD a $ 5.50. En volúmenes bajos, un chip USB, más pasivos, y un conector, funcionarán más que eso, por lo que es un buen negocio.

Evite FTDI a toda costa. Son una empresa podrida y han arruinado a las personas bastante mal al hacer clones de sus fichas a propósito. Puede leer sobre esto aquí: enlace Si bien puede parecer que romper dispositivos clonados está bien, muchas personas pagaron los precios de FTDI pensando que obtuvieron chips genuinos pero que en realidad eran falsificados. Las cadenas de suministro para estos son lo suficientemente complejas, y los clones son lo suficientemente buenos, por lo que es muy difícil para los fabricantes diferenciarlos.

    
respondido por el nemik
1

En gran medida, depende de si su preocupación es la facilidad de desarrollo o el costo unitario.

El uso de un microcontrolador habilitado para USB como centro de su proyecto tiende a ser la solución más barata (o al menos la más baja de partes) y tiene la mayor flexibilidad en la forma en que se usa la interfaz USB. Por ejemplo, puede implementar un puerto serie, teclado o mouse, dispositivo de audio, dispositivo de almacenamiento o tipos de esquemas de comunicación totalmente personalizados. Sin embargo, hay un inconveniente en que el servicio al puerto USB agrega complejidad a su firmware. Además, si depende de USB para obtener un mensaje de estado o depuración de su firmware, varios tipos comunes de operación incorrecta (dejando las interrupciones inhabilitadas, el código fuera de control, llegando a un punto de interrupción, etc.) pueden romper la interfaz USB en situaciones donde un canal de salida UART más simple Probablemente seguiría trabajando. Restablecer el microcontrolador también puede ser problemático, ya que puede requerir una nueva enumeración por parte del host.

El uso de un convertidor serial USB distinto, ya sea un chip de función fija (FTDI, SiLabs, CH340, etc.), o un micro separado que proporciona solo funcionalidad de puente (ATmega16u2 como en Arduino Uno, etc.) tiene una ventaja clave en manteniendo el servicio moderadamente crítico para el tiempo del bus USB distinto de su firmware. Normalmente, su chip de interfaz USB se mantendrá felizmente ejecutando y procesando datos en serie, incluso cuando el firmware del microcontrolador principal se bloquee, se reinicie, reprograme, se detenga con un depurador de punto de interrupción, etc., todas las operaciones que tienden a romper una interfaz USB y requieren una revisión. Enumeración al host. Esto puede ser un gran ahorro de tiempo durante el desarrollo, pero es menos importante a medida que el proyecto madura.

FWIW, cuando construyo algo destinado a utilizar una interfaz USB en el chip, habitualmente extiendo las señales de un UART a un encabezado o vías vendibles, de modo que pueda usar una serie USB externa de nivel lógico para la depuración Salida temprano en el ciclo de desarrollo.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas