DMA Operation
13-124
13.7.6 Isochronous IN (USB HOST
−>
LH) DMA Transactions
For isochronous endpoints (Figure 13–44), the transfer size counter
(TXn_TSC) corresponds to the number of bytes to transmit. The programmed
size must not exceed the programmed buffer size of the endpoint; otherwise
the results are unpredictable.
A request to the local host main DMA controller is generated when the end-
point buffer is empty initially; after that, the START bit is set and then set again
after each SOF (every 1 ms). The request is removed when the number of
bytes written in the buffer matches TXn_TSC value.
During isochronous transfers to a DMA-operated IN endpoint, a request to the
local host system DMA controller is generated every 1-ms frame when an
isochronous data packet is received with no error. There is no special interrupt
associated with DMA transfer.
No interrupt is signaled to the local host during DMA operation to isochronous
IN endpoints.
13.7.7 Important Note on DMA Requests
For each direction, only one DMA request can be active at any time. A request
must then be serviced to allow the next pending request on the same direction
to be asserted. In particular, a TX DMA request is asserted at each start-of-
frame if a TX DMA channel is configured for an isochronous endpoint; request
must be serviced imperatively.
-
For a USB TX DMA transfer, a DMA synchronization event is sent for each
frame (DMA_CCR register FS field set to 1). Here the software decides
the size of the USB transfer, so the DMA transfer is known in advance. The
software must program the system DMA and the USB function to this
transfer size.
-
For a USB RX DMA transfer, a DMA synchronization event is sent for each
element (DMA_CCR register FS field set to 0). Here the transfer size is
unknown, and the DMA transfer is undetermined. Even if the USB function
is programmed to transfer n elements, a RX DMA request is generated for
each element.