Datasheet

SAM9G20
DS60001516A-page 662 2017 Microchip Technology Inc.
Figure 36-4: Control Read and Write Sequences
Note 1: During the Status IN stage, the host waits for a zero length packet (Data IN transaction with no data) from the device using
DATA1 PID. Refer to Chapter 8 of the Universal Serial Bus Specification, Rev. 2.0, for more information on the protocol layer.
2: During the Status OUT stage, the host emits a zero length packet to the device (Data OUT transaction with no data).
36.5.2 Handling Transactions with USB V2.0 Device Peripheral
36.5.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 register
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.
Control Read
Setup TX Data OUT TX Data OUT TX
Data Stage
Control Write
Setup Stage
Setup Stage
Setup TX
Setup TX
No Data
Control
Data IN TX Data IN TX
Status Stage
Status Stage
Status IN TX
Status OUT TX
Status IN TX
Data Stage
Setup Stage Status Stage