Sunteți pe pagina 1din 98

Universal Serial Bus

Genealoga y alcance

Genealoga

Enero de 1996, versin 1.0.

Septiembre de 1998, versin 1.1.

Velocidades de 1,5 (Low Speed) 12Mbps (Full Speed)


Mejora en la asignacin de ancho de banda a los dispositivos, a
travs de la incorporacin de nuevos tipos de transferencias.

Septiembre del 2000 versin 2.0

Velocidad 1,5 Mbps.


Intel, Compaq, NEC, y Microsoft

Velocidades de 1,5 (Low Speed), 12(Full Speed), o 480 Mbps (High


Speed)

Alcance:

Nuestro estudio se centrar en la versin 1.1, tratando de


introducir conceptos de 2.0.

Autor: Alejandro Furf

Principales metas propuestas

Expansin de perifricos sencilla

Deteccin automtica de un nuevo dispositivo


Conexin y desconexin sin reiniciar el equipo
Soporte plug & play.

Velocidades de transferencia de hasta 480 Mbits/seg.


a bajo costo.
Soporte a aplicaciones multimedia real time.
Integracin con dispositivos electrnicos (VCR, por
ejemplo), aumentando de esta manera las
capacidades de la PC.
Interfaz de software standard independiente del
dispositivo que se desee conectar.

Autor: Alejandro Furf

Arquitectura I
El
El Universal
Universal Serial
Serial Bus
Bus est
est organizado
organizado
como
como una
una estructura
estructura jerrquica,
jerrquica,
controlada
controlada por
por un
un dispositivo
dispositivo
denominado
denominado host
host controller
controller que
que reside
reside
en
en la
la PC.
PC.

HOST Tier 1

HOST
Hub root

Tier 2

Hub1

Func

Tier 3

Hub2
USB 1.1

Func
Func

Hub3 Hub4
Func

Hub5

Func
Func

Func

Tier 4
Tier 5
Tier 6
Tier 7

Hub6

Hub7

USB 2.0

Se
Se dispone
dispone adems
adems de
de
un
un dispositivo
dispositivo
denominado
denominado Hub,
Hub, en
en
el
el centro
centro de
de cada
cada
estrella,
estrella, logrndose
logrndose de
de
esta
esta forma
forma un
un
anidamiento
anidamiento multinivel
multinivel
que
que permite
permite la
la
expansin
expansin del
del bus,
bus,
conectndole
conectndole diversos
diversos
dispositivos.
dispositivos.

Func

Autor: Alejandro Furf

Arquitectura II
HOST
Hub root

Hub1

HOST Tier 1
Tier 2
Func

Tier 3

Hub2

Func
Func

Func

Hub3 Hub4
Func

Tier 4

Tier 5

Func

Hub5

Func

El
El Hub
Hub root
root es
es el
el elemento
elemento del
del
sistema
sistema que
que compone
compone el
el vrtice
vrtice
de
de la
la pirmide
pirmide jerrquica.
jerrquica. Por
Por lo
lo
tanto
tanto solo
solo hay
hay un
un Hub
Hub Root
Root en
en
el
el sistema.
sistema.
Tambin
Tambin se
se lo
lo conoce
conoce como
como Host
Host
Controller,
Controller, yy se
se compone
compone de
de
hardware
hardware firmware
firmware yy software,
software,
todo
todo instalado
instalado en
en la
la PC.
PC.
Tier 6

Tier 7

Hub6

Hub7

Func

Existen
Existen dos
dos standards
standards para
para implementar
implementar Host
Host Controllers:
Controllers: Open
Open Host
Host
Controller
Controller Interface
Interface (OHCI)
(OHCI) desarrollado
desarrollado por
por Compaq,
Compaq, yy Universal
Universal Host
Host
Controller
Controller Interface
Interface (UHCI)
(UHCI) de
de Intel.
Intel.

Autor: Alejandro Furf

Dispositivos USB I
El Hub es un dispositivo USB especial,
que extiende la cantidad de ports para
conectar dispositivos, convirtiendo un
punto de conexin simple, en mltiples
puntos de conexin. Por punto de
conexin entendemos port.

Funciones
Son dispositivos conectados al bus capaces de recibir y transmitir
informacin desde / hacia el Host Controller. Se denomina funcin
debido a que no necesariamente la correspondencia funcin dispositivo
es uno a uno.
Ejemplos de funciones en un Bus USB: Teclado, Mouse, lapiz ptico, una
impresora, un modem (analgico, o ISDN) etc.

Autor: Alejandro Furf

Dispositivos USB II
Es posible tener varias
funciones
implementadas dentro
de un dispositivo
conectado por un nico
cable a un port USB.
Estos son conocidos
como dispositivos
compuestos, y se
presentan al Host
Controller como un Hub
con mas de un
dispositivo no removible.
Autor: Alejandro Furf

Consideraciones adicionales

Alimentacin:Desde este punto de vista, los


dispositivos USB trabajan en dos modos:

self powered

Bus powered.

Velocidad:La especificacin 1.1 soporta dos tipos de


dispositivos:

Dispositivos USB low speed, (1.5 Mbits/seg.)


Dispositivos USB full speed, (12Mbits/seg).

Adems, garantiza la coexistencia de ambos tipos de


dispositivo en el bus de manera que no existan
desincronizaciones con los mismos.

Autor: Alejandro Furf

Flujo de datos: Modelo de


Implementacin

Autor: Alejandro Furf

Function Layer,
Layer es quien
provee la interfaz entre el
usuario y el dispositivo.
USB Device Layer es la
visin que tiene el
software del sistema para
realizar las operaciones
previstas con el
dispositivo USB.
USB BUS Interface
Layer es la capa del
modelo que resuelve la
comunicacin fsica, a
travs de sealizacin de
hardware y transmisin
de paquetes de
informacin, entre el Host
y el Dispositivo Fsico.
9

Modelo del USB Host

Autor: Alejandro Furf

10

Modelo del Dispositvo USB

Autor: Alejandro Furf

A nivel de la USB Bus Interface,


tenemos fuertes cambios de un
dispositivo al otro ya que se ocupa de
la interaccin con el Host Controller
remoto, a nivel de sealizacin y
transmisin fsica.
En el USB Logical Device, la
interfaz con el Host es bsicamente
la misma independientemente del
dispositivo. Se trabaja a nivel lgico.
Se dispone de un juego de funciones
de interaccin bsicas, que son
comunes a los diferentes dispositivos
USB a conectar al bus. Analizando el
contenido de dichas funciones se
pueden recin advertir las posibles
diferencias en el tratamiento a los
diferentes dispositivos
La Funcin es la capa que realiza la
funcin esperada por el Client SW
instalado en el Host.

11

Conexiones

Cada conexin es punto a punto y se lleva a cabo mediante un


cable separado. Dicho cable est compuesto de cuatro hilos.
Se pueden conectar hasta 127 nodos o dispositivos diferentes
al bus.

VBUS
VBUS ,, por
por su
su parte
parte transporta
transporta
5Vcc
5Vcc con
con respecto
respecto de
de la
la lnea
lnea
GND
GND que
que tiene
tiene la
la referencia
referencia
elctrica
elctrica de
de tierra
tierra del
del sistema.
sistema.

Autor: Alejandro Furf

La
La seal
seal se
se aplica
aplica en
en forma
forma
diferencial
diferencial entre
entre D+
D+ yy D-,
D-, de
de modo
modo
tal
tal que
que se
se establece
establece una
una
comunicacin
comunicacin Half
Half Duplex.
Duplex. Es
Es decir,
decir,
se
se transmite
transmite en
en un
un nico
nico sentido
sentido en
en
cada
cada momento.
momento.

12

Caractersticas Elctricas I
Entrada de un port de
Hub, y de un Dispositivo
USB Full-speed

Entrada de un port de
Hub, y de un Dispositivo
USB Low-speed

Significa que un port desconectado ve 15 K. En el momento de conectar un


dispositivo uno de los conductores del Bus queda a 1,5 K con respecto a una
fuente de entre 3V y 3,6V. La resistencia de Thevenin (que no incluye los 15 K),
no debe ser menor de 900 .
Estas condiciones elctricas establecen la forma en que se detectan las conexiones
y desconexiones de dispositivos al bus.

Autor: Alejandro Furf

14

Caractersticas Elctricas II

Sealizacin al desconectar
un dispositivo

Sealizacin al conectar
un dispositivo Full Speed

Autor: Alejandro Furf

15

Caractersticas Elctricas III


Sealizacin al conectar un
dispositivo Low Speed

Sealizacin al resetear
un dispositivo

Autor: Alejandro Furf

16

Caractersticas Elctricas IV
Niveles de Sealizacin
Estado del Bus

En el conector de
origen

En el conector destino
Requerido

Aceptable

1 Diferencial

D+ > VOH(min) y D- (D+) (D-) >


200 mV
< VOL (max)
D+ >VIH (min)

(D+) (D-) >


200 mV

0 Diferencial

D- > VOH(min) y D+ (D-) (D+) >


200 mV
< VOL (max)
D- >VIH (min)

(D-) (D+) >


200 mV

Single Ended 0 D+ y D- < VOL


(SE0)
(max)

D+ y D- < VIL
(max)

Estado Dato J
Low Speed
0 Diferencial
Full Speed
1 Diferencial

0 Diferencial
1 Diferencial

Estado Dato
K
Low Speed
Full Speed

1 Diferencial
0 Diferencial

Start of Packet

Autor: Alejandro Furf

1 Diferencial
0 Diferencial

D+ y D- < VIH
(min)

Las lneas de datos conmutan del estado Idle al estado


K

17

Caractersticas Elctricas V
Niveles de Sealizacin
Estado del Bus

En el conector de
origen

En el conector destino
Requerido

Aceptable

SE0 por el tiempo


de dos bits seguido
por un estado Dato
J por el tiempo de
un bit

SE0 por 1 bit


seguido por un
estado Dato J
de un bit

SE0 por 1 bit


seguido por un
estado Dato J

Idle
Low Speed
Full Speed

N.A.

D- > VIHZ (min) y


D+ <VIL (max)
D+ > VIHZ (min)
y D- <VIL (max)

D- > VIHZ (min) y


D+ <VIH (min)
D+ > VIHZ (min)
y D- <VIH (min)

Resume

Estado Dato K

Estado Dato K

Desconectado
(a un port
upstream)

N.A.

SE0 por 2.5 seg.

Conectado (a
un port
downstream)

N.A.

Idle 2 mseg.

Reset

D+ y D- <VOL (max) D+ y D- < VIL


(max) por 10
por 10 mseg.
mseg.

End of Packet
(EOP)

Autor: Alejandro Furf

Idle 2.5 seg.

D+ y D- < VIL
(max) pr 2.5
seg.

18

Caractersticas Elctricas VI

Sealizacin de Comienzo y Fin de Paquete

Autor: Alejandro Furf

19

Caractersticas Elctricas VII


USB emplea
codificacin de
datos NRZI.
Consiste en
representar los 1
mediante el no cambio de nivel y los 0 mediante cambios de nivel. Llevado a
trminos de estados, en NRZI pasa del estado J al K cada vez que aparece
un 0 en el stream de bits a transmitir.
Problema: Las strings largas de 1s no generan cambios de nivel y pueden
causar la prdida de sincronismo entre los dos dispositivos.
Para evitarlo se utiliza una
tcnica denominada bit
Stuffing (Relleno de bits),
que consiste en insertar un
0 cada seis 1 consecutivos.

Autor: Alejandro Furf

20

Flujo de Informacin en USB I


Se dispone de un flujo de comunicacin dedicado entre cada aplicacin y la
correspondiente Funcin en el dispositivo. As, una Funcin de un
dispositivo puede tener diferentes flujos de comunicaciones con diferentes
aplicaciones que la requieran .
En el dispositivo USB, el flujo de
comunicacin
termina
en
un
Endpoint
.Host
Controller
Driver: Interfacea al USB Host
Controller con el USB System
Software. Garantiza que el USB
System
Software,
pueda
interactuar con toda la variedad de
implementaciones de Hardware que
se pueda encontrar.
USB Driver (USBD): Interfacea al
USB System Software con la
aplicacin cliente (Client SW)
permitindoles a stas el manejo
del dispositivo USB

Autor: Alejandro Furf

21

Flujo de Informacin en USB II


Un dispositivo USB se presenta al sistema como una
coleccin de Endpoints. Estos Endpoints a su vez se
agrupan formando Interfaces. Las Interfaces son vistas
de las diferentes Funciones del dispositivo.

La comunicacin entre los extremos se realiza entre un


buffer del lado Host y un Endpoint del lado Dispositivo
USB. El Canal es un pipe.
Autor: Alejandro Furf

22

Endpoints I

Es la porcin identificable de un dispositivo USB que


representa el extremo en un flujo de comunicacin
entre el Host y dicho dispositivo.
Tiene un Nmero definido durante el diseo del
dispositivo que lo identifica unvocamente.
Transfiere informacin en una sola direccin.
Cada dispositivo USB tiene una cantidad de Endpoints
independientes entre s, y una direccin unvoca que
lo identifica en el sistema, que obtiene desde el Host
en el momento de su conexin al bus.
As es que, definidos la direccin del dispositivo USB,
el Nmero de Endpoint, y la Direccin del Flujo de
Datos, se determina el Endpoint del dispositivo con el
que se quiere establecer comunicacin.

Autor: Alejandro Furf

23

Endpoints II

Caractersticas de un Endpoint que deben ser


conocidas por el Software Cliente a fin de interactuar
con l de manera correcta:

Nmero de identificacin

Direccin de transferencia de datos

Tipo de transferencia que soporta.

Frecuencia o tiempo de demora en el acceso al bus.


Ancho de Banda requerido.
Comportamiento en el manejo de errores.
Tamao mximo del paquete de datos que puede
transaccionar.

Autor: Alejandro Furf

24

El Endpoint 0

Todos los dispositivos USB deben tener implementado


un mtodo de control default que utilice un par de
Endpoints (uno de entrada y otro de salida), para que
en el momento de su conexin al bus los pueda
inicializar el USB System Software en el Host.
Este mtodo se conoce como Default control Pipe,
y el par de Endpoints que lo compone levan el
Nmero cero.
El Default Control Pipe soporta las transferencias
de Control.
El Endpoint cero est siempre accesible ni bien el
dispositivo se conecta al bus, o se conecta a la fuente
de alimentacin, o es reseteado.

Autor: Alejandro Furf

25

Pipes I

Son entidades abstractas que relacionan un Endpoint del


dispositivo USB con el software del host. Son el canal de
comunicacin virtual mediante el cual se pueden
transferir datos entre un buffer de memoria en el host y
el Endpoint del dispositivo USB.

Pueden tener uno de dos modos mutuamente


excluyentes:

Stream: Transmiten datos sin una estructura USB definida y en


modo First-In First-Out. Siempre son unidireccionales.

Message: Transmiten datos con alguna estructura USB definida.


Se enva un requerimiento al dispositivo USB desde el host, el
que es seguido por una transferencia de datos en la direccin
adecuada. Finalmente se pasa a una fase de Estado. Este tipo de
pipes permite comunicaciones bidireccionales.

Autor: Alejandro Furf

26

Pipes II

Para cursar una transferencia un pipe requiere que se


defina:

Demanda del bus USB y ancho de banda requerido.


Tipo de transferencia
Caractersticas del Endpoint asociado en el dispositivo: direccin
de transferencia, tamao mximo del paquete de datos a
transmitir,etc.

El Cliente de Software que corre en el host enva


requerimientos al pipe a travs de I/O Request Paquets
(IRPs). El formato de estos depende del Sistema
Operativo. El Cliente de Software se entera de la
finalizacin de un IRP, cuando recibe un aviso de
finalizacin exitosa, o con error.

Si no existen IRPs pendientes el pipe est en estado idle.


Esto significa que su Endpoint asociado en el extremo del
dispositivo USB no ve en el bus transacciones dirigidas a
l. Alejandro Furf
Autor:
27

Frame de 1mseg.

Sin utilizar

Dispositivo 2 Endpoint 2

Dispositivo 2 Endpoint 2

Dispositivo 3 Endpoint 2

START OF FRAME
Dispositivo 1 Endpoint 3
Dispositivo 4 Endpoint 1

Sin utilizar

Dispositivo 6 Endpoint 2

Dispositivo 2 Endpoint 1

START OF FRAME
Dispositivo 1 Endpoint 3
Dispositivo 1 Endpoint 3

Organizacin de las Transferencias

Frame de 1mseg.

El Host Controller es el encargado de velar por que todas las transacciones se


lleven a cabo en el menor tiempo posible. Para ello divide el trfico en frames
de 1 mseg. Luego arma cada frame con las transacciones correspondientes a
las diferentes transferencias que se le solicitan desde las aplicaciones que se
estn ejecutando en el Host.

Autor: Alejandro Furf

28

Transacciones
Transferencia 1

Transferencia 2

Transaccin 1

Transaccin 2

Token

PID

Datos

Info. Adicional

Autor: Alejandro Furf

Transferencia 3

Transaccin 3

Handshake

CRC

Cada Transferencia
comprende una o mas
transacciones

Cada Transaccin contiene un


paquete Token, y puede contener
adicionalmente paquetes de
datos y Handshake

Cada paquete contiene un


PID y puede tener adems
informacin adicional y un
CRC

29

Paquetes I

Los paquetes se dividen en diversos campos. Algunos


son opcionales y otros obligatorios.

Campo SYNC: Todos los paquetes comienzan con un


campo SYNC. Genera la mxima frecuencia de transicin
entre estados de las lneas diferenciales que componen el
Bus. Aparece como un tren de transiciones JKJKJKJK en
su codificacin NRZI siguiente a un estado Idle. Sus
ltimos dos bits se toman como el fin del campo SYNC y
por inferencia se asume que a continuacin viene el campo
Token.
Los paquetes Token Data y Handshake se representarn en
formato no codificado. Sin embargo, no debe perderse de
vista que se trata de paquetes que se transmiten por el bus
con codificacin NRZI, y Bit Stuffing.

Autor: Alejandro Furf

30

Paquetes II

Campo PID (Packet Identifier):


Se compone de cuatro bits que identifican el tipo de paquete
en cuestin, seguido de cuatro bits de chequeo de errores de
Tx.
PID

Info. Adicional

CRC

Tiene por funcin identificar que tipo de paquete se est


cursando por el bus.
En el siguiente cuadro se muestran los diferentes valores que
puede tomar para cada tipo de paquete que viaja por el Bus.
Los valores corresponden a los 4 LSBs.

Autor: Alejandro Furf

31

Paquetes III
PID Type
Token

Data

PID Name PID[3:0]* Descripcin


OUT
0001B
Transaccin host-to-function. Lleva direccin +
nmero de endpoint
IN
1001B
Transaccin function-to-host. Lleva direccin +
nmero de endpoint
SOF
0101B
Marca de Start-of-Frame y nmero de frame
SETUP
1101B
Transaccin host-to-function para SETUP en un
Control Pipe. Lleva Direccin + nmero de
endpoint
DATA0
0011B
Paquete de datos para PID para

Handshake

DATA1
ACK

1011B
0010B

Paquete de datos para PID impar


El receptor acepta un paquete de datos libre de
error

NAK

1010B

STALL

1110B

El dispositivo Rx no puede aceptar datos o el


dispositivo Tx no puede enviar datos
El Endpoint se halte o no est soportado el
requerimiento a un control pipe.

PRE

1100B

Special

Autor: Alejandro Furf

Prembulo enviado por el Host. Habilita trfico


downstream en el bus para dispositivos lowspeed.

32

Paquetes IV
Formato

de los Paquetes TOKEN

IN / OUT / SETUP:

START OF FRAME:

Autor: Alejandro Furf

33

Paquetes V
Formato

DATA0 / DATA1:

Formato

de los Paquetes DATA

de los paquetes HANDSHAKE:

ACK: Indica que el paquete


fue recibido sin error, y que
puede enviar el siguiente.
NACK: Indica que el
paquete fue recibido sin
error, pero que por
condicin del extremo
receptor se debe
retransmitir el paquete (Ej:
Buffer Full).

Autor: Alejandro Furf

STALL: Indica que existe una


condicin de error en la
Funcin y el Endpoint est en
estado HALT. El Host no debe
retransmitir el Paquete.
Si el paquete tiene CRC
Incorrecto o error de bit
stuffing no se retorna
respuesta

34

Paquetes VI

Campo de Informacin Adicional:

Cuando las transacciones llevan como PID los cdigos IN, OUT, o SETUP,
es necesario especificar la direccin del port seleccionado as como su
nmero de Endpoint.
Tenemos 128 direcciones de port (Addr 0-6), y 16 Endpoints (Endp 03), para transacciones IN y otros 16 para transacciones OUT.
PID

Info. Adicional

CRC

Cada frame que se transmite por el bus tiene un paquete SOF


en el que se incluye un nmero de frame de 11 bits, que se
genera secuencialmente.
En los paquetes cuyo PID es DATA0 y DATA1, se puede tener
hasta 1023 bytes de datos.
Autor: Alejandro Furf
35

Paquetes VII
PID

Info. Adicional

CRC

Chequeos de Redundancia Cclica:


Controlan todos los campos no PID en los paquetes Token y Datos de
modo de asegurar su integridad.
El PID se autochequea al transmitir los bits en formato nativo y en
complemento a 1.
Se utiliza para los campos Token un algoritmo llamado CRC5 (ya que el
campo resultante es de 5 bits), que utiliza el siguiente polinomio:
G (X) = X5 + X2 + 1
Para los campos de datos se utiliza un algoritmo CRC16 (campo resultante
de 16 bits), que utiliza el siguiente polinomio:
G (X) = X16 + X15 + X2 + 1

Autor: Alejandro Furf

36

Tipos de Transferencias I

Cada tipo de transferencia determina caractersticas


importantes del flujo de informacin involucrado.
Entre otras contamos las siguientes:

Formato de datos impuesto por el USB.

Direccin del flujo de comunicaciones.

Restricciones en el tamao del paquete de datos a


transmitir.

Restricciones en el acceso al bus.

Restricciones en el tiempo de recuperacin de datos.


Secuencias de datos requeridas.

Manejo de errores.

Autor: Alejandro Furf

37

Tipos de Transferencias II

Transferencias de control:
Son comunicaciones por irrupcin, no peridicas, iniciadas
por el host, que se utilizan en operaciones de comando o
status.

Transferencias Iscronas:
Se trata de un tipo de comunicacin peridica y continua
entre el host y un dispositivo USB, utilizadas tpicamente en
aplicaciones en donde el tiempo de recuperacin de datos es
un factor relevante. No quiere decir que sea crtico el tiempo
de respuesta en cuanto a la velocidad de recuperacin de los
datos sino ms bien, en cuanto a la periodicidad de acceso a
stos.

Autor: Alejandro Furf

38

Tipos de Transferencias III

Transferencias de Interrupcin:
Son comunicaciones de baja frecuencia, para tamaos de
paquete de datos muy pequeos, y tiempo de recuperacin
de datos limitado.

Transferencias de volumen (bulk):


Son comunicaciones de grandes paquetes de datos por
irrupcin, no peridicas, utilizadas para transmitir datos que
pueden utilizar cualquier ancho de banda disponible y que
tambin pueden ser demorados hasta que el ancho de
banda requerido se encuentre disponible.

Autor: Alejandro Furf

39

Tipos de Transferencias IV
Tipo de Transferencia

Control

Bulk

Interrupcin

Iscrona

Uso tpico

Configuracin

Impresora,
scanner

Mouse, Teclado

Audio

Obligatoria

Si

No

No

No

Soportada por dispositivos Low


Si
Speed

No

Si

No

Correccin de errores

Si

Si

Si

No

Tipo de pipe

Message

Stream

Stream

Stream

Garantiza Velocidad de envo

No

No

Si

Si

Garantiza mnimo tiempo de


acceso a la informacin

No

No

Si

Si

Tamao de datos por Endpoint


(Full Speed)

8, 16, 32, 64
bytes

8, 16, 32, 64
bytes

1 a 64 bytes

hasta 1023 bytes

Tamao de datos por Endpoint


(Low Speed)

8 bytes

Ancho de banda reservado por


frame

10%

Autor: Alejandro Furf

No aplica
Ninguno

8 bytes

No aplica

90 % (ambas combinadas)

40

Formatos de Transacciones I
Transferencias de Volumen (Bulk):

Autor: Alejandro Furf

41

Formatos de Transacciones II
Transferencias de Volumen (Bulk):

Autor: Alejandro Furf

42

ormatos de Transacciones III


Transferencias de Control:

Autor: Alejandro Furf

43

Formatos de Transacciones IV
Transferencias de Control:

Autor: Alejandro Furf

44

Formatos de Transacciones V
Transferencias de Interrupcin:

Autor: Alejandro Furf

45

Formatos de Transacciones VI
Transferencias Iscronas:

Autor: Alejandro Furf

46

Formatos de Transacciones VII


Transacciones Consecutivas:

Autor: Alejandro Furf

47

Uso del Ancho de Banda I


Limites en las Transferencias de Control Full-speed
Protocol Overhead
(45 bytes)
DataPayload
1
2
4
8
16
32
64
Max.

Max Bandwidth
(bytes/second)
32000
62000
120000
224000
384000
608000
832000
1500000

(9 SYNC bytes, 9 PID bytes, 6 Endpoint + CRC bytes,


6CRC bytes, 8 Setup data bytes, and a 7-byte
interpacketdelay (EOP, etc.))
Frame
Max
Bytes
Bytes/Frame
Bandwidth
Transfers Remaining
Useful Data
per Transfer
3%
32
23
32
3%
31
43
62
3%
30
30
120
4%
28
16
224
4%
24
36
384
5%
19
37
608
7%
13
83
832
1500

Limites en las Transferencias de Control Low-speed


Protocol Overhead
(46 bytes)
DataPayload
1
2
4
8
Max.

Autor: Alejandro Furf

Max Bandwidth
(bytes/second)
3000
6000
12000
24000
187500

(PRE+ 9 SYNC bytes, 9 PID bytes, 6 Endpoint + CRC


bytes, 6CRC bytes, 8 Setup data bytes, and a 7-byte
interpacketdelay (EOP, etc.))
Frame
Max
Bytes
Bytes/Frame
Bandwidth
Transfers Remaining
Useful Data
per Transfer
25%
3
46
3
25%
3
43
6
26%
3
37
12
28%
3
25
24
187

48

Uso del Ancho de Banda II


Limites en las Transferencias Iscronas
Protocol Overhead
(9 bytes)
DataPayload
1
2
4
8
16
32
64
128
256
512
1023
Max.

Max
Bandwidth
(bytes/second)
150000
272000
460000
704000
960000
1152000
1280000
1280000
1280000
1024000
1023000
1500000

Autor: Alejandro Furf

(2 SYNC bytes, 2 PID bytes, 2 Endpoint + CRC bytes, 2


CRC bytes, and a 1-byte interpacketdelay
Frame
Max
Bytes
Bytes/Frame
Bandwidth
Transfers Remaining
Useful Data
per Transfer
1%
150
0
150
1%
136
4
272
1%
115
30
460
1%
88
5
704
2%
60
40
960
3%
36
24
1152
5%
20
40
1280
9%
10
130
1280
18%
5
175
1280
35%
2
458
1024
69%
1
468
1023
1500

49

Uso del Ancho de Banda III


Limites en las Transferencias de Interrupcin Full-speed
Protocol Overhead
(13 bytes)
DataPayload
1
2
4
8
16
32
64
Max.

Max
Bandwidth
(bytes/second)
107000
200000
352000
568000
816000
1056000
1216000
1500000

(3 SYNC bytes, 3 PID bytes, 2 Endpoint + CRC bytes, 2


CRC bytes, and a 3-byte interpacket delay)
Frame
Max
Bytes
Bytes/Frame
Bandwidth
Transfers Remaining
Useful Data
per Transfer
1%
107
2
107
1%
100
0
200
1%
88
4
352
1%
71
9
568
2%
51
21
816
3%
33
15
1056
5%
19
37
1216
1500

Limites en las Transferencias de Interrupcin Low-speed


Protocol Overhead
(3 SYNC bytes, 3 PID bytes, 2 Endpoint + CRC bytes, 2
(13 bytes)
CRC bytes, and a 3-byte interpacket delay)
Max
Frame
Max
Bytes
Bytes/Frame
DataPayload
Bandwidth
Bandwidth
Transfers Remaining
Useful Data
(bytes/second) per Transfer
1
13000
7%
13
5
13
2
24000
8%
12
7
24
4
44000
9%
11
0
44
8
64000
11%
8
19
64
Max.
187500
187

Autor: Alejandro Furf

50

Uso del Ancho de Banda IV


Limites en las Transferencias Bulk
Protocol Overhead
(3 SYNC bytes, 3 PID bytes, 2 Endpoint + CRC bytes, 2
(13 bytes)
CRC bytes, and a 3-byte interpacket delay)
Max
Frame
Max
Bytes
Bytes/Frame
DataPayload
Bandwidth
Bandwidth
Transfers Remaining
Useful Data
(bytes/second) per Transfer
1
107000
1%
107
2
107
2
200000
1%
100
0
200
4
352000
1%
88
4
352
8
568000
1%
71
9
568
16
816000
2%
51
21
816
32
1056000
3%
33
15
1056
64
1216000
5%
19
37
1216
Max.
1500000
1500

Autor: Alejandro Furf

51

Enumeracin
Antes

de comenzar a trabajar con un


dispositivo el Host debe averiguar sus
caractersticas (Tipos de transferencias,
cantidad de endpoints, etc.).

Una

vez obtenida esta informacin le asigna al


dispositivo un nmero de port lgico en el
Bus.

Este

proceso se denomina Enumeracin.

Autor: Alejandro Furf

52

Estados durante la Enumeracin


Attached

En la secuencia de
Enumeracin, el
dispositivo puede
tomar seis estados
posibles:

Attached
Suspended
Powered
Default
Addressed
Configured

Hub Reseteado
O Desconfigurado

Hub
Configurado

Actividad
en el Bus
Powered
Corte de
Alimentacin

Bus
Inactivo

Reset
Actividad
en el Bus
Default
Direccin
Asignada

Reset

Addressed

Dispositivo
Des
Configuraado

Bus
Inactivo

Suspended

Actividad
en el Bus
Bus
Inactivo

Suspended

Dispositivo
Configuraado

Configured

Actividad
en el Bus
Bus
Inactivo

Autor: Alejandro Furf

Suspended

Suspended

53

Pasos en la Enumeracin I

El usuario conecta el dispositivo a un port de un Hub


(Hub root o cualquier hub externo).

El dispositivo toma su estado inicial:Attached.


Attached
Si el Hub est operativo y no est siendo reseteado,
alimenta al dispositivo automticamente, si ste es Bus
Powered.
El dispositivo pasa al estado Powered.
Powered
Si el dispositivo es Self Powered al attacharse directamente
entra al estado Powered.
Powered

El Hub detecta al dispositivo.

Monitorea el estado elctrico del port, y si detecta que la


impedancia de entrada cae de 15 K a 1,5 K, registra el
evento para informar al host.
El dispositivo sigue en estado Powered
El hub no transmite nada al bus.

Autor: Alejandro Furf

54

Pasos en la Enumeracin II

El Host controller encuesta a los hubs para saber si


tienen eventos que reportar.

Cada Hub utiliza un pipe configurado para transferencias de


interrupcin para reportar eventos al Host controller.
Por medio de este pipe el host controller encuesta a los
Hubs (uno a la vez) para saber si alguno tuvo un evento
desde la ltima consulta, y en tal caso en cual de sus ports
se produjo el evento.
El Host enva al Hub por el pipe de interrupcin una
transferencia de Control que todos los hubs deben
entender: Get_Port_Status.
El Hub reponde este comando de acuerdo a lo establecido
en la especificacin.
El Host Controller accede a la informacin completa acera
del evento.

Autor: Alejandro Furf

55

Pasos en la Enumeracin III

El Hub resetea al dispositivo.

Leda la informacin del port attachado, el Host enva al


Hub el comando Set_Port_Feature.
En dicho comando utiliza la opcin que le permite solicitar
al hub el reset del port.
El Hub enva las lneas D+ y D- del port a la condicin de
Reset durante 10 mseg (atencin: el reset durar los
prximos 10 frames).

El Hub detecta la velocidad del dispositvo.

Examina las tensiones en ambos terminales D+ y D- en el


estado Idle. Segn cual tiene mayor tensin, el dispositivo
es High Speed o Low Speed.
Segn su diseo el Hub puede efectuar esta comprobacin
antes del Reset o inmediatamente despus del mismo.

Autor: Alejandro Furf

56

Pasos en la Enumeracin IV

El Host establece un path de seal entre el


dispositivo y el bus.

Enva al Hub el comando Get_Port_Status para verificar


que el dispositivo finaliz el reset.
Esta operacin se repite frame tras frame hasta que el Hub
conteste que el dispositivo ha sido reseteado. (Recordar
que el reset dura 10 frames)
Cuando esto ocurre, el dispositivo est en estado Default:
Default

Los registros del controlador estn en su estado default,


El controlador est listo para trabajar por el Endpoint 0,
Puede tomar no mas de 100 ma. del bus,
Contestar transacciones dirigidas a la direccin de port 0.

Autor: Alejandro Furf

57

Pasos en la Enumeracin V

El Host averigua el tamao mximo de paquete


soportado por el default control pipe.

Enva el requerimiento Get_Descriptor al Endpoint 0 de la


Direccin 0. Especificando en este comando que se refiere
al descriptor de dispositivo y que se requieren 8 bytes de
respuesta por parte del dispositivo.
El Host enumera solo un dispositivo a la vez, as que no hay
forma que otro dispositivo responda.
El tamao mximo del paquete est en el byte 8 del
Descriptor de Dispositivo. Por eso el Host solo lee sus ocho
primeros bytes.

Autor: Alejandro Furf

58

Pasos en la Enumeracin VI

El Host asigna una direccin.

Enva el requerimiento Set_Address, con la direccin que


le asigna al dispositivo.
El dispositivo lo lee, devuelve ACK, y almacena su
direccin.
Ahora est en el estado Addressed.
Addressed
La direccin asignada es vlida hasta que el dispositivo se
desconecte, apague, o resetee.

Autor: Alejandro Furf

59

Pasos en la Enumeracin VII

El Host lee las caractersticas del dispositivo.


Enva

El

el requerimiento Get_Descriptor

Endpoint 0 del dispositivo.


Direccin de port: la que termina de asignar
Descriptor de dispositivo.

dispositivo devuelve su Device Descriptor.


Contiene la cantidad de configuraciones, interfaces, y endpoints que el
dispositivo tiene definidos.
Los detalles de estos elementos se encuentran en los respectivos
descriptores almacenados en el dispositivo.

Por

cada configuracin informada, el host controller enva un


Get_Descriptor al dispositivo

El

Port y Endpoint, dem anterior


Descriptor de Configuracin.

dispositivo responde el requerimiento.


Descriptor de la configuracin requerida
Descriptores de interfaz que dependen de esta configuracin
Descriptores de endpoint que dependen de cada interfaz
Descriptores de string si los hubiera

Autor: Alejandro Furf

60

Pasos en la Enumeracin VIII

El Host carga un Device Driver.

En base a la informacin de Vendor ID, Product ID, Release


number, e informacin de clase ledos del Device Descriptor
por el driver de Bus USB, el Sistema Operativo carga el
Device Driver mas apropiado para el dispositivo.
En el caso de entornos Windows, se usa adems la
informacin de los archivos de Sistema .INF.

El Device Driver del dispositivo selecciona una


configuracin.

Comando Set_Configuration.
El dispositivo est ahora en el estado Configured.
Configured
El dispositivo est listo para ser utilizado.

Autor: Alejandro Furf

61

Descriptor de Dispositivo
Offset Campo

Tamao Valor

0 bLength
1 bDescriptorType
2 bcdUSB

4 bDeviceClass

5 bDeviceSubClass

6 bDeviceProtocol

7
8
10
12
14
15
16
17

bMaxPacketSize0
idVendor
idProduct
bcdDevice
iManufacturer
iProduct
iSerialNumber
bNumConfigurations

Autor: Alejandro Furf

Descripcin

1 Number Tamao del Descriptor en Bytes


1 Constant Tipo de Descriptor DEVICE
2 BCD
Nmero de versin de la Especificacin USB en Binario Codificado Decimal (ej., 1.10 es 110H).
Este campo identifica el release de la Especificacin USB con la cual son compatibles el
dispositivo y sus descriptores.
1 Class
Class c ode (asignado por el USB). Si este c ampo vale 00H, cada interfaz dentro de
una c onfigurac in especific ar su propia informac in de c lase y todas trabajarn
independientemente Si este c ampo tiene un valor entre 1 y FEH, signific a que el
dispositivo soporta diferentes espec ificac iones de c lase sobre diferentes interfac es
y stas pueden no operar independientemente. Este valor identific a la definicin de
c lase usada por las interfac es
agregadas. (Por ejemplo, un CD-ROM con interfaces de audio y datos digitales
que requieren c ontrol de transporte para ejec tar el CD o comenzar a hacerlos
girar).
Si este c ampo vale FFH, la c lase del dispositivo es vendor-specific
1 Subclass Subclass code (asignado por el USB). Este cdigo se evala de acuerdo al valor
del c ampo bDevic eClass. Si el campo bDeviceClass es c ero, este c ampo tambin
debe ser c ero. Si el c ampo bDevic eClass no vale FFH, todos los valores se
reservan para ser asignados por el USB.
1 Protocol Protocol code (asignado por el USB). Estos cdigos se evalan de acuerdo con el valor de los
campos bDeviceClass ybDeviceSubClass. Si un dispositivo soporta protocolos de clase
especficos sobre la base de dispositivo y no de interfaz, este cdigo identifica el protocolo que
utiliza el dispositivo tal como se lo define en la especificacin de clase de ese dispositivo. Si
este campo vale cero, el dispositivo no utiliza protocolos especficos de clase. Sin embargo
puede utilizar protocolos especficos de clase sobre la base de interfaces. Si este campo vale
FFH, el dispositivo usa un protocolo vendor-specific basado en el dispositivo.
1 Number Tamao mximo de paquete para endpoint 0 (valores vlidos solo 8, 16, 32, o 64)
2 ID
Vendor ID (asignados por el USB)
2 ID
Product ID (asignados por el fabricante)
2 BCD
Nmero de versin del Dispositivo en Binario Codificado Decimal
1 Index
Indice de descriptor de string que describe al fabricante
1 Index
Indice de descriptor de string que describe al producto
1 Index
Indice al descriptor de string que describe el nmero de serie del dispositivo
1 Number Nmero de configurationes posibles

62

Descriptor de Dispositivo
/*SINGLE HID INTERFACE*/
const byte DEV_DESC[]={DEV_LENGTH,/*length of this desc.
DEVICE,
/*DEVICE descriptor
0x00,0x01, /*spec rev level (BCD)
0x00,
/*device class
0x00,
/*device subclass
0x00,
/*device protocol
0x08,
/*max packet size
0x00,0x04, /*National's vendor ID
0x5B,0xC3, /*National's product ID
0x41,0x01, /*National's revision ID
MFG_STR_OFS,/*index of manuf. string
PID_STR_OFS,/*index of prod. string
0,
/*index of ser. # string
0x01
/*number of configs.
};

Autor: Alejandro Furf

*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/

63

Descriptor de Configuracin
Offset Campo
0 bLength
1 bDescriptorType
2 wTotalLength

4 bNumInterfaces
5 bConfigurationValue
6 iConfiguration
7 bmAttributes

8 MaxPower

Tamao Valor

Descripcin

1 Number Tamao del Descriptor en Bytes


1 Constant Tipo de Descriptor CONFIGURATION
2 Number Longitud total de los datos retornados para esta configuracin. Incluye la longitud combinada de
todos los descriptores de configuracin, interfaz, endpoint, y especficos de clase o fabricante
retornados para esta configuracin.
1 Number Nmeo de interfaces soportadas por esta configurac in
1 Number Valor a utilizar c omo argumento en el requerimiento SetConfiguration() para
selec cionar esta configurac in
1 Index
Indice al descriptor de string que describe esta configuracin
1 Bitmap
Caractersticas de la configuracin :
D7: Reservado (debe estar en 1)
D6: Self-powered
D5: Remote Wakeup
D4...0: Reservados (deben estar en 0)
D7 est reservado y debe estar en 1 por razones histricas. Para indicar la cantidad de mA
requeridos, una configuracin de dispositivo que utiliza alimentacin del Bus y una fuente local,
reporta un valor distinto de cero en MaxPower y setea D6. La fuente de alimentacin actual en
tiempo de ejecucin se determina mediante el requerimiento GetStatus (DEVICE). Si una
configuracin de dispositivo soporta remote wakeup, D5 se pone en 1.
1 mA

Autor: Alejandro Furf

Mximo consumo de alimentacin desde el Bus para esta configuracin especfica, del dispositivo
USB cuando se encuentra completamente operacional. Se expresa en unidades de 2mA (p.ej., 50
= 100mA).
Nota: La configuracin de un dispositivo indica si esa configuracin es bus- powered o
selfpowered. El estado del dispositivo reporta si ste est actualmente self-powered. Si un
dispositivo se desconecta de su fuente de alimentacin externa, actualiza su estado de dispositivo
para indicar que ya no est self-powered. Un dispositivo no puede incrementar su toma de
alimentacin del bus, cuando pierde su alimentacin externa, mas all de la cantidad reportada
por esta configuracin.
Si un dispositivo puede continuar operando cuando se desconecta de su fuente de alimentacin
externa, continuar hacindolo, caso contrario cesa su operacin. El USB System Software puede
determinar la causa de la falla chequeando el estado y detectando la prdida de alimentacin del
dispositivo.

64

Interface Descriptor
Offset Campo

Tamao Valor

Descripcin

0 bLength

1 Number

1 bDescriptorType
2 bInterfaceNumber

1 Constant Tipo de Descriptor INTERFACE


1 Number Nmero de interfaz. Valor base cero que identifica el dice en un array de interfaces
concurrentes soportadas por esta configuracin

3 bAlternateSetting

1 Number

Valor utilizado para selec cionar ajustes alternativos para la interfaz


identificadas en el campo previo.

4 bNumEndpoints

1 Number

5 bInterfaceClass

1 Class

Nmero de endpoints utilizado por esta interfaz (exc luyendo el endpoint


c ero). Si este valor es c ero, esta interfaz solo utiliza el Default Control
Pipe.
Cdigo de clase (asignado por el USB).
El valor cero se reserva para futura estandarizacin.
Si este campo se pone en FFh, la clase de esta interfaz es "vendor-specific".
El resto de los valores est reservado para su asignacin por el USB.

6 bInterfaceSubClass

1 SubClass El Cdigo de Subclase (asignado por el USB). Estos cdigos son clasificados por el
valor de campo bInterfaceClass.
Si el campo bInterfaceClass es 0, este campo tambin debe estar en 0.
Si el campo bInterfaceClassno es FFh, todos los valores se reservan para su
asignacin por el USB.

7 bInterfaceProtocol

1 Protocol

Cdigo de Protocolo (asignado por el USB). Estos cdigos se clasifican de acuerdo


con el valore de los campos bInterfaceClass y bInterfaceSubClass. Si una interfaz
soporta requerimientos "class-specific", este cdigo identifica los protocolos que
usa el dispositivo de acuerdo con lo definido en la especificacin de clase a la que
pertenece el dispositivo.
Si este campo se pone en 0, el dispositivo no utiliza un protocolo "class-specific" en
esta interfaz.
Si este campo se pone en FFh, el dispositivo utiliza un protocolo "vendor-specific"
para esta interfaz.

8 iInterface

1 Index

Indice al descriptor de string que describe esta interfaz.

Autor: Alejandro Furf

Tamao del Descriptor en Bytes

65

Descriptor de Endpoint
Offset

Campo

Tamao

Valor

Descripcin

0 bLength
1 bDescriptorType
2 bEndpointAddress

1 Number
1 Constant
1 Endpoint

Tamao del Descriptor en Bytes


Tipo de Descriptor ENDPOINT
Direccin del endpoint en el dispositivo USB. Se codifica como sigue:
Bit 3...0: Nmero de endpoint
Bit 6...4: Reservados, se ponen en 0
Bit 7: Direccin de las transferencias( se ignora para endpoints de control )
0 = OUT endpoint
1 = IN endpoint

3 bmAttributes

1 Bitmap

Este campo desc ribe los atributos del endpoint cuando lo c onfigur utilizando el valor
bConfigurationValue.
Bit 10: Tipo de transferencia:
00 = Control
01 = Isoc hronous
10 = Bulk
11 = Interrupt
El resto de los bits estn reservados.

4 wMaxPacketSize

2 Number

6 bInterval

1 Number

Es el mximo tamao de paquete que este endpoint es capaz de enviar o recibir


c uando se selec c iona esta configurac in.
Para endpoints isc ronos, este valor se utiliza para reservar tiempo de bus en el
schedule, requerido para los payloads de datos de c ada frame. El pipe puede sobre
la marc ha, utilizar menos anc ho de banda que el reservado. Si es nec esario, el
dispositivo reporta el ancho de banda actual en uso por medio de sus propios
mec anismos normales no definidos por USB.
Para endpoints de interrupc in, bulk, y c ontrol, se pueden enviar payloads de datos
mas pequeos, pero esto terminar la transferenc ia y podr o no requirirse
intervenc in para rec omenzarla.
Intervalo para polling al endpoint en espera de transferencias de datos. Expresado en
milisegundos. Este campo se ignora para endpoints bulk y control. Para endpoints iscronos este
campo debe estar en 1. Para endpoints de interrupcin, este campo puede valer desde 1 a 255.

Autor: Alejandro Furf

66

Descriptores de Configuracin,
Interfaz y Endpoint. Ejemplos
const byte CFG_DESC[] = {CFG_LENGTH,
CONFIGURATION,
0x22,0x00,
0x01,
0x01,
CFG_STR_OFS,
ATTRIBUTES,
50,
INT_LENGTH,
INTERFACE,
0x00,
0x00,
0x01,
HIDCLASS,
NOSUBCLASS,
0x00,
INT_STR_OFS,

/*length of this desc.


*/
/*CONFIGURATION descriptor*/
/*total length returned
*/
/*number of interfaces
*/
/*number of this config
*/
/*index of config. string */
/*attr.: bus powered
*/
/*max power (100 mA)
*/
/*length of this desc.
/*INTERFACE descriptor
/*interface number
/*alternate setting
/*# of (non 0) endpoints
/*interface class
/*interface subclass
/*interface protocol
/*index of intf. string

*/
*/
*/
*/
*/
*/
*/
*/
*/

HID_LENGTH,
/*length of this desc.
*/
HID,
/*HID descriptor
*/
0x00,0x01,
/*HID spec rev level (BCD)*/
0x00,
/*target country
*/
1,
/*# HID class desc follow.*/
HIDREPORT,
/*report descr. type
*/
RPT_DESC_SIZE,0x00, /*report descr. length
*/
END_LENGTH,
ENDPOINT,
0x85,
0x03,
0x40,0x00,
0xFF};

Autor: Alejandro Furf

/*length of this desc.


/*ENDPOINT descriptor
/*address (IN)
/*attributes (INTERRUPT)
/*max packet size (64)
/*interval (ms)

*/
*/
*/
*/
*/
*/

67

Descriptor de String
Offset Campo
0
1
2
..
N

bLength
bDescriptorType
wLANGID[0]

wLANGID[x]

Autor: Alejandro Furf

Tamao Valor
1
1
2

N+2
Constant
Constant
.

Descripcin
Tamao del Descriptor en Bytes
Tipo de Descriptor STRING
Cdigo de LANGID Cero
.
Cdigo de LANGID x

68

Descriptores de String. Ejemplos


const byte STR_DATA[] = {4,3,9,4
/*LANGID array (English) */
/*[004] MFG_STR --> "National Semiconductor Corporation" -------------*/
, 70,3, 78,0, 97,0,116,0,105,0,111,0,110,0, 97,0,108,0, 32,0, 83,0
,101,0,109,0,105,0, 99,0,111,0,110,0,100,0,117,0, 99,0,116,0,111,0
,114,0, 32,0, 67,0,111,0,114,0,112,0,111,0,114,0, 97,0,116,0,105,0
,111,0,110,0
/*[074] PID_STR --> "USBN9603 HID Evaluation" ------------------------*/
, 48,3, 85,0, 83,0, 66,0, 78,0, 57,0, 54,0, 48,0, 51,0, 32,0, 72,0
, 73,0, 68,0, 32,0, 69,0,118,0, 97,0,108,0,117,0, 97,0,116,0,105,0
,111,0,110,0
/*[122] NBR_STR --> "Jim Lyle" ---------------------------------------*/
, 18,3, 74,0,105,0,109,0, 32,0, 76,0,121,0,108,0,101,0
/*[140] CFG_STR --> "Standard Configuration" -------------------------*/
, 46,3, 83,0,116,0, 97,0,110,0,100,0, 97,0,114,0,100,0, 32,0, 67,0
,111,0,110,0,102,0,105,0,103,0,117,0,114,0, 97,0,116,0,105,0,111,0
,110,0
/*[186] INT_STR --> "HID JOYSTICK Interface" -------------------------*/
, 46,3, 72,0, 73,0, 68,0, 32,0, 74,0, 79,0, 89,0, 83,0, 84,0, 73,0
, 67,0, 75,0, 32,0, 73,0,110,0,116,0,101,0,114,0,102,0, 97,0, 99,0
,101,0
};
/*end of STR_DATA
*/
#define MFG_STR_OFS
4
#define PID_STR_OFS 74
#define NBR_STR_OFS 122
#define CFG_STR_OFS 140
#define INT_STR_OFS 186

Autor: Alejandro Furf

69

Datos para un requerimiento SETUP


Offset

Campo

Tamao Valor

0 bmRequestType

1 Bitmap

6 wLength

2 Count

Descripcin

Characteristics of request:
D7: Data transfer direction
Formato de wIndex cuando se especifica un Endpoint
0 = Host-to-device
Formato de wIndex cuando se especifica un Endpoint
D7
D6
D5
D4
D3
D2
D1
D0
1 = Device-to-host
D7
D6
D5
D4
D3
D2
D1
D0
Especifica las caractersticas del
Direccin Reservada (Reset a cero)
Nmero de Endpoint
Direccin Reservada (Reset a cero)
Nmero de Endpoint
D6...5:
Type
D15
D14
D13
D12
D11
D10
D9
D8
requerimiento especfico que se va
D15
D14
D13
D12
D11
D10
D9
D8
0 = Standard
Reservada (Reset a cero)
a enviar
Reservada (Reset a cero)
1 = Class
Formato de wIndex cuando se especifica una Interfaz
2 = Vendor
Formato de wIndex cuando se especifica una Interfaz
Especifica al requerimiento especfico
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
3
=
Reserved
N de Interfaz
que se va a enviar
N de Interfaz
D4...0: Recipient
D15
D14
D13
D12
D11
D10
D9
D8
(ver siguiente slide)
D15
D14
D13
D12
D11
D10
D9
D8
Reservada (Reset a cero)
0
=
Device
Reservada (Reset a cero)
1 = Interface
2 = Endpoint
3 = Other
4...31 = Reserved
1 bRequest
1 Value
Specific request (Ver hoja "Standard Device Requests")
2 wValue
2 Value
Word-sized field that varies according to request
4 wIndex
2 Index or Offset Word-sized field that varies according to request;
typically used to pass an index or offset

Autor: Alejandro Furf

Number of bytes to transfer if there is a Data stage

Especifica la cantidad de bytes qu se


transmitirn en en la segunda fase de datos. La
direccin de la transaccin la especifica el bit D7
de bmRequest

70

Requerimientos Standard
wIndex wLength Data
Zero
Zero
None
Interface
Endpoint
Zero
One
Configuration
Value
Descriptor Type Zero or Descript
Descriptor
and Descriptor Language
or
Index
ID
Length
Zero
Interface
One
Alternate Interface

bmRequestType bRequest
wValue
00000000B
CLEAR_FEATURE
Feature
00000001B
Selector
00000010B
10000000B
GET_CONFIGURATION
Zero
10000000B

GET_DESCRIPTOR

10000001B

GET_INTERFACE

10000000B
10000001B
10000010B
00000000B
00000000B

GET_STATUS

00000000B

SET_DESCRIPTOR

00000000B
00000001B
00000010B
00000001B

SET_FEATURE

10000010B

SYNCH_FRAME

SET_ADDRESS
SET_CONFIGURATION

SET_INTERFACE

Autor: Alejandro Furf

Zero

Zero
Two
Device, Interface,
Interface
or Endpoint Status
Endpoint
Device Address
Zero
Zero
None
Configuration
Zero
Zero
None
Value
Descriptor Type Zero or Descript
Descriptor
and Descriptor Language
or
Index
ID
Length
Feature
Zero
Zero
None
Selector
Interface
Endpoint
Alternate
Interface
Zero
None
Setting
Zero
Endpoint
Two
Frame Number

71

Cdigos para Requerimientos y


Tipos Standard
bRequest
Valor
GET_STATUS
0
CLEAR_FEATURE
1
Reservado para uso Futuro
2
SET_FEATURE
3
Reservado para uso Futuro
4
SET_ADDRESS
5
GET_DESCRIPTOR
6
SET_DESCRIPTOR
7
GET_CONFIGURATION
8
SET_CONFIGURATION
9
GET_INTERFACE
10
SET_INTERFACE
11
SYNCH_FRAME
12

Tipo de Descriptor
DEVICE
CONFIGURATION
STRING
INTERFACE
ENDPOINT

Tipo de Descriptor
Receptor Valor
DEVICE_REMOTE_WAKEUP Device
ENDPOINT_HALT
Endpoint

Autor: Alejandro Furf

Valor
1
2
3
4
5

1
0

72

Comando Get descriptor


Quien sos?
Setup stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

SETUP
SETUP
0x
0xB4
B4

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
C3

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x0DD
0x0DD
ADDR
ADDR
0x00
0x00

CRC5
CRC5
0x15
0x15
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x08
0x08

DATA
DATA
80
80 06
06 00
00 01
01 00
00 00
00 40
40 00
00

Device

EOP
EOP
001
001
CRC16
CRC16
0xBB29
0xBB29

EOP
EOP
001
001

EOP
EOP
001
001

73

Start Of Frame
...se genera cada 1 mseg.
Setup stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0xA5
0x
0xA5
A5

Frame#
Frame#
0x0DD
0x0DD

CRC5
CRC5
0x15
0x15

EOP
EOP
001
001

Sync

SETUP

ADDR

ENDP

CRC5

EOP

00000001

0xB4

0x00

0x0

0x08

001

Sync

DATA0

00000001

0xC3

DATA

Device

End
End of
of Packet
Packet (D+
(D+ and
and DD- bajas)
bajas)

CRC16

EOP

80 06 00 01 00 00 40 00 55 bit
001
Checksum
sobre
bit0xBB29
Checksum
sobre Frame#
Frame#

Sync

ACK

EOP

00000001

0x4B

001

Nmero
Nmero de
de Frame
Frame (0
(0 -- 2047)
2047) cclico
cclico

Start
Start of
of Frame
Frame ((uno
uno por
por milisegundo)
milisegundo)
Packet
Packet start
start indica
indica llegando
llegando paquete
paquete al
al transceiver
transceiver

Autor: Alejandro Furfaro

74

Paquetes Setup
Se decodifican los Paquetes Setup completos y se
generan las interrupciones
Setup stage
USB
Sync

SOF

Frame#

CRC5

EOP

00000001

0xA5

0x0DD

0x15

001

Sync
Sync
00000001
00000001

SETUP
SETUP
0xB4
0x
0xB4
B4

Sync

DATA0

00000001

0xC3

ADDR
ADDR
0x00
0x00

ENDP
ENDP
0x0
0x0
DATA

Sync

ACK

EOP

00000001

0x4B

001

CRC5
CRC5
0x08
0x08

EOP
EOP
001
001
CRC16

Device
EOP

80 06 00 01 00 00 40 00
0xBB29
001
Endpoint
Endpoint 00 ((usado
usado para
para configuracin
configuracin))
Addr
Addr 00 (define
(define direc
direc.. para
para cada
cada nuevo
nuevo disp.
disp. attachado
attachado))
Setup
Setup Packet
Packet ((comienza
comienza transf.
transf. de
de control)
control)

Autor: Alejandro Furfaro

75

Paquete Data
El Paquete Data define que clase de transferencia
setup se inicia
Setup stage
Sync

SETUP

ADDR

ENDP

CRC5

EOP

00000001

0xB4

0x00

0x0

0x08

001

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
0xC3
C3

DATA
DATA
80
80 06
06 00
00 01
01 00
00 00
00 40
40 00
00

Sync

ACK

EOP

00000001

0x4B

001

CRC16
CRC16
0xBB29
0xBB29

USB
EOP
EOP
001
001

DATA
DATA

80 = direccin de transferencia, comando std.


06 = get descriptor

Device
Get device descriptor
genera una interrupcin

00 = ndice del descriptor


01 = device descriptor
00 00 = language ID
40 00 = cantidad de bytes requeridos
por el host (formato little endian;
Lowbyte, Highbyte)

Autor: Alejandro Furfaro

Get device descriptor


genera una interrupcin

76

ACKnowledged

Cada transferencia de control debe ser reconocida


(ACKnowledged)
Setup stage

Sync
Sync
00000001
00000001

SOF
SOF
0xA5
0xA5

Sync
Sync
00000001
00000001

SETUP
SETUP
0x
0xB4
B4

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
C3

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Frame#
Frame#
0x0DD
0x0DD
ADDR
ADDR
0x00
0x00

CRC5
CRC5
0x15
0x15
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x08
0x08

DATA
DATA
80
80 06
06 00
00 01
01 00
00 00
00 40
40 00
00
EOP
EOP
001
001

Acknowledge
Acknowledge Packet
Packet

Autor: Alejandro Furfaro

EOP
EOP
001
001
CRC16
CRC16
0xBB29
0xBB29

EOP
EOP
001
001

USB

Device

77

Paquete IN/OUT
Cada transferencia de Datos ser iniciada por el host
(PC) con un Paquete IN/OUT
Data stage
USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA1
DATA1
0x
0xD2
D2

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Frame#
Frame#
0x0DE
0x0DE
ADDR
ADDR
0x00
0x00

CRC5
CRC5
0x17
0x17
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x8
0x8

DATA
DATA
12
12 01
01 00
00 01
01 00
00 00
00 00
00 08
08

EOP
EOP
001
001
CRC16
CRC16
0xC8E7
0xC8E7

Device
EOP
EOP
001
001

EOP
EOP
001
001
Data
Data In
In Packet
Packet (Host
(Host requiere
requiere datos
datos del
del dispositivo
dispositivo))

Autor: Alejandro Furfaro

79

Paquetes de Datos
Data stage
Sync

IN

ADDR

ENDP

CRC5

EOP

00000001

0x96

0x00

0x0

0x8

001

Sync
Sync
00000001
00000001

DATA1
DATA1
0xD2
0x
0xD2
D2

DATA
DATA
12
12 01
01 00
00 01
01 00
00 00
00 00
00 08
08

Sync

ACK

EOP

00000001

0x4B

001

USB

CRC16
CRC16
0xC8E7
0xC8E7

EOP
EOP
001
001

Device

DATA
DATA

12 = longitud del device descriptor


01 = Tipo de device descriptor
00 = byte bajo de especificacin USB
01 = byte alto de especificacin USB

V 01.00

1eros. 8 bytes del device


descriptor

00 = Device Class
00 = Device Protocol
00 = Device Sub Class
08 = Tamao Max. de paquete del

Autor: Alejandro Furfaro

endpoint 0

80

Fin de la Etapa de Datos


Data stage Status stage
Paquete
Paquete Data
Data Out
Out (El
(El Host
Host aborta
aborta la
la etapa
etapa de
de datos)
datos)

USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

OUT
OUT
0x
0x87
87

Sync
Sync
00000001
00000001

DATA1
DATA1
0x
0xD2
D2

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Frame#
Frame#
0x0E0
0x0E0
ADDR
ADDR
0x00
0x00

CRC5
CRC5
0x0E
0x0E
ENDP
ENDP
0x0
0x0
DATA
DATA

EOP
EOP
001
001
CRC5
CRC5
0x08
0x08

EOP
EOP
001
001
CRC16
CRC16
0x0000
0x0000

Device
EOP
EOP
001
001

EOP
EOP
001
001
Paquete de datos vaco
indica fin de la etapa de
datos

Autor: Alejandro Furfaro

81

Reset desde el Host (10ms)

USB
RESET
RESET
128160
128160

Device

Reset
Reset iniciado
iniciado por
por el
el host
host

Autor: Alejandro Furfaro

82

Comando: Set Address


Desde ahora te llams N2
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

SETUP
SETUP
0x
0xB4
B4

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
C3

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Frame#
Frame#
0x143
0x143
ADDR
ADDR
0x00
0x00

CRC5
CRC5
0x04
0x04
ENDP
ENDP
0x0
0x0

USB

EOP
EOP
001
001
CRC5
CRC5
0x08
0x08

DATA
DATA
00
00 05
05 02
02 00
00 00
00 00
00 00
00 00
00

EOP
EOP
001
001
CRC16
CRC16
0xD768
0xD768

EOP
EOP
001
001

Device

EOP
EOP
001
001
DATA
DATA

00 = direccin host- dispositivo, std. command,


receptor el dispositivo
05 = set address
02 = device address nr. 2
00 00 00 00 00 = default

Autor: Alejandro Furfaro

83

Fin de la etapa de Datos


Data stage Status stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0xA5
0xA5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA1
DATA1
0x
0xD2
D2

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Frame#
Frame#
0x144
0x144
ADDR
ADDR
0x00
0x00

CRC5
CRC5
0x08
0x08
ENDP
ENDP
0x0
0x0
DATA
DATA

EOP
EOP
001
001
CRC5
CRC5
0x08
0x08

EOP
EOP
001
001
CRC16
CRC16
0x0000
0x0000

Device
EOP
EOP
001
001

EOP
EOP
001
001
Paquete de datos vaco
desde el dispositivo.

Autor: Alejandro Furfaro

84

Get Descriptor al Dispositivo N 2


Que sos?
Setup stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

SETUP
SETUP
0x
0xB4
B4

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
C3

Sync
Sync
00000001
00000001

ACK
ACK
0x4B
0x4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x151
0x151
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x1E
0x1E
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

DATA
DATA
80
80 06
06 00
00 01
01 00
00 00
00 12
12 00
00
EOP
EOP
001
001

Device

EOP
EOP
001
001
CRC16
CRC16
0x072F
0x072F

EOP
EOP
001
001

El dispositivo es accedido
como N2

85

Get Descriptor del Dispositivo N 2


II

Que sos?, detalles


Sync

SOF

Frame#

CRC5

EOP

00000001

0xA5

0x151

0x1E

001

Setup stage

Sync

SETUP

ADDR

ENDP

CRC5

EOP

00000001

0xB4

0x02

0x0

0x15

001

Sync
Sync
00000001
00000001

DATA0
DATA0
0xC3
0xC3

DATA
DATA
80
80 06
06 00
00 01
01 00
00 00
00 12
12 00
00

Sync

ACK

EOP

00000001

0x4B

001

CRC16
CRC16
0x072F
0x072F

DATA
DATA

USB
EOP
EOP
001
001

Device

80 = direccin de transferencia, std. command


06 = get descriptor
00 = ndice del descriptor
01 = device descriptor
00 00 = language ID
12 00 = bytes a transferir

Autor: Alejandro Furfaro

86

IN request
Obtiene datos del dispositivo
Data stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA1
DATA1
0x
0xD2
D2

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x152
0x152
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x1C
0x1C
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

DATA
DATA
12
12 01
01 00
00 01
01 00
00 00
00 00
00 08
08

EOP
EOP
001
001
CRC16
CRC16
0xC8E7
0xC8E7

Device
EOP
EOP
001
001

EOP
EOP
001
001

87

IN request II
Detalles (obtiene datos de descripcin del dispositivo)
Data stage
Sync

IN

ADDR

ENDP

CRC5

EOP

00000001

0x96

0x02

0x0

0x15

001

Sync
Sync
00000001
00000001

DATA1
DATA1
0xD2
0xD2

DATA
DATA
12
12 01
01 00
00 01
01 00
00 00
00 00
00 08
08

Sync

ACK

EOP

00000001

0x4B

001

CRC16
CRC16
0xC8E7
0xC8E7

USB
EOP
EOP
001
001

Device

DATA
DATA
12 = longitud del device descriptor
01 = Tipo device descriptor
00 = byte bajo de la especificacin USB
01 = byte alto dela especificacin USB

1eros. 8 bytes del device


descriptor

00 = Device Class
00 = Device Sub Class
00 = Device Protocol
08 = Tamao Max. De paquete del endpoint
0

Autor: Alejandro Furfaro

88

2 IN request
Obtiene datos del dispositivo
Data stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0xA5
0xA5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA0
DATA0
0xC3
0xC3

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x153
0x153
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x03
0x03
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

DATA
DATA
8B
8B 05
05 41
41 C5
C5 01
01 00
00 00
00 00
00

EOP
EOP
001
001
CRC16
CRC16
0x86DB
0x86DB

Device
EOP
EOP
001
001

EOP
EOP
001
001

89

2 IN request II

Detalles. Se transfieren los datos especficos a la PC


Sync

IN

ADDR

ENDP

CRC5

EOP

00000001

0x96

0x02

0x0

0x15

001

Sync
Sync
00000001
00000001

DATA0
DATA0
0xC3
0x
0xC3
C3

DATA
DATA
8B
8B 05
05 41
41 C5
C5 01
01 00
00 00
00 00
00

Sync

ACK

EOP

00000001

0x4B

001

CRC16
CRC16
0x86DB
0x86DB

USB
EOP
EOP
001
001

Device
DATA
DATA

8B = byte bajo del vendor ID


05 = byte alto del vendor ID
41 = byte bajo del product ID
C5 = byte alto del product ID

siguientes 8 bytes del


device descriptor

01 = byte bajo del devicenumber


00 = byte alto del device number
00 = ndice para string descriptor del fabricante
00 = ndice al string descriptor del producto

Autor: Alejandro Furfaro

90

3 IN request
Se transfiere el resto
Data stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0xA5
0x
0xA5
A5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA1
DATA1
0xD2
0xD2

Frame#
Frame#
0x154
0x154
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x1D
0x1D
ENDP
ENDP
0x0
0x0
DATA
DATA
00
00 01
01

Sync

ACK

EOP

00000001

0x4B

001

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

EOP
EOP
001
001
CRC16
CRC16
0xFCF1
0xFCF1

Device
EOP
EOP
001
001

DATA
DATA

00 = ndice al string descriptor del nmero de serie


01 = nmero de configuraciones

Autor: Alejandro Furfaro

91

Comando: OUT transfer

Paquete de datos vaco


Finaliza la etapa de datos

Data stage Status stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

OUT
OUT
0x
0x87
87

Sync
Sync
00000001
00000001

DATA1
DATA1
0x
0xD2
D2

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x155
0x155
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x02
0x02
ENDP
ENDP
0x0
0x0
DATA
DATA

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

EOP
EOP
001
001
CRC16
CRC16
0x0000
0x0000

Device
EOP
EOP
001
001

EOP
EOP
001
001

92

Comando: Get Configuration


Descriptor

Como funciona el dispositivo?

Setup stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

SETUP
SETUP
0x
0xB4
B4

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
C3

Sync
Sync
00000001
00000001

ACK
ACK
0x4B
0x4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x157
0x157
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x1F
0x1F
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

DATA
DATA
80
80 06
06 00
00 02
02 00
00 00
00 FF
FF 00
00

EOP
EOP
001
001
CRC16
CRC16
0x9725
0x9725

Device
EOP
EOP
001
001

EOP
EOP
001
001

93

Comando: Get Configuration


Descriptor

Como funciona el dispositivo?, detalles


Sync

SOF

Frame#

CRC5

EOP

00000001

0xA5

0x157

0x1F

001

Sync

SETUP

ADDR

ENDP

CRC5

EOP

00000001

0xB4

0x02

0x0

0x15

001

Sync
Sync
00000001
00000001

DATA0
DATA0
0xC3
0xC3

DATA
DATA
80
80 06
06 00
00 02
02 00
00 00
00 FF
FF 00
00

Sync

ACK

EOP

00000001

0x4B

001

CRC16
CRC16
0x9725
0x9725

USB
EOP
EOP
001
001

DATA
DATA

Device

80 = direccin de transferencia, std. command


06 = get descriptor
00 = ndice del descriptor
02 = configuration descriptor
00 00 = language ID
FF = byte bajo de los bytes a transferir
00 = byte alto de los bytes a transferir

Autor: Alejandro Furfaro

94

In Request: Respuesta
Respuesta a Como funciona el dispositivo?
Data stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA1
DATA1
0xD2
0xD2

Sync
Sync
00000001
00000001

ACK
ACK
0x4B
0x4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x158
0x158
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x0F
0x0F
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

DATA
DATA
09
09 02
02 19
19 00
00 01
01 01
01 00
00 60
60

EOP
EOP
001
001
CRC16
CRC16
0x5020
0x5020

Device
EOP
EOP
001
001

EOP
EOP
001
001

95

In Request: Respuesta II
Respuesta a Como funciona el dispositivo?, detalles
Sync

IN

ADDR

ENDP

CRC5

EOP

00000001

0x96

0x02

0x0

0x15

001

Sync
Sync
00000001
00000001

DATA1
DATA1
0xD2
0x
0xD2
D2

Sync

ACK

DATA
DATA
09
09 02
02 19
19 00
00 01
01 01
01 00
00 60
60

CRC16
CRC16
0x5020
0x5020

USB
EOP
EOP
001
001

EOP

DATA
00000001
0x4B
001
DATA
09 = longitud del configuration descriptor
02 = Tipo del configuration descriptor

Device
1eros. 8 bytes del device
descriptor

19 00 = longitud de los configuration, interface y endpoint


descriptors
01 = nro. de interfaces usadas en esta configuracin
01 = valor para esta configuracin con
SetConfiguration
00 = ndice al configuration string descriptor
60 = atributos de la configuration

Autor: Alejandro Furfaro

96

2 In Request:
Respuesta a Como funciona el dispositivo?
Data stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0xA5
0xA5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
C3

Sync
Sync
00000001
00000001

ACK
ACK
0x4B
0x4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x159
0x159
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x10
0x10
ENDP
ENDP
0x0
0x0

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

DATA
DATA
32
32 09
09 04
04 00
00 00
00 01
01 00
00 00
00

EOP
EOP
001
001
CRC16
CRC16
0x273E
0x273E

Device
EOP
EOP
001
001

EOP
EOP
001
001

97

2 In Request II
Respuesta a Como funciona el dispositivo?, detalles
Sync

IN

ADDR

ENDP

CRC5

EOP

00000001

0x96

0x02

0x0

0x15

001

Sync
Sync
00000001
00000001

DATA0
DATA0
0xC3
0xC3

Sync

ACK

DATA
DATA
32
32 09
09 04
04 00
00 00
00 01
01 00
00 00
00

CRC16
CRC16
0x273E
0x273E

USB
EOP
EOP
001
001

EOP

Device

09 = longitud del interface descriptor

Siguientes 8 bytes del


device descriptor

DATA
00000001
0x4B
001
DATA
32 = Consumo max.de energa (en unidades de 2mA)

04 = Tipo de interface descriptor


00 = nmero de interfaces
00 = ajustes alternativos
01 = endpoints utilizados enesta interfaz
00 = interface class
00 = interface sub class

Autor: Alejandro Furfaro

98

3 In Request
Respuesta a Como funciona el dispositivo?, detalles
USB
Sync
Sync
00000001
00000001

SOF
SOF
0x
0xA5
A5

Sync
Sync
00000001
00000001

IN
IN
0x96
0x96

Sync
Sync
00000001
00000001

DATA0
DATA0
0x
0xC3
C3

Sync
Sync
00000001
00000001

ACK
ACK
0x4B
0x4B

Frame#
Frame#
0x15B
0x15B
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x0D
0x0D
ENDP
ENDP
0x0
0x0
DATA
DATA
00
00

EOP
EOP
001
001

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

EOP
EOP
001
001
CRC16
CRC16
0x0000
0x0000

Device
EOP
EOP
001
001
00 = intervalo de
polling para interrupt
endpoints

Autor: Alejandro Furfaro

99

Comando: transferencia OUT


Finaliza la etapa de datos
Data stage Status stage

USB
Sync
Sync
00000001
00000001

SOF
SOF
0xA5
0xA5

Sync
Sync
00000001
00000001

OUT
OUT
0x
0x87
87

Sync
Sync
00000001
00000001

DATA1
DATA1
0x
0xD2
D2

Sync
Sync
00000001
00000001

ACK
ACK
0x
0x4B
4B

Autor: Alejandro Furfaro

Frame#
Frame#
0x15C
0x15C
ADDR
ADDR
0x02
0x02

CRC5
CRC5
0x15
0x15
ENDP
ENDP
0x0
0x0
DATA
DATA

EOP
EOP
001
001
CRC5
CRC5
0x15
0x15

EOP
EOP
001
001
CRC16
CRC16
0x0000
0x0000

Device
EOP
EOP
001
001

EOP
EOP
001
001

100

S-ar putea să vă placă și