RM0082
HS_USB 2.0 device
Doc ID 018672 Rev 1
477/844
Figure 45.
Out transaction flow in slave-only mode
High-bandwidth isochronous (ISO) transfers
In outcase of out packets (that is, coming from USB Host), the data PID received for a high-
bandwidth transaction is available in the endpoint buffer size (in) / receive packet frame
number (out) register (
Endpoint buffer size and received packet frame number register on
), specifically in the ISO PID field (bit [17:16]).
This 2 bit field indicates the data PID for the current packet available in the receive FIFO. For
example, if the USB host sends three packets with a PID sequence of MDATA and DATA2,
when the application receives the interrupt for the first packet, the ISO PID field of the
register indicates an MDATA PID (2‘b11). After the application reads out the first two
maximum-size packets, this register will indicate DATA2 (2‘b10).
In case of in packets (that is, transmitted to the USB host), the transfer is described by the
following example flow:
●
At first, write the initial data PID (bit [17:16]) in the endpoint buffer size in register
(
Endpoint buffer size and received packet frame number register on page 501
). For
example, to send three packets in a microframe, write 2’b11 to the ISO PID field (in).
●
Write the data one maximum-size packet at a time. After writing one maximum-size
packet, perform a confirm cycle.
●
Wait for the UDC-AHB subsystem to send the iso in done interrupt, setting the iso in
done (bit [23]) field in the endpoint status register (
) after the entire high-bandwidth transaction is completed on the USB.
●
To change the packet number to be sent in the next microframe, the application can
now modify the iso pid (in) field in the endpoint buffer size in register (
size and received packet frame number register on page 501
).
RxFIFO
available?
Idle
OUT
Transaction
Write the OUT
Data in the
RxFIFO
Wait for Status
Status=Success
or ISO?
Yes
No
Got Status
Flush data
No
Yes
Confirm data &
Generate INTR
Send NAK
(for non-ISO)
Excess
read?
Idle
Read data from
RxFIFO
Transfer done
Yes
No
Assert error