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.