Please enable JavaScript.
Coggle requires JavaScript to display documents.
Transferencias USB (Las comunicaciones USB
se pueden dividir en:…
Transferencias USB
-
-
-
Pipes
-
-
Un pipe puede ser unidireccional (consistente en un solo endpoint) o bidireccional (consistente en 2 endpoints en sentidos opuestos)
Cada dispositivo tiene un Pipe de control default (Default Control Pipe) que usa el Endpoint 0 en ambos sentidos:
(IN-OUT)
-
Paquetes USB
:green_cross: Todos los paquetes USB son precedidos por un campo SYNC y después por un byte identificador de paquete (Packet Identifier, PID)
:green_cross: Los paquetes terminan con un Fin de Paquete (End-of-Packet, EOP)
:green_cross: El campo SYNC es una secuencia de pares KJ seguido por 2 K’s en las líneas de datos
:green_cross: El campo SYNC tiene la siguiente longitud:
:check: 8 bits para full/low-speed
:check:32 bits para high speed
:green_cross: El campo SYNC sirve como un marcador de inicio de paquete (Start of Packet, SOP), y es usado para sincronizar el transceptor del dispositivo con el del host.
:green_cross: El campo EOP varía dependiendo de la velocidad del bus:
:check: low/full-speed: consiste de un SE0 para dos bit times :check: high-speed: El bus está en SE0 cuando está inactivo, por lo que se usa otro método para el fin de paquete
:green_cross: Para high-speed, el transmisor induce un error de bit (bit stuff error) para indicar el fin de paquete. Así, si el estado de la línea antes de EOP es J, el transmisor enviará 8 paquetes de K.
:green_cross:La excepción es el SOF EOP en high-speed, en cuyo caso el EOP de high-speed es a 40 bits. Esto se hace para detectar una desconexión del bus.
:green_cross: El PID es el primer byte de datos válido enviado a través del bus, y codifica el tipo de paquete.
:green_cross: El PID puede estar seguido de 0 a 1024 bytes, dependiendo del tipo de paquete.
:green_cross: El byte PID es autoverificable; los 4 últimos bits son el complemento a 1 de los primeros 4.
Endpoint
Un endpoint es un buffer que almacena varios bytes. Es una porción de un dispositivo USB con una dirección única, que es la fuente o el destino de la información en un flujo de comunicación entre el host y el dispositivo.
La dirección de un endpoint consiste de un número 0 a 15 y una dirección:
IN (hacia el host), OUT (hacia el dispositivo)
Endpoints
-
Transacciones “OUT”
:check: Si el dispositivo tiene datos pendientes de enviar al host, se envían.
Transacciones “IN”
:check: Inician una transferencia de control
:check: Los dispositivos siempre las deben aceptar
-
-
Transacciones
Data
El transmisor envía un paquete de datos.
Para solicitudes IN, el dispositivo puede enviar un NAK o STALL, para indicar que no es posible servir el token recibido.
Handshake
El receptor puede enviar un ACK, NAK o STALL indicando el éxito o fallo en la transacción. Para solicitudes IN, el dispositivo puede enviar un NAK o STALL, para indicar que no es posible servir el token recibido.
Token
El host genera un paquete Token con una combinación dispositivo/endpoin.
El paquete Token puede ser:
:check:IN: El host solicita datos al disp/endp
:check:OUT: El host envía datos al disp/endp
:check:SETUP: El host transmite información de control al dispositivo.
-
Señales USB
Los dispositivos USB se conectan por cable de 4 hilos:
:check: VBUS
:check: GND
:check: D+
:check: D-
D+ y D- son un par trenzado para transferencia de datos en forma diferencial
Hay 4 posibles estados en la línea, mostrados en la siguiente tabla.
D+D-
0 0 Single-ended zero (SE0)
1 1 Single-ended one (SE1)
0 1 Low-speed J
1 0 Low-speed K
1 0 High-/Full-speed J
0 1 High-/Full-speed K
-Los datos se trasmiten usando NRZI (nonreturn-to-zero-inverted), a través de los estados J y K
-Un 1 se representa con un cambio de estado
-Un 0 se representa sin cambio de estado
-Se hace la sincronización mediante la inserción de cero, después de 6 1’s consecutivos (bit stuff)
-Nunca se debe ver una condición SE1 en el bus, excepto durante las transiciones entre los otros estados.
-