Výsledkem práce je série zařízení, která demonstrují použití mikrokontroléru AVR při realizaci USB zařízení. Obvody plní funkci univerzálního vstupně-výstupního zařízení. Nejvýznamější verze používají procesory ATtiny2313 a ATmega8. Přehled použitých obvodů, zdrojů hodinového signálu, pouzder a poskytovaných funkcí je uveden v následující tabulce:
Procesor | Pouzdro | Frekvence | Typ hodin | Konektor | USB vlastnosti | Funkce |
ATtiny13 | SOIC 8 DIL 8 | 12MHz 10,5MHz 9MHz | vnitřní RC oscilátor | USB-A | nestabilní hodiny, nefunkční |
ATtiny13 | SOIC 8 | 19,5MHz | mini-oscilátor | USB-A | 2 endpointy | SPI rozhraní |
ATtiny13 | DIL 8 | 12MHz | DIL14-oscilátor | USB-A | 2 endpointy | SPI rozhraní |
ATtiny2313 | SOIC 20 | 18MHz | krystal | USB-A | 4 endpointy | SERIAL+PARALLEL |
ATmega8 | TQFP 32 | 15MHz | krystal | USB-B | třída CDC | SPI, ADC, SERIAL, I2C, PWM, PARALLEL |
ATtiny13 - 12MHz
 | USB s ATtiny13 | Konektor je použit jednak pro programování obvodu ATtiny13 přes rozhraní SPI a také jako výstupní brána synchronní sériové komunikace.
Konektor zařízení s ATtiny13 (z hlediska programování):
1
RESET
PB5
|
2
GND
pin 4
|
3
Vcc
pin 8
|
4
SCK
PB2
|
5
MISO
PB1
|
6
MOSI
PB0
|
Konektor zařízení s ATtiny13 (z hlediska použití):
1
RESET
PB5
|
2
GND
pin 4
|
3
Vcc
pin 8
|
4
SCK
PB2
|
5
MOSI
PB1
|
6
(DP)
PB0
|
Pinout ATtiny13:
8
Vcc
|
7
PB2
SCK
|
6
PB1
MISO
|
5
PB0
MOSI
USB DP |
1
PB5
RESET
|
2
PB3
CLKI
|
3
PB4
USB DM
|
4
GND
|
Konfigurace pinů jsou ovlivněny vynucenou přítomností externího hodinového signálu, který zabírá pin 2. Počet dostupných pinů je též omezen vstupem RESET, který je nutný pro sériové nízkonapěťové programování. Existuje též vysokonapěťové programování (12,5V), které nevyžaduje přítomnost RESETu. Bohužel programátor, který umí vysokonapěťový programovací protokol, je konstrukčně složitější a není vhodný pro ISP - In System Programming. Pokud by se ale jednalo o vícekusovou výrobu, vyplatilo by se vysokonapěťové programování a ušetřený pin by se mohl věnovat na realizaci obousměrného SPI (v současné konfiguraci lze realizovat pouze výstupní část SPI portu).
Deskriptory zařízení:
Device Descriptor
Offset | Popis | Hodnota |
0 | bLength | 0x12 |
1 | bDescriptorType | 0x01 |
2,3 | bcdUSB | 0x0100 |
4 | bDeviceClass | 0x00 |
5 | bDeviceSubClass | 0x00 |
6 | bDeviceProtocol | 0x00 |
7 | bMaxPacketSize | 0x08 |
8,9 | idVendor | 0x065d |
10,11 | idProduct | 0x1013 |
12,13 | bcdDevice | 0x0004 |
14 | iManufacturer | 0x00 |
15 | iProduct | 0x01 |
16 | iSerialNumber | 0x00 |
17 | bNumConfigurations | 0x01 |
Configuration Descriptor (spojení Configuration, Interface a Endpoint descriptoru)
Offset | Popis | Hodnota |
Configuration Descriptor |
0 | bLength | 0x09 |
1 | bDescriptorType | 0x02 |
2,3 | wTotalLenght | 0x0019 |
4 | bNumInterfaces | 0x01 |
5 | bConfigurationValue | 0x01 |
6 | iConfiguration | 0x00 |
7 | bmAttributes | 0x80 |
8 | bMaxPower | 0x32 |
Interface Descriptor |
9 | bLength | 0x09 |
10 | bDescriptorType | 0x04 |
11 | bInterfaceNumber | 0x00 |
12 | bAlternateSetting | 0x00 |
13 | bNumEndpoints | 0x01 |
14 | bInterfaceClass | 0x00 |
15 | bInterfaceSubClass | 0x00 |
16 | bInterfaceProtocol | 0x00 |
17 | iInterface | 0x00 |
Endpoint 1 Descriptor |
18 | bLength | 0x07 |
19 | bDescriptionType | 0x05 |
20 | bEndpointAddress | 0x01 |
21 | bmAttributes | 0x02 |
22,23 | wMaxPacketSize | 0x0001 |
24 | bInterval | 0x00 |
Deskriptory budou odeslány v následujících paketech:
Device Descriptor:
DATA1 packet - CRC 0xe713 - Device Descriptor
80 4B 12 01 00 01 00 00 00 08 13 E7 eop |
DATA0 packet - CRC 0xc11e - Device Descriptor
80 C3 5D 06 13 10 04 00 00 01 1E C1 eop |
DATA1 packet - CRC 0x8f3f - Device Descriptor
80 4B 00 01 3F 8F eop |
Configuration Descriptors:
DATA1 packet - CRC 0xcb0f - Configuration Descriptor
80 4B 09 02 19 00 01 01 00 80 0F CB eop |
DATA0 packet - CRC 0x7df4 - Configuration Descriptor a Interface Descriptor
80 C3 32 09 04 00 00 01 00 00 F4 7D eop |
DATA1 packet - CRC 0xefd3 - Interface Descriptor a Endpoint 1 Descriptor
80 4B 00 00 07 05 01 02 01 00 D3 EF eop |
DATA0 packet - CRC 0xbf40 - Endpoint 1 Descriptor
80 C3 00 40 BF eop |
Pakety jsou zakódovány přímo do programové paměti, protože čtení z EEPROM je příliš pomalé.
ATtiny13 - 19,5 MHz
 | USB s ATtiny13 | Konektor je použit jednak pro programování obvodu ATtiny13 přes rozhraní SPI a také jako vstupní brána analogově-digitálního převodníku a výstupní brána PWM budiče.
Konektor zařízení s ATtiny13 (z hlediska programování):
1
RESET
PB5
|
2
GND
pin 4
|
3
Vcc
pin 8
|
4
SCK
PB2
|
5
MISO
PB1
|
6
MOSI
PB0
|
Konektor zařízení s ATtiny13 (z hlediska použití):
1
RESET
PB5
|
2
GND
pin 4
|
3
Vcc
pin 8
|
4
ADC
PB2
|
5
PWM
PB1
|
6
(DP)
PB0
|
Pinout ATtiny13:
8
Vcc
|
7
PB2
SCK
ADC |
6
PB1
MISO
PWM |
5
PB0
MOSI
USB DP |
1
PB5
RESET
|
2
PB3
CLKI
|
3
PB4
USB DM
|
4
GND
|
Zařízení obsahuje dva endpointy, jeden vstupní (A/D převodník) a jeden výstupní (PWM budič). Pomocí dolnopropustního filtru lze PWM budič přeměnit na D/A převodník a realizovat tak analogový regulační obvod. Oproti verzi běžící na 12MHz je k dispozici více programové paměti, čtení z EEPROM je dostatečně rychlé a tudíž je možné implementovat i jednoduchý string descriptor - název zařízení (znaky AD).
Deskriptory zařízení:
Device Descriptor
Offset | Popis | Hodnota |
0 | bLength | 0x12 |
1 | bDescriptorType | 0x01 |
2,3 | bcdUSB | 0x0100 |
4 | bDeviceClass | 0x00 |
5 | bDeviceSubClass | 0x00 |
6 | bDeviceProtocol | 0x00 |
7 | bMaxPacketSize | 0x08 |
8,9 | idVendor | 0x065d |
10,11 | idProduct | 0x1015 |
12,13 | bcdDevice | 0x0004 |
14 | iManufacturer | 0x00 |
15 | iProduct | 0x01 |
16 | iSerialNumber | 0x00 |
17 | bNumConfigurations | 0x01 |
Configuration Descriptor (spojení Configuration, Interface a Endpoint descriptoru)
Offset | Popis | Hodnota |
Configuration Descriptor |
0 | bLength | 0x09 |
1 | bDescriptorType | 0x02 |
2,3 | wTotalLenght | 0x0020 |
4 | bNumInterfaces | 0x01 |
5 | bConfigurationValue | 0x01 |
6 | iConfiguration | 0x00 |
7 | bmAttributes | 0x80 |
8 | bMaxPower | 0x32 |
Interface Descriptor |
9 | bLength | 0x09 |
10 | bDescriptorType | 0x04 |
11 | bInterfaceNumber | 0x00 |
12 | bAlternateSetting | 0x00 |
13 | bNumEndpoints | 0x02 |
14 | bInterfaceClass | 0x00 |
15 | bInterfaceSubClass | 0x00 |
16 | bInterfaceProtocol | 0x00 |
17 | iInterface | 0x00 |
Endpoint 1 Descriptor |
18 | bLength | 0x07 |
19 | bDescriptionType | 0x05 |
20 | bEndpointAddress | 0x01 |
21 | bmAttributes | 0x02 |
22,23 | wMaxPacketSize | 0x0002 |
24 | bInterval | 0x00 |
Endpoint 2 Descriptor |
25 | bLength | 0x07 |
26 | bDescriptionType | 0x05 |
27 | bEndpointAddress | 0x82 |
28 | bmAttributes | 0x02 |
29,30 | wMaxPacketSize | 0x0002 |
31 | bInterval | 0x00 |
Deskriptory budou odeslány v následujících paketech:
Device Descriptor:
DATA1 packet - CRC 0xe713 - Device Descriptor
80 4B 12 01 00 01 00 00 00 08 13 E7 eop |
DATA0 packet - CRC 0xa71e - Device Descriptor
80 C3 5D 06 15 10 04 00 00 01 1E A7 eop |
DATA1 packet - CRC 0x8f3f - Device Descriptor
80 4B 00 01 3F 8F eop |
Configuration Descriptors:
DATA1 packet - CRC 0xa20a - Configuration Descriptor
80 4B 09 02 20 00 01 01 00 80 0A A2 eop |
DATA0 packet - CRC 0x7d04 - Configuration Descriptor a Interface Descriptor
80 C3 32 09 04 00 00 02 00 00 04 7D eop |
DATA1 packet - CRC 0xefd3 - Interface Descriptor a Endpoint 1 Descriptor
80 4B 00 00 07 05 01 02 02 00 D3 1F eop |
DATA0 packet - CRC 0x07e1 - Endpoint 1 a 2 Descriptor
80 C3 00 07 05 82 02 02 00 00 11 07 eop |
EEPROM:
00: | 4B 12 01 00 01 00 00 00 08 13 E7 |
0b: | C3 5D 06 15 10 04 00 00 01 1E A7 |
16: | 4B 09 02 20 00 01 01 00 80 0A A2 |
21: | C3 32 09 04 00 00 02 00 00 04 7D |
2c: | 4B 00 00 07 05 01 02 02 00 D3 1F |
Implementace v programové paměti:
4B 00 01 3F 8F |
C3 00 07 05 82 02 02 00 00 11 07 |
ATtiny2313
 | Obr. 1 - USB s ATtiny2313 - strana spojů |
|
 | Obr. 2 - USB s ATtiny2313 - strana součástek |
|
Deska s tištenými spoji je navržena tak, aby se dala zasunout do nepájivého kontaktního pole.
|
 | Obr. 3 - zapojení do kontaktního pole |
|
 | Obr. 4 - experimentální přípravek |
|
Konektor na straně spojů je určen pro programování a sdílí s datovým konektorem 3 vodiče.
Programovací konektor USB zařízení s ATtiny2313:
1
RESET
PA2
|
2
GND
pin 10
|
3
Vcc
pin 20
|
4
SCK
PB7
|
5
MISO
PB6
|
6
MOSI
PB5
|
Ve standardní konfiguraci poskytuje zařízení 8-bitový obousměrný port, 1 potvrzovací signál (STROBE) a synchronní/asynchronní sériový port. Pokud uživatel vyžaduje SPI port, může zařízení provozovat v alternativní konfiguraci, která místo horních čtyřech bitů obousměrného portu poskytuje SPI port (MOSI, MISO, SCK, CS). Porty jsou navrženy s cílem co nejméně omezovat uživatele v použití výstupů. Tvar desky a výstupních pinů umožňuje zasunutí do kontaktního nepájivého pole. Zařízení je určeno pro experimentování a má sloužit jako efektivnější alternativa k paralelnímu a sériovému portu PC. Přítomnost potvrzovacího signálu STROBE usnadňuje realizaci obousměrných sběrnic (STROBE potvrzuje data náběžnou hranou po zapsání nového bytu). Port sériové linky se skládá ze signálu RxD a TxD (příchozí a odchozí data) a signálu xCK, který vysílá náběžnou hranu synchronně s platnými daty a umožňuje přímé buzení posuvného registru přijímače.
Sériová část datového konektoru ATtiny2313:
1
RxD
PD0
|
2
TxD
PD1
|
3
xCK
PD2
|
4
GND
|
Paralelní část datového konektoru ATtiny2313:
1
D7
PB7
|
2
D6
PB6
|
3
D5
PB5
|
4
D4
PB4
|
5
D3
PB3
|
6
D2
PB2
|
7
D1
PB1
|
8
D0
PB0
|
9
STROBE
PD6
|
10
GND
|
LED (aktivita na USB lince):
 | Obr. 5 - schéma zapojení USB zařízení s ATtiny2313 |
Deskriptory zařízení:
Device Descriptor
Offset | Popis | Hodnota |
0 | bLength | 0x12 |
1 | bDescriptorType | 0x01 |
2,3 | bcdUSB | 0x0110 |
4 | bDeviceClass | 0x02 |
5 | bDeviceSubClass | 0x00 |
6 | bDeviceProtocol | 0x00 |
7 | bMaxPacketSize | 0x08 |
8,9 | idVendor | 0x065d |
10,11 | idProduct | 0x1017 |
12,13 | bcdDevice | 0x0004 |
14 | iManufacturer | 0x00 |
15 | iProduct | 0x00 |
16 | iSerialNumber | 0x00 |
17 | bNumConfigurations | 0x01 |
Configuration Descriptor (spojení Configuration, Interface a Endpoint descriptoru)
Offset | Popis | Hodnota |
Configuration Descriptor |
0 | bLength | 0x09 |
1 | bDescriptorType | 0x02 |
2,3 | wTotalLenght | 0x0043 |
4 | bNumInterfaces | 0x02 |
5 | bConfigurationValue | 0x01 |
6 | iConfiguration | 0x00 |
7 | bmAttributes | 0x80 |
8 | bMaxPower | 0x32 |
Interface 0 Descriptor |
9 | bLength | 0x09 |
10 | bDescriptorType | 0x04 |
11 | bInterfaceNumber | 0x00 |
12 | bAlternateSetting | 0x00 |
13 | bNumEndpoints | 0x01 |
14 | bInterfaceClass | 0x02 |
15 | bInterfaceSubClass | 0x02 |
16 | bInterfaceProtocol | 0x01 |
17 | iInterface | 0x00 |
CDC - Header Functional Descriptor |
18 | bLength | 0x05 |
19 | bDescriptorType | 0x24 |
20 | bDescriptorSubtype | 0x00 - Header Functional Descriptor |
21,22 | bcdCDC | 0x0110 |
CDC - Call Management Functional Descriptor |
23 | bLength | 0x05 |
24 | bDescriptorType | 0x24 |
25 | bDescriptorSubtype | 0x01 - Call Management Functional Descriptor |
26 | bmCapabilities | 0x01 |
27 | bDataInterface | 0x01 |
CDC - Abstract Control Management Functional Descriptor |
28 | bLength | 0x04 |
29 | bDescriptorType | 0x24 |
30 | bDescriptorSubtype | 0x02 - Abstract Control Management Functional Descriptor |
31 | bmCapabilities | 0x02 |
CDC - Union Functional Descriptor |
32 | bLength | 0x05 |
33 | bDescriptorType | 0x24 |
34 | bDescriptorSubtype | 0x06 - Union Functional Descriptor |
35 | bMasterInterface | 0x00 |
36 | bSlaveInterface | 0x01 |
Endpoint 3 Descriptor |
37 | bLength | 0x07 |
38 | bDescriptorType | 0x05 |
39 | bEndpointAddress | 0x83 |
40 | bmAttributes | 0x03 |
41,42 | wMaxPacketSize | 0x0008 |
43 | bInterval | 0xff |
Interface 1 Descriptor |
44 | bLength | 0x09 |
45 | bDescriptorType | 0x04 |
46 | bInterfaceNumber | 0x01 |
47 | bAlternateSetting | 0x00 |
48 | bNumEndpoints | 0x02 |
49 | bInterfaceClass | 0x0A |
50 | bInterfaceSubClass | 0x00 |
51 | bInterfaceProtocol | 0x00 |
52 | iInterface | 0x00 |
Endpoint 1 Descriptor |
53 | bLength | 0x07 |
54 | bDescriptorType | 0x05 |
55 | bEndpointAddress | 0x81 |
56 | bmAttributes | 0x02 |
57,58 | wMaxPacketSize | 0x0008 |
59 | bInterval | 0x00 |
Endpoint 2 Descriptor |
60 | bLength | 0x07 |
61 | bDescriptorType | 0x05 |
62 | bEndpointAddress | 0x02 |
63 | bmAttributes | 0x02 |
64,65 | wMaxPacketSize | 0x0001 |
66 | bInterval | 0x00 |
Deskriptory budou odeslány v následujících paketech:
Device Descriptor:
80 4B 12 01 10 01 02 00 00 08 10 CF
80 C3 5D 06 17 10 04 00 00 00 DE 85
80 4B 00 01 3F 8F
|
Configuration Descriptor:
80 4B 09 02 43 00 02 01 00 80 03 75
80 C3 32 09 04 00 00 01 02 02 74 DC
80 4B 01 00 05 24 00 10 01 05 CE 3C
80 C3 24 01 01 01 04 24 02 02 51 54
80 4B 05 24 06 00 01 07 05 83 E9 63
80 C3 03 08 00 FF 09 04 01 00 21 F8
80 4B 02 0A 00 00 00 07 05 81 E6 DC
80 C3 02 08 00 00 07 05 02 02 26 39
80 4B 01 00 00 DF FF
|
ATmega8
 | Obr. 1 - USB s ATmega8 |
Zařízení je určeno jako převodník USB na běžně používané protokoly. Poskytuje škálu výstupů, které nejsou u USB převodníků běžné, a umožňuje experimentální konstrukce, které by obyčejně musely být řešeny přídavnými integrovanými obvody. Rozhraní obvodu pracují na výhradních vodičích a datových rourách bez jakéhokoliv multiplexování. Přístup je realizován jako standardní čtecí/zápisová operace, kterou lze jednoduše provádět ze všech programovacích jazyků od Javy, C++, Delphi až po DOSový Pascal a příkazovou řádku. Zařízení disponuje sériovou linkou, I2C sběrnicí, SPI portem, paralelním 8-bitovým portem, dvouvstupovým analogově-digitálním převodníkem a speciálním portem s pulzně-šířkovou modulací a řízením směru. Jednoduše lze realizovat různorodé systémy, jako je řízení motorů, vyhodnocování analogových veličin, komunikace s I2C převodníky a pamětmi nebo dokonce ovládání Secure Digital karet, to vše bez speciálních a drahých integrovaných obvodů.
SPI port a programovací konektor USB zařízení s ATmega8:
1
Vcc
|
2
CS/RESET
PB2
|
3
MOSI
PB3
|
4
MISO
PB4
|
5
SCK
PB5
|
6
GND
|
Sériová linka:
1
Vcc
|
2
TxD
PD1
|
3
RxD
PD0
|
4
GND
|
I2C:
1
Vcc
|
2
SCL
PC5
|
3
SDA
PC4
|
4
GND
|
PWM:
1
Vcc
|
2
PWMdir
PB0
|
3
PWM0
PB1
|
4
GND
|
ADC:
1
Vcc
|
2
ADC0
ADC6
|
3
ADC1
ADC7
|
4
GND
|
Paralelní port:
2
GND
|
4
D1
PC1
|
6
D3
PC3
|
8
D5
PD5
|
10
D7
PD7
|
1
Vcc
|
3
D0
PC0
|
5
D2
PC2
|
7
D4
PD4
|
9
D6
PD6
|
 | Obr. 2 - schéma zapojení USB zařízení s ATmega8 |
Deskriptory zařízení:
Device Descriptor
Offset | Popis | Hodnota |
0 | bLength | 0x12 |
1 | bDescriptorType | 0x01 |
2,3 | bcdUSB | 0x0200 |
4 | bDeviceClass | 0xEF |
5 | bDeviceSubClass | 0x02 |
6 | bDeviceProtocol | 0x01 |
7 | bMaxPacketSize | 0x08 |
8,9 | idVendor | 0x065d |
10,11 | idProduct | 0x1019 |
12,13 | bcdDevice | 0x0004 |
14 | iManufacturer | 0x00 |
15 | iProduct | 0x00 |
16 | iSerialNumber | 0x00 |
17 | bNumConfigurations | 0x01 |
Configuration Descriptor (spojení Configuration, Interface a Endpoint descriptoru)
Offset | Popis | Hodnota |
Configuration Descriptor |
0 | bLength | 0x09 |
1 | bDescriptorType | 0x02 |
2,3 | wTotalLenght | 0x0153 |
4 | bNumInterfaces | 0x0a |
5 | bConfigurationValue | 0x01 |
6 | iConfiguration | 0x00 |
7 | bmAttributes | 0x80 |
8 | bMaxPower | 0x32 |
Interface Association Descriptor 0 |
9 | bLength | 0x08 |
10 | bDescriptorType | 0x0B |
11 | bFirstInterface | 0x00 |
12 | bInterfaceCount | 0x02 |
13 | bFunctionClass | 0x02 |
14 | bFunctionSubClass | 0x02 |
15 | bFunctionProtocol | 0x12 |
16 | iFunction | 0x00 |
Interface Association Descriptor 1 |
17 | bLength | 0x08 |
18 | bDescriptorType | 0x0B |
19 | bFirstInterface | 0x02 |
20 | bInterfaceCount | 0x02 |
21 | bFunctionClass | 0x02 |
22 | bFunctionSubClass | 0x02 |
23 | bFunctionProtocol | 0x01 |
24 | iFunction | 0x00 |
Interface Association Descriptor 2 |
25 | bLength | 0x08 |
26 | bDescriptorType | 0x0B |
27 | bFirstInterface | 0x04 |
28 | bInterfaceCount | 0x02 |
29 | bFunctionClass | 0x02 |
30 | bFunctionSubClass | 0x02 |
31 | bFunctionProtocol | 0x01 |
32 | iFunction | 0x00 |
Interface Association Descriptor 3 |
33 | bLength | 0x08 |
34 | bDescriptorType | 0x0B |
35 | bFirstInterface | 0x06 |
36 | bInterfaceCount | 0x02 |
37 | bFunctionClass | 0x02 |
38 | bFunctionSubClass | 0x02 |
39 | bFunctionProtocol | 0x01 |
40 | iFunction | 0x00 |
Interface Association Descriptor 4 |
41 | bLength | 0x08 |
42 | bDescriptorType | 0x0B |
43 | bFirstInterface | 0x08 |
44 | bInterfaceCount | 0x02 |
45 | bFunctionClass | 0x02 |
46 | bFunctionSubClass | 0x02 |
47 | bFunctionProtocol | 0x01 |
48 | iFunction | 0x00 |
Interface 0 Descriptor |
49 | bLength | 0x09 |
50 | bDescriptorType | 0x04 |
51 | bInterfaceNumber | 0x00 |
52 | bAlternateSetting | 0x00 |
53 | bNumEndpoints | 0x01 |
54 | bInterfaceClass | 0x02 |
55 | bInterfaceSubClass | 0x02 |
56 | bInterfaceProtocol | 0x01 |
57 | iInterface | 0x00 |
CDC - Header Functional Descriptor |
58 | bLength | 0x05 |
59 | bDescriptorType | 0x24 |
60 | bDescriptorSubtype | 0x00 - Header Functional Descriptor |
61,62 | bcdCDC | 0x0110 |
CDC - Call Management Functional Descriptor |
63 | bLength | 0x05 |
64 | bDescriptorType | 0x24 |
65 | bDescriptorSubtype | 0x01 - Call Management Functional Descriptor |
66 | bmCapabilities | 0x01 |
67 | bDataInterface | 0x01 |
CDC - Abstract Control Management Functional Descriptor |
68 | bLength | 0x04 |
69 | bDescriptorType | 0x24 |
70 | bDescriptorSubtype | 0x02 - Abstract Control Management Functional Descriptor |
71 | bmCapabilities | 0x02 |
CDC - Union Functional Descriptor |
72 | bLength | 0x05 |
73 | bDescriptorType | 0x24 |
74 | bDescriptorSubtype | 0x06 - Union Functional Descriptor |
75 | bMasterInterface | 0x00 |
76 | bSlaveInterface | 0x01 |
Endpoint 3 Descriptor |
77 | bLength | 0x07 |
78 | bDescriptorType | 0x05 |
79 | bEndpointAddress | 0x83 |
80 | bmAttributes | 0x03 |
81,82 | wMaxPacketSize | 0x0008 |
83 | bInterval | 0xff |
Interface 1 Descriptor |
84 | bLength | 0x09 |
85 | bDescriptorType | 0x04 |
86 | bInterfaceNumber | 0x01 |
87 | bAlternateSetting | 0x00 |
88 | bNumEndpoints | 0x02 |
89 | bInterfaceClass | 0x0A |
90 | bInterfaceSubClass | 0x00 |
91 | bInterfaceProtocol | 0x00 |
92 | iInterface | 0x00 |
Endpoint 1 Descriptor |
93 | bLength | 0x07 |
94 | bDescriptorType | 0x05 |
95 | bEndpointAddress | 0x81 |
96 | bmAttributes | 0x02 |
97,98 | wMaxPacketSize | 0x0002 |
99 | bInterval | 0x00 |
Endpoint 2 Descriptor |
100 | bLength | 0x07 |
101 | bDescriptorType | 0x05 |
102 | bEndpointAddress | 0x02 |
103 | bmAttributes | 0x02 |
104,105 | wMaxPacketSize | 0x0001 |
106 | bInterval | 0x00 |
Interface 2 Descriptor |
107 | bLength | 0x09 |
108 | bDescriptorType | 0x04 |
109 | bInterfaceNumber | 0x02 |
110 | bAlternateSetting | 0x00 |
111 | bNumEndpoints | 0x01 |
112 | bInterfaceClass | 0x02 |
113 | bInterfaceSubClass | 0x02 |
114 | bInterfaceProtocol | 0x01 |
115 | iInterface | 0x00 |
CDC - Header Functional Descriptor |
116 | bLength | 0x05 |
117 | bDescriptorType | 0x24 |
118 | bDescriptorSubtype | 0x00 - Header Functional Descriptor |
119,120 | bcdCDC | 0x0110 |
CDC - Call Management Functional Descriptor |
121 | bLength | 0x05 |
122 | bDescriptorType | 0x24 |
123 | bDescriptorSubtype | 0x01 - Call Management Functional Descriptor |
124 | bmCapabilities | 0x01 |
125 | bDataInterface | 0x02 |
CDC - Abstract Control Management Functional Descriptor |
126 | bLength | 0x04 |
127 | bDescriptorType | 0x24 |
128 | bDescriptorSubtype | 0x02 - Abstract Control Management Functional Descriptor |
129 | bmCapabilities | 0x02 |
CDC - Union Functional Descriptor |
130 | bLength | 0x05 |
131 | bDescriptorType | 0x24 |
132 | bDescriptorSubtype | 0x06 - Union Functional Descriptor |
133 | bMasterInterface | 0x02 |
134 | bSlaveInterface | 0x03 |
Endpoint 6 Descriptor |
135 | bLength | 0x07 |
136 | bDescriptorType | 0x05 |
137 | bEndpointAddress | 0x86 |
138 | bmAttributes | 0x03 |
139,140 | wMaxPacketSize | 0x0008 |
141 | bInterval | 0xff |
Interface 3 Descriptor |
142 | bLength | 0x09 |
143 | bDescriptorType | 0x04 |
144 | bInterfaceNumber | 0x03 |
145 | bAlternateSetting | 0x00 |
146 | bNumEndpoints | 0x02 |
147 | bInterfaceClass | 0x0A |
148 | bInterfaceSubClass | 0x00 |
149 | bInterfaceProtocol | 0x00 |
150 | iInterface | 0x00 |
Endpoint 4 Descriptor |
151 | bLength | 0x07 |
152 | bDescriptorType | 0x05 |
153 | bEndpointAddress | 0x84 |
154 | bmAttributes | 0x02 |
155,156 | wMaxPacketSize | 0x0002 |
157 | bInterval | 0x00 |
Endpoint 5 Descriptor |
158 | bLength | 0x07 |
159 | bDescriptorType | 0x05 |
160 | bEndpointAddress | 0x05 |
161 | bmAttributes | 0x02 |
162,163 | wMaxPacketSize | 0x0001 |
164 | bInterval | 0x00 |
Interface 4 Descriptor |
165 | bLength | 0x09 |
166 | bDescriptorType | 0x04 |
167 | bInterfaceNumber | 0x04 |
168 | bAlternateSetting | 0x00 |
169 | bNumEndpoints | 0x01 |
170 | bInterfaceClass | 0x02 |
171 | bInterfaceSubClass | 0x02 |
172 | bInterfaceProtocol | 0x01 |
173 | iInterface | 0x00 |
CDC - Header Functional Descriptor |
174 | bLength | 0x05 |
175 | bDescriptorType | 0x24 |
176 | bDescriptorSubtype | 0x00 - Header Functional Descriptor |
177,178 | bcdCDC | 0x0110 |
CDC - Call Management Functional Descriptor |
179 | bLength | 0x05 |
180 | bDescriptorType | 0x24 |
181 | bDescriptorSubtype | 0x01 - Call Management Functional Descriptor |
182 | bmCapabilities | 0x01 |
183 | bDataInterface | 0x02 |
CDC - Abstract Control Management Functional Descriptor |
184 | bLength | 0x04 |
185 | bDescriptorType | 0x24 |
186 | bDescriptorSubtype | 0x02 - Abstract Control Management Functional Descriptor |
187 | bmCapabilities | 0x02 |
CDC - Union Functional Descriptor |
188 | bLength | 0x05 |
189 | bDescriptorType | 0x24 |
190 | bDescriptorSubtype | 0x06 - Union Functional Descriptor |
191 | bMasterInterface | 0x04 |
192 | bSlaveInterface | 0x05 |
Endpoint 9 Descriptor |
193 | bLength | 0x07 |
194 | bDescriptorType | 0x05 |
195 | bEndpointAddress | 0x89 |
196 | bmAttributes | 0x03 |
197,198 | wMaxPacketSize | 0x0008 |
199 | bInterval | 0xff |
Interface 5 Descriptor |
200 | bLength | 0x09 |
201 | bDescriptorType | 0x04 |
202 | bInterfaceNumber | 0x05 |
203 | bAlternateSetting | 0x00 |
204 | bNumEndpoints | 0x02 |
205 | bInterfaceClass | 0x0A |
206 | bInterfaceSubClass | 0x00 |
207 | bInterfaceProtocol | 0x00 |
208 | iInterface | 0x00 |
Endpoint 7 Descriptor |
209 | bLength | 0x07 |
210 | bDescriptorType | 0x05 |
211 | bEndpointAddress | 0x87 |
212 | bmAttributes | 0x02 |
213,214 | wMaxPacketSize | 0x0002 |
215 | bInterval | 0x00 |
Endpoint 8 Descriptor |
216 | bLength | 0x07 |
217 | bDescriptorType | 0x05 |
218 | bEndpointAddress | 0x08 |
219 | bmAttributes | 0x02 |
220,221 | wMaxPacketSize | 0x0001 |
222 | bInterval | 0x00 |
Interface 6 Descriptor |
223 | bLength | 0x09 |
224 | bDescriptorType | 0x04 |
225 | bInterfaceNumber | 0x06 |
226 | bAlternateSetting | 0x00 |
227 | bNumEndpoints | 0x01 |
228 | bInterfaceClass | 0x02 |
229 | bInterfaceSubClass | 0x02 |
230 | bInterfaceProtocol | 0x01 |
231 | iInterface | 0x00 |
CDC - Header Functional Descriptor |
232 | bLength | 0x05 |
233 | bDescriptorType | 0x24 |
234 | bDescriptorSubtype | 0x00 - Header Functional Descriptor |
235,236 | bcdCDC | 0x0110 |
CDC - Call Management Functional Descriptor |
237 | bLength | 0x05 |
238 | bDescriptorType | 0x24 |
239 | bDescriptorSubtype | 0x01 - Call Management Functional Descriptor |
240 | bmCapabilities | 0x01 |
241 | bDataInterface | 0x02 |
CDC - Abstract Control Management Functional Descriptor |
242 | bLength | 0x04 |
243 | bDescriptorType | 0x24 |
244 | bDescriptorSubtype | 0x02 - Abstract Control Management Functional Descriptor |
245 | bmCapabilities | 0x02 |
CDC - Union Functional Descriptor |
246 | bLength | 0x05 |
247 | bDescriptorType | 0x24 |
248 | bDescriptorSubtype | 0x06 - Union Functional Descriptor |
249 | bMasterInterface | 0x06 |
250 | bSlaveInterface | 0x07 |
Endpoint 12 Descriptor |
251 | bLength | 0x07 |
252 | bDescriptorType | 0x05 |
253 | bEndpointAddress | 0x8c |
254 | bmAttributes | 0x03 |
255,256 | wMaxPacketSize | 0x0008 |
257 | bInterval | 0xff |
Interface 7 Descriptor |
258 | bLength | 0x09 |
259 | bDescriptorType | 0x04 |
260 | bInterfaceNumber | 0x07 |
261 | bAlternateSetting | 0x00 |
262 | bNumEndpoints | 0x02 |
263 | bInterfaceClass | 0x0A |
264 | bInterfaceSubClass | 0x00 |
265 | bInterfaceProtocol | 0x00 |
266 | iInterface | 0x00 |
Endpoint 10 Descriptor |
267 | bLength | 0x07 |
268 | bDescriptorType | 0x05 |
269 | bEndpointAddress | 0x8a |
270 | bmAttributes | 0x02 |
271,272 | wMaxPacketSize | 0x0002 |
273 | bInterval | 0x00 |
Endpoint 11 Descriptor |
274 | bLength | 0x07 |
275 | bDescriptorType | 0x05 |
276 | bEndpointAddress | 0x0b |
277 | bmAttributes | 0x02 |
278,279 | wMaxPacketSize | 0x0001 |
280 | bInterval | 0x00 |
Interface 8 Descriptor |
281 | bLength | 0x09 |
282 | bDescriptorType | 0x04 |
283 | bInterfaceNumber | 0x08 |
284 | bAlternateSetting | 0x00 |
285 | bNumEndpoints | 0x01 |
286 | bInterfaceClass | 0x02 |
287 | bInterfaceSubClass | 0x02 |
288 | bInterfaceProtocol | 0x01 |
289 | iInterface | 0x00 |
CDC - Header Functional Descriptor |
290 | bLength | 0x05 |
291 | bDescriptorType | 0x24 |
292 | bDescriptorSubtype | 0x00 - Header Functional Descriptor |
293,294 | bcdCDC | 0x0110 |
CDC - Call Management Functional Descriptor |
295 | bLength | 0x05 |
296 | bDescriptorType | 0x24 |
297 | bDescriptorSubtype | 0x01 - Call Management Functional Descriptor |
298 | bmCapabilities | 0x01 |
299 | bDataInterface | 0x02 |
CDC - Abstract Control Management Functional Descriptor |
300 | bLength | 0x04 |
301 | bDescriptorType | 0x24 |
302 | bDescriptorSubtype | 0x02 - Abstract Control Management Functional Descriptor |
303 | bmCapabilities | 0x02 |
CDC - Union Functional Descriptor |
304 | bLength | 0x05 |
305 | bDescriptorType | 0x24 |
306 | bDescriptorSubtype | 0x06 - Union Functional Descriptor |
307 | bMasterInterface | 0x08 |
308 | bSlaveInterface | 0x09 |
Endpoint 15 Descriptor |
309 | bLength | 0x07 |
310 | bDescriptorType | 0x05 |
311 | bEndpointAddress | 0x8f |
312 | bmAttributes | 0x03 |
313,314 | wMaxPacketSize | 0x0008 |
315 | bInterval | 0xff |
Interface 9 Descriptor |
316 | bLength | 0x09 |
317 | bDescriptorType | 0x04 |
318 | bInterfaceNumber | 0x09 |
319 | bAlternateSetting | 0x00 |
320 | bNumEndpoints | 0x02 |
321 | bInterfaceClass | 0x0A |
322 | bInterfaceSubClass | 0x00 |
323 | bInterfaceProtocol | 0x00 |
324 | iInterface | 0x00 |
Endpoint 13 Descriptor |
325 | bLength | 0x07 |
326 | bDescriptorType | 0x05 |
327 | bEndpointAddress | 0x8d |
328 | bmAttributes | 0x02 |
329,330 | wMaxPacketSize | 0x0002 |
331 | bInterval | 0x00 |
Endpoint 14 Descriptor |
332 | bLength | 0x07 |
333 | bDescriptorType | 0x05 |
334 | bEndpointAddress | 0x0e |
335 | bmAttributes | 0x02 |
336,337 | wMaxPacketSize | 0x0001 |
338 | bInterval | 0x00 |
Deskriptory budou odeslány v následujících paketech:
Device Descriptor:
80 4B 12 01 00 02 EF 02 01 08 C3 63
80 C3 5D 06 19 10 04 00 00 00 DF AB
80 4B 00 01 3F 8F
|
Configuration Descriptor:
80 4B 09 02 53 01 0A 01 00 80 3E 45
80 C3 32 08 0B 00 02 02 02 12 94 97
80 4B 00 08 0B 02 02 02 02 01 2E 57
80 C3 00 08 0B 04 02 02 02 01 A6 57
80 4B 00 08 0B 06 02 02 02 01 DF 97
80 C3 00 08 0B 08 02 02 02 01 B6 56
80 4B 00 09 04 00 00 01 02 02 F6 11
80 C3 01 00 05 24 00 10 01 05 CE 3C
80 4B 24 01 01 01 04 24 02 02 51 54
80 C3 05 24 06 00 01 07 05 83 E9 63
80 4B 03 08 00 FF 09 04 01 00 21 F8
80 C3 02 0A 00 00 00 07 05 81 E6 DC
80 4B 02 02 00 00 07 05 02 02 8C 39
80 C3 01 00 00 09 04 02 00 01 C3 09
80 4B 02 02 01 00 05 24 00 10 5D 37
80 C3 01 05 24 01 01 02 04 24 B2 FB
80 4B 02 02 05 24 06 02 03 07 8D C5
80 C3 05 86 03 08 00 FF 09 04 4E 52
80 4B 03 00 02 0A 00 00 00 07 27 C0
80 C3 05 84 02 02 00 00 07 05 01 D2
80 4B 05 02 01 00 00 09 04 04 8E DB
80 C3 00 01 02 02 01 00 05 24 D5 A1
80 4B 00 10 01 05 24 01 01 02 B8 85
80 C3 04 24 02 02 05 24 06 04 E0 83
80 4B 05 07 05 89 03 08 00 FF 15 47
80 C3 09 04 05 00 02 0A 00 00 1B B1
80 4B 00 07 05 87 02 02 00 00 DD 07
80 C3 07 05 08 02 01 00 00 09 12 60
80 4B 04 06 00 01 02 02 01 00 44 2F
80 C3 05 24 00 10 01 05 24 01 11 37
80 4B 01 02 04 24 02 02 05 24 8F 48
80 C3 06 06 07 07 05 8C 03 08 2D B8
80 4B 00 FF 09 04 07 00 02 0A C1 B1
80 C3 00 00 00 07 05 8A 02 02 AB B3
80 4B 00 00 07 05 0B 02 01 00 D0 37
80 C3 00 09 04 08 00 01 02 02 17 D0
80 4B 01 00 05 24 00 10 01 05 CE 3C
80 C3 24 01 01 02 04 24 02 02 15 54
80 4B 05 24 06 08 09 07 05 8F 0A C7
80 C3 03 08 00 FF 09 04 09 00 26 38
80 4B 02 0A 00 00 00 07 05 8D E6 D9
80 C3 02 02 00 00 07 05 0E 02 89 39
80 4B 01 00 00 DF FF
|
|