USB Transactions

Universal Serial Bus (USB) transactions are initiated by the Host and intended to complete a communications event. In addition to a synchronizing preamble, transactions can have up to three packets:

  • Token: Sent by the Host and describes the type of transaction
  • Data: Depending on the transaction type, this is optional. This is the data payload that is sent by the Host for OUT transactions and by the Device for IN transactions
  • Handshake: Status of the communications request

Token Packets
OUT0001bBeginning of OUT transaction
IN1001bStart of an IN transaction
SETUP0101bSignals beginning of a Control Transaction
SOF1101bStart of Frame packet
Data Packets
DATA00010bClears the toggle bit in the data packet
DATA11011bSets the toggle bit in the data packet
Handshake
ACK0110bTransmission successfully completed
NACK1010bTransmission unsuccessful
STALL1110bDelayed response, retry needed

If the Device responds to the Host request and the associated Cyclic Redundancy Check (CRC) is correct, the entire communications event is conducted within one transaction. If the Device responds with a NACK or a STALL, depending upon the application requirements, the Host will retry the transaction on the next scheduled frame. After several unsuccessful retries, the Host may suspend the Device with a control command.

Sample USB Transactions

OUT Transactions

IN Transactions

 Learn More