USB Device Controller

12.3.4.3Data 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 phase, 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 consists of a Sync, a PID, from 0 to 1023 bytes of data, and a CRC16 field (see Table 12-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.

Table 12-5. Data Packet Format

8 bits

8 bits

0–1023 bytes

16 bits

 

 

 

 

Sync

PID

Data

CRC16

 

 

 

 

12.3.4.4Handshake Packet Type

Handshake packets consist of a Sync and a PID. Handshake 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 received, flow control, and stall conditions. Only transactions that support flow control can return handshakes. The three types of handshake packets 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 transmit or receive data, and requires host intervention to clear the stall condition. The receiving unit signals Bit stuffing, CRC, and PID errors by omitting a handshake packet. Table 12-6shows the format of a handshake packet.

Table 12-6. Handshake Packet Format

8 bits

8 bits

 

 

Sync

PID

 

 

12.3.5Transaction 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 are initiated by the host controller and transmitted in one direction at a time (known as half-duplex) between the host and UDC.

12.3.5.1Bulk Transaction Type

Bulk transactions guarantee error-free data 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 Table 12-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.

12-6

Intel® PXA255 Processor Developer’s Manual

Page 408
Image 408
Intel PXA255 manual Transaction Formats, Data Packet Type, Handshake Packet Type, Bulk Transaction Type