¿Cómo habilitar la emulación serial a través de USB en una placa Discovery STM32F4?

He estado buscando esto y todavía no he encontrado nada al respecto. Esta placa se conecta directamente a la PC host con un bus USB. ¿Es posible emular un puerto serie en este caso?

Respuestas (4)

Este proyecto implementa la serie CDC USB en el STM32F4 Discovery.

https://www.das-labor.org/trac/browser/microcontroller/src-stm32f4xx/serialUSB

Intenté usar este proyecto pero con el compilador armcc y aún no funcionó. Windows dice que es un dispositivo USB no válido.
Intente usar usbsnoop para depurar los mensajes USB.
@TobyJaffey ¡El enlace caducó! ¿Puede actualizar el enlace o explicar la implementación clave? ¡Gracias!

Hay dos conexiones USB en la placa: el conector micro USB en la parte superior y luego el conector micro A/B para la compatibilidad con USB On-The-Go. El primer conector es la interfaz de programación: se conecta solo al chip del programador y no al microcontrolador de destino real. No hay forma de usar esta conexión como un puerto serie emulado.

En cuanto a la conexión USB OTG, estoy menos familiarizado con ella, pero a juzgar por la página de Wikipedia sobre el tema, parece que tampoco está diseñada para eso: USB OTG se centra en actuar como un semi-host para periféricos como memorias USB. o adaptadores de bluetooth o algo así. Simplemente hacer una búsqueda rápida en Google no produce emuladores de puerto serie y, según mi evaluación de cómo funciona OTG, mi reacción inicial es que no funcionará.

Sin embargo, es posible que pueda configurar el dispositivo OTG para que actúe como un dispositivo USB normal y luego codificar un emulador de puerto serie para que resida en la placa, pero eso es todo un esfuerzo de desarrollo por sí solo. Es mejor conectar un cable como este a los pines UART en la placa e interactuar a través del UART en el microcontrolador de esa manera.

Es posible que desee consultar mi pregunta (y respuesta): ¿ ST-LINK es posible la comunicación en serie? Me las arreglé para ejecutar la comunicación en serie sobre SWD.

Si hay una forma de enviar datos seriales desde el STM32F4 a la PC a través de la conexión USB de programación, no he visto cómo hacerlo.

Logré obtener datos de GPS (tipo de texto) en la PC de la siguiente manera:
(1) Adaptar el ejemplo de software USART para el STM32F4 en el sitio web de "Elia" (2) Conectar los pines TX y RX y GND del STM32F4 a un dispositivo serie USB como el que uso para la comunicación en serie entre Arduino y la PC o el dispositivo GPS y la PC. (3) Use PuTTY para mostrar los datos en serie que se reciben en la PC.

Esto parece funcionar, pero es bastante molesto. Tampoco puedo hacer que funcione en ambas direcciones, lo que podría hacer con Arduino y otros dispositivos.