¿Cómo utiliza una placa de desarrollo de microcontrolador un cable USB para transmitir datos en serie?

Estoy tratando de comprender cada sección del viaje de datos desde un micrófono a través de un microcontrolador a una terminal de PC.

Ahora, después de leer sobre la transferencia de datos en serie, me doy cuenta de que la transferencia de datos de audio en tiempo real a través de un puerto en serie no es posible, ya que la velocidad máxima de transferencia de datos es de alrededor de 115 kb/s. Sin embargo, todavía me gustaría saber sobre la transferencia de datos en serie en un microcontrolador

Tengo un micrófono electret conectado a una entrada analógica en una placa de desarrollo stm32 nucleo-144 con un microcontrolador stm32F746ZG ( https://os.mbed.com/platforms/ST-Nucleo-F746ZG/ ) y la placa de desarrollo está conectada a un pc a través de un cable USB.

Tengo entendido que la señal de audio es muestreada por el adc en el chip del microcontrolador, estos nuevos datos digitales luego se mueven a la memoria a través de uno de los buses periféricos avanzados (APB) y luego el bus avanzado de alto rendimiento (AHB) luego viene vuelve a salir de la memoria y va a través de APB y AHB a un UART dentro del microcontrolador y luego a un controlador de línea (RS-232/RS-485) (no sé si esto está en el microcontrolador en la placa de desarrollo) donde el voltaje aumenta y luego de esto estoy perdido.

¿Los datos solo progresan a lo largo de la línea tx desde el controlador de línea hasta el puerto USB en la placa de desarrollo? ¿Y luego se transmite como datos USB o como datos en serie utilizando una de las líneas de datos USB?

Nada usa "una de las líneas de datos USB"; las líneas de datos son un par diferencial y los datos USB siempre usan ambos.
La situación que estás describiendo parece bastante improbable. ¿Qué placa de desarrollo STM32F4 tiene RS232? ¿Y por qué querrías usarlo? Además, ¿por qué quieres enviar audio a una "terminal"? Hay formas mucho mejores listas para usar de obtener audio en una PC. En cuanto a USB y varios esquemas de serie virtual, esto es algo que puede leer: el propósito de los sitios de Stack Exchange no es reemplazar la documentación, sino solo tratar las preguntas que quedan después de consultar la documentación y las referencias aplicables .
UART y USB son dos cosas separadas.
No estoy completamente seguro de lo que estás preguntando. ¿Estás preguntando qué en el microcontrolador es responsable de transmitir datos a tu PC? Esa respuesta se puede encontrar en la hoja de datos del paquete del SoC. Busque un diagrama de bloques hacia el comienzo de la hoja de datos.
Estoy preguntando cómo llegan realmente los datos en serie a la PC a través de un cable USB. ¿Los datos seriales están cubiertos por USB?
Pensé que el intercambio de pila era para ayudar a las personas, he visto muchas preguntas en este sitio que podrían haberse respondido consultando la documentación correspondiente. No he encontrado ninguna documentación que haya ayudado, por eso pregunté aquí.
Creo que el problema es que no está claro exactamente lo que estás preguntando. ¿Cómo pasan los datos seriales a través de un cable USB? USB ya es un bus serie.
Muchas placas de desarrollo falsifican un canal serie a través del USB, es 5gat
STM32 no usa RS232 o RS485, entonces, ¿cómo envía datos en serie? Perdona mi ignorancia, soy principiante. Olvídese de la situación de audio que describí, es solo un ejemplo para ayudar a mi comprensión, solo quiero aprender cómo se mueven los datos en la placa de desarrollo
Me refiero a datos en serie usando los protocolos RS-232 o RS-485
RS-232/485 no son protocolos, son niveles de línea en esos niveles que volaría la mcu. Definen los niveles de línea y las salidas de pines de los conectores. no protocolos. Un error muy común que cometen las personas al tratar de conectar los puntos entre el protocolo y los niveles de voltaje/distribución de pines del conector. Todavía tengo que ver una placa de desarrollo STM32 con conectores RS-232 o niveles de línea, en su lugar, usan el mcu de depuración como un puerto de comunicación virtual. y ese también es un término confuso/engañoso, puerto com.
para los tableros de núcleo más grandes la parte que está perforada para que si eliges puedas romperla. Eso es básicamente una placa de depuración stlink más algunas otras características. No todos, parece la mitad, pero algunos también proporcionan un puerto COM virtual a través de USB. Pero está en los niveles de 3,3 V, no RS-232C, entre la placa de depuración y el mcu de destino. También puede comprar, por ejemplo, un chip FTDI usb/serial (sus chips suelen ser multifunción, digamos un FT2232, por ejemplo), la placa de conexión usa un controlador de host (Linux lo configura de forma predeterminada de esta manera) como un uart, luego con cables de puente a uno de los otros uarts en el mcu de destino.
puede hacer lo mismo con un puerto usb uart/com virtual conectado a uno de los mcu uarts de destino, y el host a través de capas de ofuscación del sistema operativo lo verá como un puerto serial/uart que puede usar un programa de terminal tonto, minicom , teraterm, hyperterm, etc. para interactuar con el mcu. concedido tienes que programar el mcu.
otra pieza que falta aquí es que a pesar de que hay compatibilidad con stlink en ese mcu de depuración, hay otra característica y es que aparece como una unidad virtual extraíble/medios/thumb_drive y simplemente copia el archivo .bin de su imagen flash en esta unidad y el mcu de depuración usa SWD y restablece el control sobre la pieza para programar el flash en la pieza por usted, no necesita ingresar a través de un depurador sobre stlink y ejecutar una cierta cantidad de comandos.
Tengo MUCHAS placas nucleo STM32, todas tienen la unidad de memoria flash falsa y alguna versión de soporte stlink. Solo algunos proporcionan una interfaz serial/uart virtual al mcu de destino. En las placas más grandes como esta, puede tirar de los puentes SWD y con cables de puente usar el depurador para hablar con otras placas/chips, incluidos los cortex-ms que no son ST. Los más pequeños, la depuración y el objetivo están integrados en una placa y no puede hacer esto, esas señales están en la placa de circuito impreso y no en los pines externos. la cosa de copiar el archivo es anterior a mbed pero se convirtió en parte de cómo hacen las cosas. y es una característica muy agradable.
lo primero que hace cuando obtiene una placa nucleo es obtener la herramienta de actualización de firmware (java, por lo tanto, se ejecuta en diferentes sistemas operativos) y actualizar el firmware del depurador, no siempre se comporta bien en algunos sistemas, a veces puede programar la parte una vez y luego hay que desenchufar y volver a enchufar la placa.
@old_timer, gracias, mi comprensión aumenta con su aporte

Respuestas (1)

La interfaz serial es en realidad un puerto COM virtual que se comunica mediante la interfaz USB. Su microcontrolador no necesita convertir la entrada/salida en serie entre los niveles lógicos normales y los voltajes RS-232 más altos... las señales lógicas del UART van directamente a la interfaz USB. El software en la computadora host debe ser capaz de reconocer el puerto serie virtual y proporcionar el controlador adecuado, de modo que parezca un puerto serie antiguo para el software host.

Según el conector USB que se utilice, es posible que no se utilice ningún UART. Usar el que pasa por el depurador incorporado podría ser un valor predeterminado para los experimentos, pero sería menos común cuando creamos un producto de aplicación potencial que usa USB.
ahora entiendo, gracias
¿Puede crear un puerto com virtual usando la interfaz usb del microcontrolador?
¿Significa esto que la velocidad de la transferencia de datos no está limitada a 115 kb/s?
USB (más ampliamente que el perfil CDC que expone un puerto COM virtual) puede admitir velocidades de datos mucho más altas que 115 kbps... como 480 Mbps, pero debe escribir más software para obtener ese tipo de rendimiento. Dicho esto, incluso CDC puede obtener 2 Mbps si la MCU puede admitirlo, iirc. sony.com/electronics/support/articles/00024571
@A.Davies Está haciendo nuevas preguntas ahora, y las respuestas dependen de si está preguntando sobre un microcontrolador específico o sobre USB en general. Probablemente debería crear una nueva pregunta y proporcionar más detalles.
Está bien, haré eso.
definitivamente no es RS-232. Las placas nucleo, como la mayoría de las placas de desarrollo ST, tienen una interfaz de depuración (alguna otra parte ST) y el mcu de destino. los rx/tx (niveles ttl) están conectados entre la depuración y el mcu de destino en la placa, a veces a través de puentes de soldadura. La placa de depuración proporciona el puerto serial virtual en el lado usb a su uart físico que luego se conecta al mcu de destino para que lo que vea sea el mcu uart de destino en el host. Mira los esquemas.
signals from the UART go directly to the USB interfaceMe temo que está mal. Los datos recibidos por UART se transfieren al periférico USB a través del programa especial. Las señales UART no están conectadas a USB.
@P__J__: eso depende del conector utilizado. La placa que pregunta tiene un conector USB directo que probablemente no estén usando, y tiene un conector para un chip de depuración que tiene la capacidad de recopilar y transmitir las señales del uart real del chip de destino.
Por cierto, un puerto de comunicaciones virtual tiene una "tasa de baudios en serie" solo en el sentido de una sugerencia de configuración para cualquier UART que genere una señal en serie real. Si nunca se involucra un UART real, la velocidad de transmisión comandada no tiene sentido y se ignora, los datos fluirán tan rápido como se proporcionan y se pueden mover; podría ordenar 300 baudios y lograr un megabit.