Aprendizaje USB del microcontrolador (5)

Configuración de transacción

¿Qué es una transacción de configuración? Hay un nuevo dispositivo USB conectado al host USB. Es imposible decir que no sabes quién eres. Solo deja que lo conectes. Es como cuando alguien va a tu casa y toca la puerta. Tengo que hacerlo pregunta: ¿Quién? ¡Evita que Lao Tse haga cosas! . . De manera similar, de hecho, lo que debe hacer la transacción de configuración es enviar una solicitud al dispositivo USB para obtener la descripción del dispositivo USB. Si la transacción es exitosa, la respuesta debe ser Transacción 0. El comportamiento específico es el siguiente:

  • El host envía un comando para decirle al esclavo que se trata de un paquete de configuración.
  • El host envía una instrucción para obtener la descripción del dispositivo USB y la instrucción contiene el valor de punto final correspondiente.
  • Una vez que el dispositivo USB recibe el comando, devuelve un paquete de confirmación para informar al host USB que se ha recibido el comando.

Cabe señalar que en el formato del paquete de configuración, se requiere verificación CRC. Normalmente, después de que se envía el paquete de configuración, si el dispositivo USB puede recibir completamente los datos, devolverá un ACK. De manera similar, si no se puede recibir por completo, no se devolverá ningún paquete de confirmación. Juzgue si se puede recibir por completo, principalmente en el paquete de datos, con la verificación CRC, juzgue el valor de verificación para la retroalimentación.

OUT transacción

El mecanismo principal de la transacción OUT, personalmente creo que el más importante es la verificación de los datos de salida. En esta transacción, el host USB enviará un paquete OUT y un paquete de datos al dispositivo esclavo USB. Para ser precisos, el paquete OUT se envía primero y se verifica la comunicación. Si hay un error o tiempo de espera, el paquete modificado será descartado. Si es correcto, se enviará el paquete de datos. El proceso principal para las transacciones OUT es el siguiente:

  • El dispositivo host USB envía un paquete OUT a la máquina esclava USB para indicar que esta transacción es una transacción OUT y para establecer un punto final de comunicación (el concepto de punto final se discutió anteriormente).
  • El host USB envía un paquete de datos al esclavo USB y la longitud de bytes de datos generales es de 8 bytes.
  • Una vez que el esclavo USB recibe todos los datos, debe devolver un paquete ACK al host para decirle al host que el esclavo lo ha recibido por completo.

En asuntos

De hecho, las transacciones IN y las transacciones OUT deben coincidir. Lo que hacen es en realidad lo contrario. Se entiende bien que las transacciones OUT son la salida de datos del host al esclavo, y las transacciones IN son la salida de datos del esclavo al anfitrión. Aunque se dice que se hace lo contrario, los pasos reales no son lo contrario.Cuando el host USB ejecuta la transacción, primero envía un paquete IN al esclavo USB, indicándole al esclavo que hay datos para enviarle, y luego retroalimentación del paquete ACK de oportunidad al anfitrión, dígale al anfitrión que puedo recibir sus datos. Si el paquete IN o los datos se envían incorrectamente, el host no revertirá el paquete de reconocimiento. Los pasos principales para las transacciones IN son los siguientes:

  • El host USB envía un paquete IN al esclavo USB, que se utiliza para especificar el punto final del esclavo USB y decirle al esclavo USB que hay datos para recibir.
  • El esclavo USB transmite el paquete de datos real al host USB. En términos generales, la longitud de los datos es de 8 bytes. Por supuesto, se enfatiza que la longitud de los datos no puede ser mayor que la longitud del límite del punto final.
  • El host USB devuelve un paquete ACK al esclavo USB, indicándole al esclavo que los datos se han recibido y son correctos.

Transacción de ping

La transacción de ping es diferente de la transacción anterior, solo existe en modo de alta velocidad. En el modo de baja velocidad o de velocidad completa, si hay un problema con el dispositivo esclavo USB que hace que el proceso de transmisión espere para siempre, el paquete OUT y los datos OUT transportados por la transacción OUT siempre estarán ocupados. y el modo de velocidad completa, el ancho de bytes en 64k, pero si está en modo de velocidad completa, puede llegar a 512K, lo que requiere una cantidad muy grande, por lo que hay una nueva transacción ----- Transacción de ping. Su función principal es, al igual que el ping de la red, primero verifique si puede pasar y si puede hacerlo antes de transmitir. Los pasos principales son los siguientes:

  • El host USB envía un paquete de SALIDA, lo que indica que es una transacción de SALIDA.
  • El host USB envía paquetes de datos al esclavo USB.
  • El esclavo USB devuelve el paquete NYET, lo que indica que el dispositivo USB puede aceptar datos del host USB.
  • El host USB envía un paquete de ping para verificar si el dispositivo USB puede aceptar datos.
  • El esclavo USB devuelve un paquete ACK al host USB y le dice al host USB que puede hacerlo.

Supongo que te gusta

Origin blog.csdn.net/qq_42312125/article/details/106738410
Recomendado
Clasificación