24 de diciembre de 2010

Programación y Desarrolladores. Entendiendo el estándar USB

USB en una cáscara de nuez

Parte 4

USB Protocolos

A diferencia de RS-232 y similares interfaces en serie, donde se envía el formato de datos no está definido, USB se compone de varias capas de protocolos. Aunque esto suena complicado, no te rindas ahora. Una vez usted entienda lo que está pasando, en realidad sólo tiene que preocuparse de las capas de nivel superior. De hecho la mayoría de circuitos integrados del controlador USB se encargará de la capa inferior, por lo que es casi invisible para el diseño final.

Cada transacción consiste en un USB

    • Token del paquete (encabezado la definición de lo que espera seguir), una
    • Facultativo de paquetes de datos, (que contiene la carga útil) y un
    • Estado del paquete (se utiliza para reconocer las transacciones y para proporcionar un medio de corrección de errores)

Como ya hemos discutido, USB es un bus de host céntrica. El host inicia todas las transacciones. El primer paquete, también llamado token es generado por el anfitrión para describir lo que sigue y si la transacción de datos será una lectura o escritura y lo que la dirección del dispositivo y el punto final es designado. El siguiente paquete es por lo general un paquete de datos lleva la carga útil y es seguido por un paquete de protocolo de enlace, la información si los datos o de la ficha fue recibida con éxito, o si el punto final está bloqueado o no disponible para aceptar los datos.

Los campos comunes de paquetes USB

Los datos sobre la USBus se transmite LSBit primero. USB paquetes constan de los siguientes campos,

    • Sync

      Todos los paquetes deben comenzar con un campo de sincronización. El campo de sincronización es de 8 bits de longitud a una velocidad baja y completa o 32 bits de alta velocidad y se utiliza para sincronizar el reloj del receptor con la del transmisor. Los dos últimos bits indican que los campos PID comienza.

    • PID

      PID es sinónimo de paquetes de identificación. Este campo se utiliza para identificar el tipo de paquete que se envía. La siguiente tabla muestra los valores posibles.

      Grupo
      PID Valor
      Identificador de Paquete

      Token
      0001
      FUERA Token

      1001
      En señal

      0101
      SOF Token

      1101
      CONFIGURACIÓN Token

      Datos
      0011
      DATA0

      1011
      DATA1

      0111
      DATA2

      1111
      MDATA

      Apretón de manos
      0010
      ACK Handshake

      1010
      NAK Handshake

      1110
      BLOQUEO apretón de manos

      0110
      Nyet (No hay respuesta todavía)

      Especial
      1100
      Preámbulo

      1100
      ERR

      1000
      Split

      0100
      Ping

      Hay 4 bits a la PID, sin embargo para asegurar que se recibe correctamente, el 4 bits se complementan y repetidas, por lo que una de 8 bits PID en total. El formato resultante se muestra a continuación.

      PID 0
      PID 1
      PID 2
      PID 3
      PNDI 0
      PNDI un
      PNDI 2
      PNDI 3

    • ADDR

      El campo de dirección especifica el dispositivo que el paquete se ha diseñado para. Ser 7 bits de longitud permite el 127 dispositivos a ser apoyada. Dirección 0 no es válida, ya que cualquier dispositivo que aún no se le asigna una dirección debe responder a los paquetes enviados a la dirección cero.

    • ENDP

      El campo de punto final se compone de 4 bits, permitiendo 16 puntos finales posibles. dispositivos de baja velocidad, sin embargo, sólo puede tener dos extremos adicionales en la parte superior de la tubería por defecto. (Máximo 4 puntos finales)

    • CRC

      Comprobaciones de redundancia cíclica se realizan en los datos de la carga útil del paquete. Todos los paquetes token de tener un poco CRC 5, mientras que los paquetes de datos tienen un poco CRC 16.

    • EOP

      Fin del paquete. Señalizados por un único cero de composición (SE0) durante aproximadamente 2 veces poco seguida por una J por el tiempo de 1 bit.

USB Tipos de paquetes

USB tiene cuatro tipos de paquetes diferentes. paquetes Token indicar el tipo de transacción a seguir, los paquetes de datos contienen la carga, los paquetes de apretón de manos se utilizan para el reconocimiento de datos o errores de información e inicio de los paquetes marco de indicar el inicio de un nuevo marco.

    • Los paquetes Token

      Hay tres tipos de paquetes de manera,

      • En - Informa el dispositivo USB que el anfitrión desea obtener información.
      • Fuera - Informa el dispositivo USB que el host desea enviar la información.
      • El programa de instalación - Se utiliza para iniciar la transferencia de control.

      Los paquetes Token debe cumplir con el siguiente formato,

      Sync
      PID
      ADDR
      ENDP
      CRC5
      EOP

    • Los paquetes de datos

      Hay dos tipos de paquetes de datos cada uno capaz de transmitir hasta 1024 bytes de datos.

      • DATA0
      • Datos1

      El modo de alta velocidad define otro conjunto de datos de las IDPs, DATA2 y MDATA.

      Los paquetes de datos tienen el formato siguiente,

      Sync
      PID
      Datos
      CRC16
      EOP

      • El tamaño máximo de carga de datos para dispositivos de baja velocidad es de 8 bytes.
      • El tamaño máximo de carga de datos para dispositivos de alta velocidad es de 1023 bytes.
      • El tamaño máximo de carga de datos para dispositivos de alta velocidad es de 1024 bytes.
      • Los datos deben ser enviados en múltiplos de bytes.
    • Apretón de manos paquetes

      Hay tres tipos de paquetes de protocolo de enlace que consisten simplemente en el PID

      • ACK - Reconocimiento de que el paquete ha sido recibido con éxito.
      • NAK - Los informes de que el dispositivo temporal no puede enviar o recibir datos. También se utiliza durante las operaciones de interrupción de informar a la acogida no hay datos para enviar.
      • BLOQUEO - El dispositivo tiene su en un estado que requiere la intervención del anfitrión.

      Apretón de manos paquetes tienen el siguiente formato,

      Sync
      PID
      EOP

    • Inicio de paquetes marco

      El paquete SOF que consiste en un marco poco número 11 es enviado por el host cada 1 ms ± 500ns en un autobús a toda velocidad o cada 125 mu.s ± 0,0625 mu.s en un bus de alta velocidad.

      Sync
      PID
      Número de fotograma
      CRC5
      EOP

Funciones USB

Cuando pensamos en un dispositivo USB, pensamos en un periférico USB, un dispositivo USB, pero podría significar un dispositivo transmisor-receptor USB que se usa en el sistema principal o periférico, un concentrador USB o Host de dispositivo controlador IC, o un dispositivo periférico USB. La norma por lo tanto hace referencia a las funciones de USB que se puede ver como los dispositivos USB que proporcionan una capacidad o función, como una impresora, una unidad Zip, escáner, módem u otro periférico.

Así que por ahora debemos saber el tipo de cosas que forman un paquete de USB. ¿No? Usted está olvidado cuántos bits forman un campo PID ya?Bueno, no se alarme demasiado. Afortunadamente la mayoría de funciones USB manejar el bajo nivel de protocolos USB hasta la capa de transacción (que vamos a cubrir el capítulo siguiente) en el silicio. La razón por la que cubrir esta información es más controladores de la función USB informe de errores, tales como PID error de codificación. Sin cubriendo brevemente esto, uno podría preguntarse ¿qué es un error de codificación PID? Si usted ha sugerido que los últimos cuatro bits de la PID no se corresponde con el inverso de los primeros cuatro bits, entonces estaría bien.

La mayoría de las funciones tendrá una serie de topes, típicamente de 8 bytes de longitud. Cada tampón pertenecerá a un extremo - ep0 EN, ep0 FUERA etc Digamos por ejemplo, el host envía una solicitud de descriptor del dispositivo. El hardware de función lee el paquete de instalación y determinar desde el campo de dirección si el paquete es para sí, y si es así va a copiar el contenido del paquete los siguientes datos en el búfer de punto final apropiada dictadas por el valor en el campo de punto final de la configuración simbólica . A continuación, enviar un paquete apretón de manos a reconocer la recepción de los bytes y generar una interrupción interna dentro de los semiconductores / micro-controlador para el extremo apropiado que significa que ha recibido un paquete. Esto normalmente se hace todo en hardware.

El software ahora recibe una interrupción, y debería leer el contenido del búfer de punto final y analizar la solicitud descriptor del dispositivo.

Criterios de valoración

Los extremos pueden ser descritos como fuentes o sumideros de datos. Cuando el autobús es el anfitrión céntrica, los extremos se producen al final del canal de comunicaciones en la función USB. En la capa de software, el controlador de dispositivo puede enviar un paquete a los dispositivos EP1 por ejemplo. Como los datos están fluyendo desde el host, que va a terminar en el EP1 tampón OUT. Su firmware entonces en su tiempo libre leer estos datos. Si quiere devolver los datos, la función no puede limitarse a escribir en el autobús, el autobús es controlado por el anfitrión. Por lo tanto, escribe datos en EP1 en que se encuentra en el búfer hasta el momento en el host envía un paquete en el punto final que solicita los datos. Los extremos también puede ser visto como la interfaz entre el hardware del dispositivo de la función y el firmware que se ejecuta en el dispositivo de la función.

Todos los dispositivos deben ser compatibles extremo cero. Este es el punto final que recibe todos los dispositivos de control y las solicitudes de estado durante la enumeración, y durante todo el período, mientras el dispositivo está en funcionamiento en el autobús.

Tuberías

Mientras que el dispositivo envía y recibe datos en una serie de criterios de valoración, el cliente transfiere software de datos a través de tuberías.Una tubería es una conexión lógica entre el host y el punto final (s). Pipes también tendrá un conjunto de parámetros asociados con ellos, tales como cuánto ancho de banda asignado, el tipo de transferencia (de Control, a granel, Iso o de interrupción) que utiliza, una dirección de flujo de datos y máximo de paquete / tamaños de búfer. Por ejemplo, el tubo por defecto es un tubo bidireccional integrado por cero en el punto final y el punto final a cero con un tipo de transferencia de control.

USB define dos tipos de tubos

  • Tubos de Stream no tienen definido el formato USB, que se puede enviar cualquier tipo de datos por un tubo de corriente y puede recuperar los datos por el otro extremo. Los flujos de datos de forma secuencial y tiene una dirección definida previamente, ya sea dentro o fuera. tubos de corriente apoyará isócrono e interrumpir la transferencia de tipos, a granel. tubos de flujo pueden ser controlados por el anfitrión o dispositivo.
  • Mensaje tuberías tienen un formato definido por USB. Son de acogida controlada, que se inició por una solicitud enviada desde el host. Los datos se transfieren en la dirección deseada, dictada por la solicitud. Por lo tanto las tuberías mensaje de permitir el flujo de datos en ambas direcciones pero sólo apoyará la transferencia de control.

Fuente: http://www.beyondlogic.org/usbnutshell/usb1.shtml

No hay comentarios:

Publicar un comentario