USB Transactions
13-64
Because the USB transaction for the isochronous endpoint can occur at any
time during the 1-ms USB frame, the USB interface implements a double buff-
ering of the endpoint transmit data FIFO. The endpoint includes two FIFOs,
each of which is the length of the configured isochronous endpoint. At all times,
one of the two FIFOs is foreground and the other is background. The USB
interface side of the USB module is allowed to read from the background TX
FIFO, and the local host is allowed to write to the foreground TX FIFO. The
designations foreground and background are swapped, and the new back-
ground TX FIFO is cleared at each start of frame (SOF). Because isochronous
endpoints implement double buffering, isochronous endpoints do not control
access to the FIFOs via the Set_FIFO_En bit; the Set_FIFO_En and the
FIFO_En bits are not implemented for isochronous IN endpoints.
Figure 13–6 shows the transaction phases associated with isochronous IN
transactions and the SOF transaction. No endpoint-specific interrupt to the
local host is generated as a result of an isochronous IN transaction. There is
no handshake phase. The SOF transaction causes an SOF interrupt to the
local host; it is assumed that the local host refills the isochronous IN endpoint
transmit FIFO at each SOF interrupt.
Figure 13–6. Isochronous IN Transaction Phases and Interrupts
Iso In Token
SOF Token
Successful data transfer to PC host
Reception of SOF causes SOF interrupt.
SOF Interrupt
No handshake occurs. Endpoint TX FIFO is empty after data sent. No endpoint interrupt
occurs. STAT_FLG is unchanged.
Indicates a packet received by the device
Indicates a packet sent by the device
Data
LH code for SOF ISR must fill all isochronous IN endpoint TX FIFOs with new transmit
An SOF interrupt is generated even if the SOF packet is corrupted.
data and pull new receive data from all isochronous OUT endpoint RX FIFOs.