¿Cómo usar el USB para comunicar la PC con un dispositivo USB? [cerrado]

0

Como dije anteriormente, necesito aprender a crear una ruta de comunicación saludable entre una PC y un dispositivo USB.

Necesito alcanzar 120 MBytes / s (al menos) velocidad en baudios y ni siquiera tengo idea de qué tipo de placa debo usar para lograr eso.

Me han dicho que con la placa USB Cypress FX3 Ez puedo organizar las instalaciones del lado del dispositivo fácilmente, pero ¿qué pasa con el lado de la PC?

¿Tengo que escribir algunos programas de protocolo para usar el puerto USB como un puerto COM en un formato deseado? Si es así, ¿cómo lograrlo? Algunos dicen que puedo hacerlo a través de libusb en algunos linux. Pero no tengo experiencia en tales cosas, por lo que no significan mucho para mí en sentido práctico.

Necesito una luz de baliza, una guía, algo para seguir investigando. No pude encontrar mucho en la red.

¿Qué IDE debo usar? ¿Qué tipo de hardware necesito? ¿Algún software adicional debería usar? ¿Algún consejo hasta ahora? ¿Un libro? Algunos ejemplos de proyectos & notas de aplicación; códigos de ejemplo?

Gracias de antemano.

    
pregunta My name is name

2 respuestas

2

Después de un examen cruzado de las publicaciones de OP en otros sitios como lo sugiere Marcus Mueller, el problema original ahora se vuelve aparente como un problema X-Y. El OP se encarga de un proyecto universitario para construir un sistema de adquisición de datos para algún tipo de analizador de espectro para una señal de 40 MHz. Eligieron muestrear la señal a 120 Msmples / s con ADC de 12 bits y enviar este flujo de datos sin procesar a una PC moderna para su procesamiento. No está claro si el problema requiere un procesamiento en tiempo real, o el procesamiento en bloque puede estar bien. En cualquier caso, el sistema de adquisición de datos producirá un flujo de datos de 200 Mbytes / s. Este es un problema desafiante para una PC normal, para manejar este rey de la velocidad de datos. Es obvio que este tipo de ancho de banda no puede ser administrado por interfaces arcaicas como "puerto COM".

Además de las interfaces apenas manejables como extensor PCIe directo o algo como Thunderbolt o Ethernet de 10GB, el puerto USB 3.0 estándar debería ser capaz de manejar 200 MB / s de flujo. Por ejemplo, se informó que el controlador controlador de Cypress EZ-USB alcanzó una velocidad de transferencia masiva de aproximadamente 450 MB / s en el USB 3.0 interfaz genérica. Cypress ofrece una plataforma de desarrollo completa para el lado del dispositivo y un controlador de host de PC con ejemplos de aplicaciones. Una alternativa podría ser el FTDI FT600 / 601 bridge .

Por lo tanto, sugeriría la siguiente arquitectura de hardware para el proyecto, basada en Cypress como ejemplo. Un ADC de 12 bits debe ser administrado por un pequeño FPGA, que proporciona el Interfaz FIFO de Cypress Master además de controlar ADC y almacenar datos en el búfer de ping-pong. El FPGA administra interfaz FIFO del esclavo Cypress , y FX3 une el flujo de datos en la interfaz USB 3.0.

El lado del host utiliza el controlador estándar xHCI USB 3.0 con la pila de software predeterminada del SO, y usa el controlador Cypress para proporcionar el enlace al nivel de la aplicación.

La aplicación probablemente debería tener un búfer de recepción de ping-pong y reenviar los datos para su procesamiento, la Transformada de Fourier o cualquier otro. No está claro si las PC actuales pueden realizar el procesamiento de Fourier en tiempo real, por lo que el procesamiento puede recurrirse a un bloque de datos a la vez, y el procesamiento posterior crea brechas en el flujo de datos.

En mi opinión profesional, a la velocidad de datos objetivo, este proyecto necesitará desarrollo profesional de PCB de múltiples capas con chips ADC, FPGA y FX3 en una cadena, y un esfuerzo serio de software para optimizar / configurar el software host para lograr Velocidad de procesamiento de 200 Msps. Me abstendré de comentar sobre el tiempo de ingeniería que tomará este proyecto.

    
respondido por el Ale..chenski
0
  

Me han dicho que con la tarjeta Cypress FX3 Ez USB puedo organizar el   El lado del dispositivo se instala fácilmente, pero ¿qué hay del lado de la PC? ...   ¿Qué IDE debo usar? ¿Qué tipo de hardware necesito? Algo adicional   ¿Qué software debo usar?

Al parecer, te faltan bastantes capas de sistema del marco USB. Para comenzar, el USB es un protocolo complejo que involucra un motor de interfaz serial complicado, un paquete, etc. El FX3 se encuentra en el extremo del dispositivo de este enlace y proporciona todos los servicios de protocolo de bajo nivel.

En el lado del host (PC) de un enlace USB siempre hay un controlador USB muy complicado, un hardware que genera todas estas señales, solicitudes, transacciones y analiza las respuestas del bus. Se llama EHCI o xHCI - "mejorado" o "extendido" Interfaz de controlador de host.

Esta interfaz de host está administrada por un controlador de software considerable, que proporciona todo el control de transacciones y la administración de conexión / desconexión del puerto USB. Y cuando un dispositivo USB está conectado a un puerto, el sistema host carga un software adicional llamado "controlador de dispositivo".

Ahora, todos los dispositivos USB están organizados en clases de dispositivos, cada clase tiene una interfaz predefinida. Se hace para simplificar los niveles de transporte del protocolo de comunicación, por lo que se pueden usar algunos controladores universales de clase, todos escritos por profesionales de software, para que sean fáciles de usar a nivel de aplicación.

Por ejemplo, si un dispositivo USB (por ejemplo, basado en un chip FX) se configura como "clase de comunicación", el sistema cargará el controlador "COM" y el dispositivo aparecerá como puerto "COM" con algún número, por lo que Las aplicaciones como terminales pueden comunicarse de manera estándar.

En resumen, hay un largo camino desde tu punto original. Es posible que desee comenzar con " USB en un NutShell ".

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas