Atmel ARM-Based Evaluation Kit AT91SAM9N12-EK AT91SAM9N12-EK Data Sheet

Product codes
AT91SAM9N12-EK
Page of 1104
529
SAM9N12/SAM9CN11/SAM9CN12 [DATASHEET]
11063K–ATARM–05-Nov-13
33.6.2.4 Stall Handshake
A stall handshake can be used in one of two distinct occasions. (For more information on the stall handshake, refer to
Chapter 8 of the Universal Serial Bus Specification, Rev 2.0.)
A functional stall is used when the halt feature associated with the endpoint is set. (Refer to Chapter 9 of the 
Universal Serial Bus Specification, Rev 2.0, 
for more information on the halt feature.)
To abort the current request, a protocol stall is used, but uniquely with control transfer.
The following procedure generates a stall packet:
1.
The microcontroller sets the FORCESTALL flag in the UDP_CSRx endpoint’s register.
2.
The host receives the stall packet.
3.
The microcontroller is notified that the device has sent the stall by polling the STALLSENT to be set. An endpoint 
interrupt is pending while STALLSENT is set. The microcontroller must clear STALLSENT to clear the interrupt.
When a setup transaction is received after a stall handshake, STALLSENT must be cleared in order to prevent interrupts
due to STALLSENT being set.
Figure 33-12. Stall Handshake (Data IN Transfer) 
Figure 33-13. Stall Handshake (Data OUT Transfer) 
Data IN 
Stall PID
PID
USB Bus
Packets
Cleared by Firmware
Set by Firmware
FORCESTALL 
STALLSENT
Set by
USB Device
Cleared by Firmware
Interrupt Pending
Data OUT PID  
Stall PID
 
Data OUT
USB Bus
Packets
Cleared by Firmware
Set by Firmware
FORCESTALL 
STALLSENT
Set by USB Device
Interrupt Pending