The CONTROL transaction starts in the usual way, with the EZ-USB core transferring the
eight bytes in the SETUP packet into RAM at SETUPDAT and activating the SUDAV
interrupt request. The 8051 decodes the Get_Descriptor request, and responds by clearing
the HSNAK bit (by writing “1” to it), and then loading the SUDPTR registers with the
address of the requested descriptor. Loading the SUDPTRL register causes the EZ-USB
core to automatically respond to two IN transfers with 64 bytes and 27 bytes of data using
SUDPTR as a base address, and then to respond to (ACK) the STATUS stage.
The usual endpoint zero interrupts, SUDAV and EP0IN, remain active during this auto-
mated transfer. The 8051 normally disables these interrupts because the transfer requires
no 8051 intervention.
Three types of descriptors are defined: Device, Configuration, and String.
7.3.4.1
Get Descriptor-Device
Table 7-10. Get Descriptor-Device
Value Meaning
Byte
Field
bmRequestType
bRequest
8051 Response
0
1
2
3
0x80 IN, Device
0x06 “Get_Descriptor”
0x00
Set SUDPTR H-L to start of
Device Descriptor table in RAM
wValueL
wValueH
0x01 Descriptor Type:
Device
4
5
6
7
wIndexL
wIndexH
wLengthL
wLengthH
0x00
0x00
LenL
LenH
As illustrated in Figure 7-5, the 8051 loads the 2-byte SUDPTR with the starting address
of the Device Descriptor table. When SUDPTRL is loaded, the EZ-USB core performs
the following operations:
1. Reads the requested number of bytes for the transfer from bytes 6 and 7 of the
SETUP packet (LenL and LenH in Table 7-11).
2. Reads the requested string’s descriptor to determine the actual string length.
3. Sends the smaller of (a) the requested number of bytes or (b) the actual number of
bytes in the string, over IN0BUF using the Setup Data Pointer as a data table
Page 7-14
Chapter 7. EZ-USB CPU
EZ-USB TRM v1.9