USB Transactions
13-63
USB Function Module
13.3.3.2
Isochronous OUT Transaction Error Conditions
If the local host fails to read all of the data in the isochronous OUT endpoint
foreground FIFO by the time that the foreground and background FIFOs are
switched (at the next SOF), the endpoint FIFO that is being switched to the
background is flushed and the Data_Flush bit is asserted for the duration of
the next frame.
There is no special indication for the case where the USB host does not pro-
vide a transaction to an isochronous OUT endpoint during a frame; but once
the FIFO that was background in that frame is foreground, the FIFO is empty.
A 0-length data isochronous OUT transaction also results in an empty FIFO
and can not be distinguished from a missed isochronous OUT transaction.
If an isochronous OUT transaction occurs with data error (CRC, PID check,
bit stuffing), the RX FIFO is empty at the next SOF interrupt and the ISO_Err
bit is asserted for the duration of the next frame.
13.3.3.3
Isochronous OUT Endpoint FIFO Error Conditions
The local host must never read more data than value given by the RXF_Count.
If the USB host sends more data than the FIFO can contain, the FIFO is
cleared and the ISO_Err bit is set at the next SOF interrupt. A properly
configured USB system does not do this.
Both foreground and background isochronous FIFOs are cleared when the
Clr_EP bit is set.
13.3.4 Isochronous IN (LH–>USB HOST) Transactions
Isochronous IN transactions are USB transactions where a given amount of
data is transferred from the USB function module device to the USB host every
1-ms USB frame. No handshaking is provided.
The USB module provides double buffering of data for isochronous IN end-
points; the background FIFO is used as the source of data for IN transactions
to the isochronous endpoint, and the foreground FIFO can be written to by the
local host. When an IN transaction to an isochronous endpoint occurs, the
USB module sends all data found in the endpoint background TX FIFO. The
local host is responsible for providing new data to the isochronous IN endpoint
foreground TX FIFO at each start of frame interrupt.
In response to the SOF interrupt, for each isochronous IN endpoint, local host
code selects the endpoint (via EP_NUM register), then fills the endpoint TX
FIFO (via DATA register). Once all the transmit data has been written to the
FIFO, the local host code must clear the EP_Sel bit.