12-6 Intel® PXA255 Processor Developer’s Manual
USB Device Controller

12.3.4.3 Data Packet Type

Data packets follow Token packets and are used to transmit data between the host and UDC. The
PID specifies two types of Data packets: DATA0 and DATA1. These Data packets are used to
provide a mechanism to ensure that the data sequence between the transmitter and receiver is
synchronized across multiple transactions. During the handshake phas e, the transmitter and
receiver determine which data token type to transmit first. For each subsequent packet transmitted,
the data packet type is toggled (DATA0, DATA1, DATA0, and so on). A Data packet consist s of a
Sync, a PID, from 0 to 1023 bytes of data, and a CRC16 field (see Table12-5). The UDC supports
a maximum of eight bytes of data for an Interrupt IN data payload, a maximum of 64 bytes of data
for a Bulk data payload and a maximum of 256 bytes of data for an Isochronous data payload.

12.3.4.4 Handshake Packet Type

Handshake packets consist of a Sync and a PID. Handsh ake packets do not contain a CRC because
the PID contains its own check field. Handshake packets are used to report data transaction status,
including confirmation that data was successfully rec eived , flo w co ntrol , and s ta ll condi tio ns. Only
transactions that support flow control can retur n ha ndsha kes . The thre e types of ha nds hake packe ts
are: ACK, NAK, and STALL. ACK indicates that a data packet was received without bit stuffing,
CRC, or PID check errors. NAK indicates that the UDC was unable to accept data from the host or
has no data to transmit. STALL indicates that the UDC was unable to t ransmit or receive data, and
requires host intervention to clear the stall condition. The receiving unit signals Bit stuf fing, CRC,
and PID errors by omitting a handshake packet. Table12-6 shows the format of a handshake
packet.
12.3.5 Transaction Formats
Packets are assembled into groups to form transactions. The USB protocol uses four different
transaction formats. Each transaction format is specific to a particular type of endpoint: Bulk,
Control, Interrupt, or Isochronous. Endpoint 0, by default, is a control endpoint and receives only
control transactions. All USB transactions ar e init iate d b y the host con tr oller and transm itt ed in one
direction at a time (known as half-duplex) between the host and UDC.

12.3.5.1 Bulk Transaction Type

Bulk transactions guarantee error-fre e da ta transmission between the host and UDC by using
packet error detection and retry. The host schedules bulk packets when the bus has available time.
Bulk transactions are made up of three packet types: Token, Data, and Handshake. The eight types
of bulk transactions are based on data direction, error, and stall conditions. The types of bulk
transactions are shown in Table12-7. Packets sent from the UDC to the host are highlighted in
boldface type and packets sent from the host to the UDC are not.
Table 12-5. Data Packe t Format
8 bits 8 bits 0–1023 bytes 16 bits
Sync PID Data CRC16
Table 12-6. Handshake Packet Format
8 bits 8 bits
Sync PID