USB Component  Version 6.13.6
MDK Middleware for USB Device and Host Communication
 All Data Structures Functions Variables Enumerations Enumerator Groups Pages
Control Transfers

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:

  1. 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.
    ctrlTransferSetup.png
    Control SETUP Transaction Format

  2. 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.
  3. 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.
    ctrlTransferRedWriteSeq.png
    Control Read and Write Sequences