Transferencia de datos desde el microcontrolador a la computadora [cerrado]

-2

Estoy buscando un buen enlace a los datos del microcontrolador a la computadora. No sé qué tipo de comunicaciones son adecuadas para mí.

Necesito un enlace que tenga una velocidad de bits de más de 50 Mbit / seg. y también debería ser lo suficientemente bueno como confiable.

Por otra parte, todavía no he elegido el uC. ¿Qué pasa con estas opciones?

1- (lado uC) USB a USB (lado PC)

2- (lado uC) SPI a USB (lado PC)

3- (lado uC) Ethernet a Ethernet (lado PC)

De hecho, los datos se reciben de un ADC de 16 canales con una velocidad de 100 K. Los datos se procesan en el uC y luego se envían continuamente a la PC.

    
pregunta KHK

2 respuestas

1

Poner 50Mbit en un enlace de Ethernet probablemente requerirá una de las juntas de clase de "computadora pequeña", e incluso entonces debe tener cuidado con otros cuellos de botella. Tengo un iMX53 aquí donde la velocidad de datos sostenida para el acceso de DRAM al azar es de solo 128Mbit.

¿No has dicho de dónde vienen los datos? Es posible que deba considerar una solución basada en FPGA con USB3, y eso está muy lejos de ser un proyecto para principiantes.

    
respondido por el pjc50
1

Cuando estás enviando esa cantidad de datos a través de un microcontrolador, seguramente querrás descargar tanto como puedas a DMA. Si la adquisición y transferencia de datos se puede hacer en trozos de, por ejemplo, Las muestras 256 o 512 reducen considerablemente la sobrecarga de la CPU.

Un UART está prácticamente fuera de discusión. Incluso las velocidades en baudios más rápidas que lograrán algunos microcontroladores es solo la mitad de la tasa de bits que necesita.

Ethernet es un buen punto de partida, pero aún quedan algunas decisiones por hacer. ¿La transferencia de datos debe ser sin pérdidas?

Si se permite cierta pérdida de datos, entonces se acepta el uso de UDP. UDP no requiere ningún intercambio, los pequeños cálculos de CRC y los marcos son casi tan sencillos de configurar como los de Ethernet "sin procesar".

A 100MHz + cortex m4 puede saturar su (¡interno!) controlador de Ethernet de 100MBits sin muchos problemas, si está bien diseñado.

Si necesitas una conexión TCP, las cosas se vuelven mucho más complicadas. Especialmente porque TCP puede requerir una gran cantidad de memoria intermedia si la conexión por cualquier motivo se detiene momentáneamente. Por esa razón, el rendimiento de TCP puede variar drásticamente dependiendo de la pila de software que use, pero desde mi experiencia, 50Mbits es mucho.

Podrías optar por USB2.0 480Mbit / s utilizando los microcontroladores a bordo del periférico. Sin embargo, las pilas USB son bastante complicadas para comenzar a trabajar y, si eres nuevo en eso, te aconsejaría en contra de esta solución.

Podría considerar el uso de un conjunto de chips USB 2.0 HS como el FT232HQ. La interfaz asíncrona 245 FIFO permite el reloj externo y las transferencias a través de un bus paralelo. La hoja de datos cita una velocidad de transferencia de hasta 8Mbytes / seg, lo que parece que es suficiente. Sin embargo, no sé qué tan fácil es lograrlo y configurarlo.

    
respondido por el Hans

Lea otras preguntas en las etiquetas