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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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