Section 20 USB Function Module
Rev. 4.00 Sep. 14, 2005 Page 771 of 982
REJ09B0023-0400
Data Stage (Control-OUT): The application first analyzes command data from the host in the
setup stage, and determines the subsequent data stage direction. If the result of command data
analysis is that the data stage is OUT-transfer, the application waits for data from the host, and
after data is received (USBIFR0/EP0oTS = 1), reads data from the FIFO. Next, the application
writes 1 to the EP0o read complete bit, empties the receive FIFO, and waits for reception of the
next data.
The end of the data stage is identified when the host transmits an IN token and the status stage is
entered.
USB function Application
OUT token reception
Data reception from host
OUT token reception
Set EP0o reception
complete flag
(USBIFR0/EP0o TS = 1)
Clear EP0o reception
complete flag
(USBIFR0/EP0o TS = 0)
Read data from USBEP0o
receive data size register
(USBEPSZ0o)
Write 1 to EP0o read
complete bit
(USBTRG/EP0o RDFN = 1)
Read data from USBEP0o
data register (USBEPDR0o)
1 written
to USBTRG/EP0s
RDFN?
1 written
to USBTRG/EP0o
RDFN?
NACK
NACK
ACK
No
Yes
No
Yes
Interrupt request
Figure 20.7 Data Stage (Control-OUT) Operation