Atmel ARM-Based Evaluation Kit for SAM4S16C, 32-Bit ARM® Cortex® Microcontroller ATSAM4S-WPIR-RD ATSAM4S-WPIR-RD Data Sheet

Product codes
ATSAM4S-WPIR-RD
Page of 1231
SAM4S Series [DATASHEET]
Atmel-11100G-ATARM-SAM4S-Datasheet_27-May-14
1008
2. During the Status OUT stage, the host emits a zero length packet to the device (Data OUT transaction with no data). 
40.6.2 Handling Transactions with USB 2.0 Device Peripheral
40.6.2.1 Setup Transaction
Setup is a special type of host-to-device transaction used during control transfers. Control transfers must be 
performed using endpoints with no ping-pong attributes. A setup transaction needs to be handled as soon as 
possible by the firmware. It is used to transmit requests from the host to the device. These requests are then 
handled by the USB device and may require more arguments. The arguments are sent to the device by a Data 
OUT transaction which follows the setup transaction. These requests may also return data. The data is carried out 
to the host by the next Data IN transaction which follows the setup transaction. A status transaction ends the 
control transfer.
When a setup transfer is received by the USB endpoint:
The USB device automatically acknowledges the setup packet
RXSETUP is set in the UDP_CSRx
An endpoint interrupt is generated while the RXSETUP is not cleared. This interrupt is carried out to the 
microcontroller if interrupts are enabled for this endpoint.
Thus, firmware must detect the RXSETUP polling the UDP_CSRx or catching an interrupt, read the setup packet 
in the FIFO, then clear the RXSETUP. RXSETUP cannot be cleared before the setup packet has been read in the 
FIFO. Otherwise, the USB device would accept the next Data OUT transfer and overwrite the setup packet in the 
FIFO.
Figure 40-5.
Setup Transaction Followed by a Data OUT Transaction 
40.6.2.2 Data IN Transaction
Data IN transactions are used in control, isochronous, bulk and interrupt transfers and conduct the transfer of data 
from the device to the host. Data IN transactions in isochronous transfer must be done using endpoints with ping-
pong attributes.
Using Endpoints Without Ping-pong Attributes
To perform a Data IN transaction using a non ping-pong endpoint:
RX_Data_BKO
(UDP_CSRx)
ACK
PID
Data OUT
Data OUT
PID
NAK
PID
ACK
PID
Data Setup
Setup
PID
USB
Bus Packets
RXSETUP Flag
Set by USB Device 
Cleared by Firmware
Set by USB 
Device Peripheral
FIFO (DPR) 
Content
Data Setup
Data
XX
XX
OUT
Interrupt Pending
Setup Received
Setup Handled by Firmware
Data Out Received
Data OUT
Data OUT
PID