HS_USB 2.0 device
RM0082
476/844
Doc ID 018672 Rev 1
Figure 44.
In transaction flow in slave-only mode
Isochronous-in endpoints are handled similarly. In this case, the transfer of in data from the
application memory to the endpoint FIFO is not initiated by USB Host request tokens, but by
the application filling the TxFIFOs as soon as data is available. Isochronous endpoint data
must be filled in the TxFIFO only if the buffer is set for the current frame, which the
application can determine by reading the current active frame number from the CSR.
Out operation (Data transfer from USB host)
When the UDC-AHB subsystem receives out data from the USB Host, it transfers the data
to the receive FIFO (RxFIFO) within the subsystem - if it has space available for the packet -
. If no space is available, the packet is retried. SETUP out packets are stored in a temporary
subsystem register before being loaded to the receive FIFO.
Once the packet is transferred to the RxFIFO, the subsystem sends an interrupt to the
application for the received packet. Then, the application reads the addressed endpoint’s
interrupt and status registers (
Endpoint interrupt register on page 497
) and it is able to determine the number of bytes received by the UDC-
AHB Subsystem in the packet. After that, the application reads from the RxFIFO this number
of bytes.
Note:
The application reads from the address where the RxFIFO is mapped. The transaction flow
of out data from the USB host to the application is shown in
Data
available?
Idle
IN
Transaction
Read the
TxFIFO &Provide
IN data
Wait for Status
Transfer done
Status = ACK?
Generate INTR
and NAK
No
No
Yes
Yes
Idle
TxFIFO write
TxFIFO
available?
No
Yes
Write data
To TxFIFO
TxFIFO full?
No
Yes
Retry
Confirm Packet
in TxFIFO
Rewined READ
pointer