+ All Categories
Home > Documents > USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5...

USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5...

Date post: 23-Jan-2016
Category:
Upload: rodrigo-medina-aranda
View: 222 times
Download: 0 times
Share this document with a friend
27
USB USB Device Device Commando Commando : Get descriptor : Get descriptor (¿Quien sos?) (¿Quien sos?) Sync Sync 00000001 00000001 SOF SOF 0x 0xA5 A5 Frame# Frame# 0x0DD 0x0DD CRC5 CRC5 0x15 0x15 EOP EOP 001 001 Sync Sync 00000001 00000001 SETUP SETUP 0x 0xB4 B4 ADDR ADDR 0x00 0x00 ENDP ENDP 0x0 0x0 CRC5 CRC5 0x08 0x08 EOP EOP 001 001 Sync Sync 00000001 00000001 DATA0 DATA0 0x 0xC3 C3 DATA DATA 80 06 00 01 00 00 40 00 80 06 00 01 00 00 40 00 CRC16 CRC16 0xBB29 0xBB29 EOP EOP 001 001 Sync Sync 00000001 00000001 ACK ACK 0x 0x4B 4B EOP EOP 001 001 Setup stage
Transcript
Page 1: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

USBUSB

DeviceDevice

CommandoCommando: Get descriptor: Get descriptor(¿Quien sos?)(¿Quien sos?)

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x0DD0x0DD0x0DD0x0DDCRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SETUPSETUPSETUPSETUP

0x0xB4B40x0xB4B4ADDRADDRADDRADDR

0x000x000x000x00ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x080x080x080x08EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

80 06 00 01 00 00 40 0080 06 00 01 00 00 40 0080 06 00 01 00 00 40 0080 06 00 01 00 00 40 00CRC16CRC16CRC16CRC16

0xBB290xBB290xBB290xBB29EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

Setup stage

Page 2: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

SOFSOF

0xA50xA5

Frame#Frame#

0x0DD0x0DD

CRC5CRC5

0x150x15

EOPEOP

001001

SyncSync

0000000100000001

SETUPSETUP

0xB40xB4

ADDRADDR

0x000x00

ENDPENDP

0x00x0

CRC5CRC5

0x080x08

EOPEOP

001001

SyncSync

0000000100000001

DATA0DATA0

0xC30xC3

DATADATA

80 06 00 01 00 00 40 0080 06 00 01 00 00 40 00

CRC16CRC16

0xBB290xBB29

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

Start Of FrameStart Of Frame...se genera cada 1 mseg...se genera cada 1 mseg

SyncSyncSyncSync

00000001000000010000000100000001

Packet start indica “llegando paquete” al transceiverPacket start indica “llegando paquete” al transceiverPacket start indica “llegando paquete” al transceiverPacket start indica “llegando paquete” al transceiver

SOFSOFSOFSOF

0x0xA5A50x0xA5A5

Start of Frame (uno por milisegundo)Start of Frame (uno por milisegundo)Start of Frame (uno por milisegundo)Start of Frame (uno por milisegundo)

Frame#Frame#Frame#Frame#

0x0DD0x0DD0x0DD0x0DD

Nro. de Frame (0 - 2047) cíclicoNro. de Frame (0 - 2047) cíclicoNro. de Frame (0 - 2047) cíclicoNro. de Frame (0 - 2047) cíclico

CRC5CRC5CRC5CRC5

0x150x150x150x15

5 bit Checksum sobre Frame#5 bit Checksum sobre Frame#5 bit Checksum sobre Frame#5 bit Checksum sobre Frame#

EOPEOPEOPEOP

001001001001

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

Setup stage

USBUSB

DeviceDevice

Page 3: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

SETUPSETUP

0xB40xB4

ADDRADDR

0x000x00

ENDPENDP

0x00x0

CRC5CRC5

0x080x08

EOPEOP

001001

SyncSync

0000000100000001

DATA0DATA0

0xC30xC3

DATADATA

80 06 00 01 00 00 40 0080 06 00 01 00 00 40 00

CRC16CRC16

0xBB290xBB29

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

Se decodifican los PSe decodifican los Paquetes Setup aquetes Setup completos completos y se generan las interrupcionesy se generan las interrupciones

SyncSyncSyncSync

00000001000000010000000100000001SETUPSETUPSETUPSETUP

0x0xB4B40x0xB4B4

Setup Packet (comienza transf. de control) Setup Packet (comienza transf. de control) Setup Packet (comienza transf. de control) Setup Packet (comienza transf. de control)

ADDRADDRADDRADDR

0x000x000x000x00

Address 0 (def. addr. Para cada nuevo disp. attachado)Address 0 (def. addr. Para cada nuevo disp. attachado)Address 0 (def. addr. Para cada nuevo disp. attachado)Address 0 (def. addr. Para cada nuevo disp. attachado)

SyncSync

0000000100000001

SOFSOF

0xA50xA5

Frame#Frame#

0x0DD0x0DD

CRC5CRC5

0x150x15

EOPEOP

001001

ENDPENDPENDPENDP

0x00x00x00x0

Endpoint 0 (usado para configuración)Endpoint 0 (usado para configuración)Endpoint 0 (usado para configuración)Endpoint 0 (usado para configuración)

CRC5CRC5CRC5CRC5

0x080x080x080x08EOPEOPEOPEOP

001001001001

Setup stage

USBUSB

DeviceDevice

Page 4: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

DATA0DATA0

0xC30xC3

DATADATA

80 06 00 01 00 00 40 0080 06 00 01 00 00 40 00

CRC16CRC16

0xBB290xBB29

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

El El Paquete Data Paquete Data define que clase de define que clase de transferencia setup se inicia.transferencia setup se inicia.

SyncSync

0000000100000001

SETUPSETUP

0xB40xB4

ADDRADDR

0x000x00

ENDPENDP

0x00x0

CRC5CRC5

0x080x08

EOPEOP

001001

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3

DATADATADATADATA

DATADATADATADATA

80 06 00 01 00 00 40 0080 06 00 01 00 00 40 0080 06 00 01 00 00 40 0080 06 00 01 00 00 40 00

01 = device descriptor01 = device descriptor 01 = device descriptor01 = device descriptor

80 = dirección de transfer, comando std. 80 = dirección de transfer, comando std. 80 = dirección de transfer, comando std. 80 = dirección de transfer, comando std.

06 = get descriptor06 = get descriptor 06 = get descriptor06 = get descriptor

00 = índice del descriptor00 = índice del descriptor00 = índice del descriptor00 = índice del descriptor

40 00 = cantidad de bytes requeridos 40 00 = cantidad de bytes requeridos por el host (formato little endian; por el host (formato little endian; Lowbyte, Highbyte) Lowbyte, Highbyte)

40 00 = cantidad de bytes requeridos 40 00 = cantidad de bytes requeridos por el host (formato little endian; por el host (formato little endian; Lowbyte, Highbyte) Lowbyte, Highbyte)

Get device descriptor Get device descriptor

genera una interrupcióngenera una interrupción

Get device descriptor Get device descriptor

genera una interrupcióngenera una interrupción

Get device descriptor Get device descriptor

genera una interrupcióngenera una interrupción

Get device descriptor Get device descriptor

genera una interrupcióngenera una interrupción

00 00 = language ID00 00 = language ID00 00 = language ID00 00 = language ID

CRC16CRC16CRC16CRC16

0xBB290xBB290xBB290xBB29EOPEOPEOPEOP

001001001001

Setup stage

USBUSB

DeviceDevice

Page 5: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

USBUSB

DeviceDevice

Cada transferencia de control debe ser Cada transferencia de control debe ser reconocida (reconocida (ACKACKnowledged)nowledged)

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4B

Acknowledge PacketAcknowledge PacketAcknowledge PacketAcknowledge Packet

EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0xA50xA50xA50xA5Frame#Frame#Frame#Frame#

0x0DD0x0DD0x0DD0x0DDCRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SETUPSETUPSETUPSETUP

0x0xB4B40x0xB4B4ADDRADDRADDRADDR

0x000x000x000x00ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x080x080x080x08EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

80 06 00 01 00 00 40 0080 06 00 01 00 00 40 0080 06 00 01 00 00 40 0080 06 00 01 00 00 40 00CRC16CRC16CRC16CRC16

0xBB290xBB290xBB290xBB29EOPEOPEOPEOP

001001001001

Setup stage

Page 6: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

Cada transferencia de Datos será iniciada Cada transferencia de Datos será iniciada por el host (PC) con un por el host (PC) con un Paquete IN/OUTPaquete IN/OUT

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x000x000x000x00ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x80x80x80x8EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x0DE0x0DE0x0DE0x0DECRC5CRC5CRC5CRC5

0x170x170x170x17EOPEOPEOPEOP

001001001001

Data stage

USBUSB

DeviceDevice

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA

12 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 08CRC16CRC16CRC16CRC16

0xC8E70xC8E70xC8E70xC8E7EOPEOPEOPEOP

001001001001

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

Page 7: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

DATA1DATA1

0xD20xD2

DATADATA

12 01 00 01 00 00 00 0812 01 00 01 00 00 00 08

CRC16CRC16

0xC8E70xC8E7

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

USBUSB

DeviceDevice

Paquetes de DatosPaquetes de Datos

SyncSync

0000000100000001

ININ

0x960x96

ADDRADDR

0x000x00

ENDPENDP

0x00x0

CRC5CRC5

0x80x8

EOPEOP

001001

DATADATADATADATA

12 = longitud del device descriptor12 = longitud del device descriptor 12 = longitud del device descriptor12 = longitud del device descriptor

01 = Tipo de device descriptor01 = Tipo de device descriptor 01 = Tipo de device descriptor01 = Tipo de device descriptor

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA

12 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 08CRC16CRC16CRC16CRC16

0xC8E70xC8E70xC8E70xC8E7EOPEOPEOPEOP

001001001001

00 = Device Protocol00 = Device Protocol 00 = Device Protocol00 = Device Protocol

00 = Device Class00 = Device Class00 = Device Class00 = Device Class

00 = Device Sub Class00 = Device Sub Class 00 = Device Sub Class00 = Device Sub Class

08 = Tamaño Max. de paquete del 08 = Tamaño Max. de paquete del endpoint 0endpoint 0

08 = Tamaño Max. de paquete del 08 = Tamaño Max. de paquete del endpoint 0endpoint 0

1eros. 8 bytes del 1eros. 8 bytes del device descriptordevice descriptor

1eros. 8 bytes del 1eros. 8 bytes del device descriptordevice descriptor 01 = byte alto de especificación USB01 = byte alto de especificación USB

01 = byte alto de especificación USB01 = byte alto de especificación USB00 = byte bajo de especificación USB00 = byte bajo de especificación USB

00 = byte bajo de especificación USB00 = byte bajo de especificación USB

V 01.00V 01.00V 01.00V 01.00 } }

Data stage

Page 8: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

USBUSB

DeviceDevice

Fin de la Etapa de DatosFin de la Etapa de Datos

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x0E00x0E00x0E00x0E0CRC5CRC5CRC5CRC5

0x0E0x0E0x0E0x0EEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001OUTOUTOUTOUT

0x0x87870x0x8787ADDRADDRADDRADDR

0x000x000x000x00ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x080x080x080x08EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA CRC16CRC16CRC16CRC16

0x00000x00000x00000x0000EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

Paquete de datos Paquete de datos vacío indica fin de la vacío indica fin de la

etapa de datosetapa de datos

Paquete de datos Paquete de datos vacío indica fin de la vacío indica fin de la

etapa de datosetapa de datos

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

Data stage Status stage

Page 9: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

Reset desde el Host (10ms)Reset desde el Host (10ms)

Reset iniciado por el hostReset iniciado por el hostReset iniciado por el hostReset iniciado por el host

RESETRESETRESETRESET

128160128160128160128160

USBUSB

DeviceDevice

Page 10: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

CommandoCommando: Set Address: Set Address (Desde a (Desde ahora te llamás hora te llamás Nº2Nº2))

SyncSyncSyncSync

00000001000000010000000100000001SETUPSETUPSETUPSETUP

0x0xB4B40x0xB4B4ADDRADDRADDRADDR

0x000x000x000x00ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x080x080x080x08EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

00 05 02 00 00 00 00 0000 05 02 00 00 00 00 0000 05 02 00 00 00 00 0000 05 02 00 00 00 00 00CRC16CRC16CRC16CRC16

0xD7680xD7680xD7680xD768EOPEOPEOPEOP

001001001001

DATADATADATADATA

02 = device address nr. 202 = device address nr. 202 = device address nr. 202 = device address nr. 2

00 = dirección host- dispositivo, std. command,00 = dirección host- dispositivo, std. command, receptor el dispositivo receptor el dispositivo

00 = dirección host- dispositivo, std. command,00 = dirección host- dispositivo, std. command, receptor el dispositivo receptor el dispositivo

05 = set address05 = set address 05 = set address05 = set address

00 00 00 00 00 = default00 00 00 00 00 = default00 00 00 00 00 = default00 00 00 00 00 = default

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x1430x1430x1430x143CRC5CRC5CRC5CRC5

0x040x040x040x04EOPEOPEOPEOP

001001001001 USBUSB

DeviceDevice

Page 11: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

USBUSB

DeviceDevice

Fin de la etapa de DatosFin de la etapa de Datos

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0xA50xA50xA50xA5Frame#Frame#Frame#Frame#

0x1440x1440x1440x144CRC5CRC5CRC5CRC5

0x080x080x080x08EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x000x000x000x00ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x080x080x080x08EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA CRC16CRC16CRC16CRC16

0x00000x00000x00000x0000EOPEOPEOPEOP

001001001001

Paquete de datos Paquete de datos vacío desde el vacío desde el

dispositivo.dispositivo.

Paquete de datos Paquete de datos vacío desde el vacío desde el

dispositivo.dispositivo.

Data stage Status stage

Page 12: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

Get Descriptor del Dispositivo Get Descriptor del Dispositivo Nº 2Nº 2(¿(¿Que sos?Que sos?))

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x1510x1510x1510x151CRC5CRC5CRC5CRC5

0x1E0x1E0x1E0x1EEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SETUPSETUPSETUPSETUP

0x0xB4B40x0xB4B4ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

Setup stage

USBUSB

DeviceDevice

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

80 06 00 01 00 00 12 0080 06 00 01 00 00 12 0080 06 00 01 00 00 12 0080 06 00 01 00 00 12 00CRC16CRC16CRC16CRC16

0x072F0x072F0x072F0x072FEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x4B0x4B0x4B0x4BEOPEOPEOPEOP

001001001001 El dispositivo es El dispositivo es

accedido como Nº2accedido como Nº2

El dispositivo es El dispositivo es accedido como Nº2accedido como Nº2

Page 13: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

DATA0DATA0

0xC30xC3

DATADATA

80 06 00 01 00 00 12 0080 06 00 01 00 00 12 00

CRC16CRC16

0x072F0x072F

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

SyncSync

0000000100000001

SETUPSETUP

0xB40xB4

ADDRADDR

0x020x02

ENDPENDP

0x00x0

CRC5CRC5

0x150x15

EOPEOP

001001

SyncSync

0000000100000001

SOFSOF

0xA50xA5

Frame#Frame#

0x1510x151

CRC5CRC5

0x1E0x1E

EOPEOP

001001

Get Descriptor del Dispositivo Get Descriptor del Dispositivo Nº 2Nº 2((¿Que sos?¿Que sos?), detalles), detalles

DATADATADATADATA

01 = device descriptor01 = device descriptor 01 = device descriptor01 = device descriptor

80 = dirección de transferencia, std. command 80 = dirección de transferencia, std. command

80 = dirección de transferencia, std. command 80 = dirección de transferencia, std. command

06 = get descriptor06 = get descriptor 06 = get descriptor06 = get descriptor

00 = índice del descriptor00 = índice del descriptor00 = índice del descriptor00 = índice del descriptor

12 00 = bytes a 12 00 = bytes a transferir 12 00 = bytes a 12 00 = bytes a transferir

00 00 = language ID00 00 = language ID00 00 = language ID00 00 = language ID

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0xC30xC30xC30xC3DATADATADATADATA

80 06 00 01 00 00 12 0080 06 00 01 00 00 12 0080 06 00 01 00 00 12 0080 06 00 01 00 00 12 00CRC16CRC16CRC16CRC16

0x072F0x072F0x072F0x072FEOPEOPEOPEOP

001001001001

Setup stage

USBUSB

DeviceDevice

Page 14: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

IN requestIN request ((obtiene datos del dispositivoobtiene datos del dispositivo))

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x1520x1520x1520x152CRC5CRC5CRC5CRC5

0x1C0x1C0x1C0x1CEOPEOPEOPEOP

001001001001

Data stage

USBUSB

DeviceDevice

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA

12 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 08CRC16CRC16CRC16CRC16

0xC8E70xC8E70xC8E70xC8E7EOPEOPEOPEOP

001001001001

Page 15: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

SyncSync

0000000100000001

ININ

0x960x96

ADDRADDR

0x020x02

ENDPENDP

0x00x0

CRC5CRC5

0x150x15

EOPEOP

001001

SyncSync

0000000100000001

DATA1DATA1

0xD20xD2

DATADATA

12 01 00 01 00 00 00 0812 01 00 01 00 00 00 08

CRC16CRC16

0xC8E70xC8E7

EOPEOP

001001

USBUSB

DeviceDevice

IN requestIN request, detalles, detalles((get data about device descriptionget data about device description))

DATADATADATADATA

12 = longitud del device descriptor12 = longitud del device descriptor 12 = longitud del device descriptor12 = longitud del device descriptor

01 = Tipo device descriptor01 = Tipo device descriptor 01 = Tipo device descriptor01 = Tipo device descriptor

01 = byte alto dela especificación USB01 = byte alto dela especificación USB 01 = byte alto dela especificación USB01 = byte alto dela especificación USB

00 = byte bajo de la especificación USB00 = byte bajo de la especificación USB00 = byte bajo de la especificación USB00 = byte bajo de la especificación USB

00 = Device Protocol00 = Device Protocol 00 = Device Protocol00 = Device Protocol

00 = Device Class00 = Device Class00 = Device Class00 = Device Class

00 = Device Sub Class00 = Device Sub Class 00 = Device Sub Class00 = Device Sub Class

08 = Tamaño Max. De paquete del 08 = Tamaño Max. De paquete del endpoint 0endpoint 0

08 = Tamaño Max. De paquete del 08 = Tamaño Max. De paquete del endpoint 0endpoint 0

1eros. 8 bytes del 1eros. 8 bytes del device descriptordevice descriptor

1eros. 8 bytes del 1eros. 8 bytes del device descriptordevice descriptor

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0xD20xD20xD20xD2DATADATADATADATA

12 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 0812 01 00 01 00 00 00 08CRC16CRC16CRC16CRC16

0xC8E70xC8E70xC8E70xC8E7EOPEOPEOPEOP

001001001001

Data stage

Page 16: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

22ºº IN request IN request ((obtiene datos del dispositivoobtiene datos del dispositivo))

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0xA50xA50xA50xA5Frame#Frame#Frame#Frame#

0x1530x1530x1530x153CRC5CRC5CRC5CRC5

0x030x030x030x03EOPEOPEOPEOP

001001001001

Data stage

USBUSB

DeviceDevice

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0xC30xC30xC30xC3DATADATADATADATA

8B 05 41 C5 01 00 00 008B 05 41 C5 01 00 00 008B 05 41 C5 01 00 00 008B 05 41 C5 01 00 00 00CRC16CRC16CRC16CRC16

0x86DB0x86DB0x86DB0x86DBEOPEOPEOPEOP

001001001001

Page 17: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

DATA0DATA0

0xC30xC3

DATADATA

8B 05 41 C5 01 00 00 008B 05 41 C5 01 00 00 00

CRC16CRC16

0x86DB0x86DB

EOPEOP

001001

USBUSB

DeviceDevice

2º IN request2º IN request, detalles, detallesSe transfieren los datos específicos a la PCSe transfieren los datos específicos a la PC

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

SyncSync

0000000100000001

ININ

0x960x96

ADDRADDR

0x020x02

ENDPENDP

0x00x0

CRC5CRC5

0x150x15

EOPEOP

001001

DATADATADATADATA

C5 = byte alto del product IDC5 = byte alto del product IDC5 = byte alto del product IDC5 = byte alto del product ID

41 = byte bajo del product ID41 = byte bajo del product ID41 = byte bajo del product ID41 = byte bajo del product ID

00 = índice para string descriptor del fabricante00 = índice para string descriptor del fabricante 00 = índice para string descriptor del fabricante00 = índice para string descriptor del fabricante

01 = byte bajo del devicenumber01 = byte bajo del devicenumber01 = byte bajo del devicenumber01 = byte bajo del devicenumber

00 = byte alto del devicenumber00 = byte alto del devicenumber00 = byte alto del devicenumber00 = byte alto del devicenumber

00 = índice al string descriptor del producto00 = índice al string descriptor del producto00 = índice al string descriptor del producto00 = índice al string descriptor del producto

siguientes 8 bytes del siguientes 8 bytes del device descriptordevice descriptor

siguientes 8 bytes del siguientes 8 bytes del device descriptordevice descriptor

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

8B 05 41 C5 01 00 00 008B 05 41 C5 01 00 00 008B 05 41 C5 01 00 00 008B 05 41 C5 01 00 00 00CRC16CRC16CRC16CRC16

0x86DB0x86DB0x86DB0x86DBEOPEOPEOPEOP

001001001001

8B = byte bajo del vendor ID8B = byte bajo del vendor ID8B = byte bajo del vendor ID8B = byte bajo del vendor ID

05 = byte alto del vendor ID05 = byte alto del vendor ID05 = byte alto del vendor ID05 = byte alto del vendor ID

Page 18: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

SOFSOF

0xA50xA5

Frame#Frame#

0x1540x154

CRC5CRC5

0x1D0x1D

EOPEOP

001001

SyncSync

0000000100000001

ININ

0x960x96

ADDRADDR

0x020x02

ENDPENDP

0x00x0

CRC5CRC5

0x150x15

EOPEOP

001001

SyncSync

0000000100000001

DATA1DATA1

0xD20xD2

DATADATA

00 0100 01

CRC16CRC16

0xFCF10xFCF1

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

USBUSB

DeviceDevice

3º IN request3º IN requestSe transfiere el restoSe transfiere el resto

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x1540x1540x1540x154CRC5CRC5CRC5CRC5

0x1D0x1D0x1D0x1DEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0xD20xD20xD20xD2DATADATADATADATA

00 0100 0100 0100 01CRC16CRC16CRC16CRC16

0xFCF10xFCF10xFCF10xFCF1EOPEOPEOPEOP

001001001001

DATADATADATADATA

00 = índice al string descriptor del número de 00 = índice al string descriptor del número de serie serie

00 = índice al string descriptor del número de 00 = índice al string descriptor del número de serie serie

01 = número de configuraciones01 = número de configuraciones01 = número de configuraciones01 = número de configuraciones

Data stage

Page 19: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

USBUSB

DeviceDevice

CommandoCommando: OUT transfer (paquete de : OUT transfer (paquete de datos vacío) finaliza la etapa de datosdatos vacío) finaliza la etapa de datos

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x1550x1550x1550x155CRC5CRC5CRC5CRC5

0x020x020x020x02EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001OUTOUTOUTOUT

0x0x87870x0x8787ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA CRC16CRC16CRC16CRC16

0x00000x00000x00000x0000EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

Data stage Status stage

Page 20: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

CommandCommand: Get Configuration Descriptor: Get Configuration Descriptor((¿Como funciona el dispositivo?)¿Como funciona el dispositivo?)

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x1570x1570x1570x157CRC5CRC5CRC5CRC5

0x1F0x1F0x1F0x1FEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SETUPSETUPSETUPSETUP

0x0xB4B40x0xB4B4ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

Setup stage

USBUSB

DeviceDevice

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

80 06 00 02 00 00 FF 0080 06 00 02 00 00 FF 0080 06 00 02 00 00 FF 0080 06 00 02 00 00 FF 00CRC16CRC16CRC16CRC16

0x97250x97250x97250x9725EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x4B0x4B0x4B0x4BEOPEOPEOPEOP

001001001001

Page 21: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

DATA0DATA0

0xC30xC3

DATADATA

80 06 00 02 00 00 FF 0080 06 00 02 00 00 FF 00

CRC16CRC16

0x97250x9725

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

SyncSync

0000000100000001

SETUPSETUP

0xB40xB4

ADDRADDR

0x020x02

ENDPENDP

0x00x0

CRC5CRC5

0x150x15

EOPEOP

001001

SyncSync

0000000100000001

SOFSOF

0xA50xA5

Frame#Frame#

0x1570x157

CRC5CRC5

0x1F0x1F

EOPEOP

001001

CommandoCommando: Get Configuration Descriptor: Get Configuration Descriptor((¿Como funciona el dispositivo?)¿Como funciona el dispositivo?), detalles, detalles

DATADATADATADATA

02 = configuration descriptor02 = configuration descriptor 02 = configuration descriptor02 = configuration descriptor

80 = dirección de transferencia, std. command 80 = dirección de transferencia, std. command 80 = dirección de transferencia, std. command 80 = dirección de transferencia, std. command

06 = get descriptor06 = get descriptor 06 = get descriptor06 = get descriptor

00 = índice del descriptor00 = índice del descriptor00 = índice del descriptor00 = índice del descriptor

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0xC30xC30xC30xC3DATADATADATADATA

80 06 00 02 00 00 FF 0080 06 00 02 00 00 FF 0080 06 00 02 00 00 FF 0080 06 00 02 00 00 FF 00CRC16CRC16CRC16CRC16

0x97250x97250x97250x9725EOPEOPEOPEOP

001001001001

00 00 = language ID00 00 = language ID 00 00 = language ID00 00 = language ID

00 = byte alto de los bytes a transferir00 = byte alto de los bytes a transferir00 = byte alto de los bytes a transferir00 = byte alto de los bytes a transferir

FF = byte bajo de los bytes a transferirFF = byte bajo de los bytes a transferirFF = byte bajo de los bytes a transferirFF = byte bajo de los bytes a transferir

USBUSB

DeviceDevice

Page 22: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

In RequestIn Request: Respuesta a : Respuesta a ¿Como funciona el dispositivo?¿Como funciona el dispositivo?

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x1580x1580x1580x158CRC5CRC5CRC5CRC5

0x0F0x0F0x0F0x0FEOPEOPEOPEOP

001001001001

Data stage

USBUSB

DeviceDevice

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x4B0x4B0x4B0x4BEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0xD20xD20xD20xD2DATADATADATADATA

09 02 19 00 01 01 00 6009 02 19 00 01 01 00 6009 02 19 00 01 01 00 6009 02 19 00 01 01 00 60CRC16CRC16CRC16CRC16

0x50200x50200x50200x5020EOPEOPEOPEOP

001001001001

Page 23: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

DATA1DATA1

0xD20xD2

DATADATA

09 02 19 00 01 01 00 6009 02 19 00 01 01 00 60

CRC16CRC16

0x50200x5020

EOPEOP

001001

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

USBUSB

DeviceDevice

In RequestIn Request: Respuesta a : Respuesta a ¿Como funciona el dispositivo?¿Como funciona el dispositivo?, detalles, detalles

SyncSync

0000000100000001

ININ

0x960x96

ADDRADDR

0x020x02

ENDPENDP

0x00x0

CRC5CRC5

0x150x15

EOPEOP

001001

DATADATADATADATA

19 00 = longitud de los configuration, interface y 19 00 = longitud de los configuration, interface y endpoint descriptorsendpoint descriptors

19 00 = longitud de los configuration, interface y 19 00 = longitud de los configuration, interface y endpoint descriptorsendpoint descriptors

09 = longitud del configuration descriptor09 = longitud del configuration descriptor09 = longitud del configuration descriptor09 = longitud del configuration descriptor

02 = Tipo del configuration descriptor02 = Tipo del configuration descriptor02 = Tipo del configuration descriptor02 = Tipo del configuration descriptor

00 = índice al configuration string descriptor00 = índice al configuration string descriptor 00 = índice al configuration string descriptor00 = índice al configuration string descriptor

01 = nro. de interfaces usadas en esta configuración01 = nro. de interfaces usadas en esta configuración01 = nro. de interfaces usadas en esta configuración01 = nro. de interfaces usadas en esta configuración

01 = valor para esta configuración con 01 = valor para esta configuración con SetConfigurationSetConfiguration

01 = valor para esta configuración con 01 = valor para esta configuración con SetConfigurationSetConfiguration

60 = atributos de la configuration60 = atributos de la configuration60 = atributos de la configuration60 = atributos de la configuration

1eros. 8 bytes del 1eros. 8 bytes del device descriptordevice descriptor

1eros. 8 bytes del 1eros. 8 bytes del device descriptordevice descriptor

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA

09 02 19 00 01 01 00 6009 02 19 00 01 01 00 6009 02 19 00 01 01 00 6009 02 19 00 01 01 00 60CRC16CRC16CRC16CRC16

0x50200x50200x50200x5020EOPEOPEOPEOP

001001001001

Page 24: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

2º2º In RequestIn Request: Respuesta a : Respuesta a ¿¿Como funciona el dispositivo?Como funciona el dispositivo?

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0xA50xA50xA50xA5Frame#Frame#Frame#Frame#

0x1590x1590x1590x159CRC5CRC5CRC5CRC5

0x100x100x100x10EOPEOPEOPEOP

001001001001

Data stage

USBUSB

DeviceDevice

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x4B0x4B0x4B0x4BEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

32 09 04 00 00 01 00 0032 09 04 00 00 01 00 0032 09 04 00 00 01 00 0032 09 04 00 00 01 00 00CRC16CRC16CRC16CRC16

0x273E0x273E0x273E0x273EEOPEOPEOPEOP

001001001001

Page 25: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

SyncSync

0000000100000001

DATA0DATA0

0xC30xC3

DATADATA

32 09 04 00 00 01 00 0032 09 04 00 00 01 00 00

CRC16CRC16

0x273E0x273E

EOPEOP

001001

USBUSB

DeviceDevice

2º2º InIn Request: Respuesta a Request: Respuesta a ¿Como funciona el dispositivo¿Como funciona el dispositivo??, detalles , detalles

SyncSync

0000000100000001

ACKACK

0x4B0x4B

EOPEOP

001001

SyncSync

0000000100000001

ININ

0x960x96

ADDRADDR

0x020x02

ENDPENDP

0x00x0

CRC5CRC5

0x150x15

EOPEOP

001001

DATADATADATADATA

04 = Tipo de interface descriptor04 = Tipo de interface descriptor04 = Tipo de interface descriptor04 = Tipo de interface descriptor

32 = Consumo max.de energía (en unidades de 2mA)32 = Consumo max.de energía (en unidades de 2mA)32 = Consumo max.de energía (en unidades de 2mA)32 = Consumo max.de energía (en unidades de 2mA)

09 = longitud del interface descriptor09 = longitud del interface descriptor09 = longitud del interface descriptor09 = longitud del interface descriptor

01 = endpoints utilizados enesta interfaz01 = endpoints utilizados enesta interfaz01 = endpoints utilizados enesta interfaz01 = endpoints utilizados enesta interfaz

00 = número de interfaces00 = número de interfaces00 = número de interfaces00 = número de interfaces

00 = seteos alternativos00 = seteos alternativos00 = seteos alternativos00 = seteos alternativos

00 = interface class00 = interface class00 = interface class00 = interface class

Siguientes 8 bytes del Siguientes 8 bytes del device descriptordevice descriptor

Siguientes 8 bytes del Siguientes 8 bytes del device descriptordevice descriptor

00 = interface sub class00 = interface sub class00 = interface sub class00 = interface sub class

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0xC30xC30xC30xC3DATADATADATADATA

32 09 04 00 00 01 00 0032 09 04 00 00 01 00 0032 09 04 00 00 01 00 0032 09 04 00 00 01 00 00CRC16CRC16CRC16CRC16

0x273E0x273E0x273E0x273EEOPEOPEOPEOP

001001001001

Page 26: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

USBUSB

DeviceDevice

3º3º In RequestIn Request: Respuesta a : Respuesta a ¿Como funciona el dispositivo?¿Como funciona el dispositivo?, detalles, detalles

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0x0xA5A50x0xA5A5Frame#Frame#Frame#Frame#

0x15B0x15B0x15B0x15BCRC5CRC5CRC5CRC5

0x0D0x0D0x0D0x0DEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ININININ

0x960x960x960x96ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x4B0x4B0x4B0x4BEOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA0DATA0DATA0DATA0

0x0xC3C30x0xC3C3DATADATADATADATA

00000000CRC16CRC16CRC16CRC16

0x00000x00000x00000x0000EOPEOPEOPEOP

001001001001

00 = intervalo de 00 = intervalo de

polling para interrupt polling para interrupt

endpointsendpoints

00 = intervalo de 00 = intervalo de

polling para interrupt polling para interrupt

endpointsendpoints

Page 27: USB USB Device Device Commando: Get descriptor (¿Quien sos?) SyncSync0000000100000001SOFSOF 0xA5 Frame#Frame#0x0DD0x0DDCRC5CRC50x150x15EOPEOP001001 SyncSync.

USBUSB

DeviceDevice

CommandoCommando: transferencia OUT : transferencia OUT finaliza la etapa de datosfinaliza la etapa de datos

SyncSyncSyncSync

00000001000000010000000100000001SOFSOFSOFSOF

0xA50xA50xA50xA5Frame#Frame#Frame#Frame#

0x15C0x15C0x15C0x15CCRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001OUTOUTOUTOUT

0x0x87870x0x8787ADDRADDRADDRADDR

0x020x020x020x02ENDPENDPENDPENDP

0x00x00x00x0CRC5CRC5CRC5CRC5

0x150x150x150x15EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001DATA1DATA1DATA1DATA1

0x0xD2D20x0xD2D2DATADATADATADATA CRC16CRC16CRC16CRC16

0x00000x00000x00000x0000EOPEOPEOPEOP

001001001001

SyncSyncSyncSync

00000001000000010000000100000001ACKACKACKACK

0x0x4B4B0x0x4B4BEOPEOPEOPEOP

001001001001

Data stage Status stage


Recommended