beautypg.com

1-6. packets, 1-7. endpoints – Oki JOB60851 User Manual

Page 40

background image

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.