Control Transfers are bi-directional transfers reserved for the host to send and request configuration information to and from the device using the IN and OUT Endpoint 0.
Each Control Transfer consists of 2 to several transactions. The maximum packet size for the control endpoint data is:
- 8 bytes for low-speed
- 8, 16, 32, or 64 bytes for full-speed
- 64 bytes for high-speed
In general, the application software does not use this type of transfer.
Control Transfers have three stages:
- The SETUP stage carries 8 bytes called the Setup packet, defining the request, and specifying how many data should be transferred in the DATA stage.
Control SETUP Transaction Format
- The DATA stage is optional. If present, it always starts with a transaction containing a DATA1 packet. Then, the transaction type alternates between DATA0 and DATA1 until all required data have been transferred.
- The STATUS stage is a transaction containing a zero-length DATA1 packet. If the DATA stage was IN, then the STATUS stage is OUT, and vice-versa.
Control Read and Write Sequences