Learn USB Protocol

9.USB Packet

Data on the USBus is transmitted LSBit first. USB packets consist of the following fields,

    • Sync

All packets must start with a sync field. The sync field is 8 bits long at low and full speed or 32 bits long for high speed and is used to synchronise the clock of the receiver with that of the transmitter. The last two bits indicate where the PID fields starts.

    • PID

PID stands for Packet ID. This field is used to identify the type of packet that is being sent. The following table shows the possible values.

Group

PID Value

Packet Identifier

Token

0001

OUT Token

1001

IN Token

0101

SOF Token

1101

SETUP Token

Data

0011

DATA0

1011

DATA1

0111

DATA2

1111

MDATA

Handshake

0010

ACK Handshake

1010

NAK Handshake

1110

STALL Handshake

0110

NYET (No Response Yet)

Special

1100

PREamble

1100

ERR

1000

Split

0100

Ping

There are 4 bits to the PID, however to insure it is received correctly, the 4 bits are complemented and repeated, making an 8 bit PID in total. The resulting format is shown below.

PID0

PID1

PID2

PID3

nPID0

nPID1

nPID2

nPID3

    • ADDR

The address field specifies which device the packet is designated for. Being 7 bits in length allows for 127 devices to be supported. Address 0 is not valid, as any device which is not yet assigned an address must respond to packets sent to address zero.

    • ENDP

The endpoint field is made up of 4 bits, allowing 16 possible endpoints. Low speed devices, however can only have 2 additional endpoints on top of the default pipe. (4 endpoints max)

    • CRC

Cyclic Redundancy Checks are performed on the data within the packet payload. All token packets have a 5 bit CRC while data packets have a 16 bit CRC.

    • EOP

End of packet. Signalled by a Single Ended Zero (SE0) for approximately 2 bit times followed by a J for 1 bit time.

USB Packet Types

USB has four different packet types. Token packets indicate the type of transaction to follow, data packets contain the payload, handshake packets are used for acknowledging data or reporting errors and start of frame packets indicate the start of a new frame.

    • Token Packets

There are three types of token packets,

      • In – Informs the USB device that the host wishes to read information.
      • Out – Informs the USB device that the host wishes to send information.
      • Setup – Used to begin control transfers.

Token Packets must conform to the following format,

Sync

PID

ADDR

ENDP

CRC5

EOP

    • Data Packets

There are two types of data packets each capable of transmitting up to 1024 bytes of data.

      • Data0
      • Data1

High Speed mode defines another two data PIDs, DATA2 and MDATA.

Data packets have the following format,

Sync

PID

Data

CRC16

EOP

      • Maximum data payload size for low-speed devices is 8 bytes.
      • Maximum data payload size for full-speed devices is 1023 bytes.
      • Maximum data payload size for high-speed devices is 1024 bytes.
      • Data must be sent in multiples of bytes.
    • Handshake Packets

There are three type of handshake packets which consist simply of the PID

      • ACK – Acknowledgment that the packet has been successfully received.
      • NAK – Reports that the device temporary cannot send or received data. Also used during interrupt transactions to inform the host there is no data to send.
      • STALL – The device finds its in a state that it requires intervention from the host.

Handshake Packets have the following format,

Sync

PID

EOP

    • Start of Frame Packets

The SOF packet consisting of an 11-bit frame number is sent by the host every 1ms ± 500ns on a full speed bus or every 125 µs ± 0.0625 µs on a high speed bus.

Sync

PID

Frame Number

CRC5

EOP

Suggest Edit

LEAVE A REPLY

Please enter your comment!
Please enter your name here