Emulación serie USB: ¿CDC o específico del proveedor?

3

Al diseñar un dispositivo que requiere comunicación con una PC a través de un puerto serie virtual a través de USB:

  • ¿Cuándo se utilizarían los chips de emulación de puerto serie USB con controladores específicos del proveedor (por ejemplo, FTDI) y
  • ¿cuándo se implementaría un dispositivo de clase de dispositivo de comunicación (CDC)?

¿Cuáles son las ventajas de cada solución, cuáles son las limitaciones?

    
pregunta ARF

2 respuestas

5

Dependerá en gran medida de las características que ofrezca su dispositivo.

El UART a través de USB es una solución atractiva porque puede usarlo en cualquier microcontrolador que pueda funcionar con UART, incluso si no tiene el hardware y tiene que golpearlo un poco. Los puentes FTDI UART-a-USB (también hay otros, como Silicon Labs, pero FTDI es el más usado) ocultan todos los detalles del USB, por lo que no hay ningún requisito para el microcontrolador al respecto. Un microcontrolador con 512 bytes de Flash y 2 E / S puede comunicarse con una PC de esta manera.

CDC es diferente. Es una clase USB, lo que significa que necesita una pila USB y el controlador CDC. Especialmente el controlador CDC puede ser un problema en los microcontroladores de gama baja, mientras que pueden estar disponibles para un RTOS, pero entonces probablemente se ejecutará en una plataforma más avanzada. Dado que ejecutará el software USB, tendrá que obtener un ID de proveedor (VID) y un ID de producto (PID) si desea identificarlo en un bus USB. Una licencia cuesta dinero: 2000 dólares para el VID, sin el cual no se le permite usar el logotipo USB.

El uso de chips FTDI resuelve este problema: FTDI tiene un VID y PID, por lo que no tiene que preocuparse por eso. Por defecto, el PID no será exclusivo de su producto (todos los FT232R tendrán el PID 0x6001, por ejemplo), pero el PID se almacena en la EEPROM del chip y puede modificarse. FTDI puede proporcionarle un bloque de PID únicos. Para su proyecto diario, trabajaría con los chips FTDI, ya que no necesitan huella en el microcontrolador y son tecnología probada.

    
respondido por el stevenvh
3

En general, es más barato seleccionar un microcontrolador con una interfaz de dispositivo USB incorporada y ejecutar el software necesario para hacer un puerto de com virtuales de CDC, que tener un convertidor USB-serie externo.

Sin embargo, poner un IC convertidor separado en el tablero tiene algún rol:

  • al actualizar diseños heredados a USB sin cambiar nada más

  • mantener el software del microcontrolador muy simple: esto también puede ser una ventaja para los cargadores de arranque, y cualquier cosa que deba ejecutarse en tiempo real de ciclos contados, donde el servicio de una interrupción de USB puede ser un problema, pero encuestar / aceptar una sola el carácter de serie a la vez podría no serlo (o incluso puede hacer un esquema de serie con tolerancia de nivel de aplicación para los caracteres perdidos, ya que el IC del convertidor sigue respondiendo como un dispositivo USB adecuado)

  • o incluso mantener la interfaz como una herramienta separada que no está incluida en la versión global del producto

  • al agregar una interfaz del lado del dispositivo USB a un dispositivo integrado derivado de PC que normalmente solo incluiría interfaces de host USB

  • como una ejecución final alrededor de la preocupación VID / PID

respondido por el Chris Stratton

Lea otras preguntas en las etiquetas