1-6. packets, 1-7. endpoints – Oki JOB60851 User Manual
Page 40
Chapter 4 Software Development
page 4-5
Figure 4.1.2. Two USB Transactions
All bus transactions begin with a token packet from the host. Devices never initiate data transfers on
their own.
The host controller is in charge of scheduling all traffic on the bus. It schedules the appropriate
transactions for the four data flow types at 1-ms intervals, which the USB documentation calls
frames.
Token packet types include data request (IN), data transfer notification (OUT), and command
transfer notification (SETUP).
4-1-6.
Packets
A packet is a continuous bit stream starting with the synchronization pattern and flowing in one
direction.
Table 4.1.3. lists the USB packet types.
PID Type
PID Name
Transmitter
Description
Token
OUT
Host
Data transfer notification
IN
Host
Data request
SOF
Host
Start of frame
SETUP
Host
Data transfer notification for control pipe
Data
DATA0
Host/Device
Data packet PID even
DATA1
Host/Device
Data packet PID odd
Handshake
ACK
Host/Device
Receiver accepts error-free packet
NAK
Device
Transmitter cannot send data
Receiver cannot accept data
STALL
Device
Control pipe request not supported
Endpoint halted
Special
PRE
Host
Preamble enabling downstream bus traffic to low-speed devices
4-1-7.
Endpoints
The USB provides separate logical communication flows, called pipes, between the host and a USB
function. The function end of a pipe is called the endpoint. This endpoint must provide buffer space
(FIFO) capable of holding at least one data packet (a.k.a. the maximum payload size).
Endpoints and pipes are characterized, at creation, by the direction (from or to host) and by the data
flow type (control, bulk, interrupt, or isochronous). There are provisions for up to 16 pipes in each
direction, for a total of 32 endpoints per function. The token packet that the host transmits to initiate
a transaction specifies the endpoint buffer with the endpoint address made up of the device address
and the endpoint number.
USB device controller capacity is expressed by the number of endpoints it has and such endpoint
specifications as supported data flow types and endpoint buffer sizes. Examining these endpoint
specifications thus reveals whether the USB device controller is suitable for the intended application.