Datasheet

274
ATmega16U4/32U4 [DATASHEET]
Atmel-7766J-USB-ATmega16U4/32U4-Datasheet_04/2016
If a STALL request is set for a Control Endpoint and if a SETUP request occurs, the SETUP request has to be
ACK’ed and the STALLRQ request and STALLEDI sent flags are automatically reset (RXSETUPI set, TXIN
cleared, STALLED cleared, TXINI cleared...).
This management simplifies the enumeration process management. If a command is not supported or contains
an error, the firmware set the STALL request flag and can return to the main task, waiting for the next SETUP
request.
This function is compliant with the Chapter 8 test that may send extra status for a GET_DESCRIPTOR. The
firmware sets the STALL request just after receiving the status. All extra status will be automatically STALL’ed
until the next SETUP request.
22.11.2 STALL Handshake and Retry Mechanism
The Retry mechanism has priority over the STALL handshake. A STALL handshake is sent if the STALLRQ
request bit is set and if there is no retry required.
22.12 CONTROL Endpoint Management
A SETUP request is always ACK’ed. When a new setup packet is received, the RXSTPI interrupt is triggered (if
enabled). The RXOUTI interrupt is not triggered.
The FIFOCON and RWAL fields are irrelevant with CONTROL endpoints. The firmware shall thus never use
them on that endpoints. When read, their value is always 0.
CONTROL endpoints are managed by the following bits:
RXSTPI is set when a new SETUP is received. It shall be cleared by firmware to acknowledge the packet
and to clear the endpoint bank.
RXOUTI is set when a new OUT data is received. It shall be cleared by firmware to acknowledge the
packet
and to clear the endpoint bank.
TXINI is set when the bank is ready to accept a new IN packet. It shall be cleared by firmware to send the
packet and to clear the endpoint bank
.
22.12.1 Control Write
The next figure shows a control write transaction. During the status stage, the controller will not necessary send
a NAK at the first IN token:
If the firmware knows the exact number of descriptor bytes that must be read, it can then anticipate on the
status stage and send a ZLP for the next IN token
or it can read the bytes and poll NAKINI, which tells that all the bytes have been sent by the host, and the
transaction is now in the status stage
SETUP
RXSTPI
RXOUTI
TXINI
USB line
HW SW
OUT
HW SW
OUT
HW SW
IN IN
NAK
SW
DATASETUP STATUS