Information
SETUP TOKEN DATA ACK
USB RST SOF
IN TOKEN
DATA ACK
OUT TOKEN DATA ACK
USB_RST
Interrupt Generated
USB Host Function
TOK_DNE
Interrupt Generated
SOF Interrupt Generated
TOK_DNE
Interrupt Generated
TOK_DNE
Interrupt Generated
Figure 40-4. USB token transaction
The USB has two sources for the DMA overrun error:
Memory Latency
The memory latency may be too high and cause the receive FIFO to overflow. This is
predominantly a hardware performance issue, usually caused by transient memory access
issues.
Oversized Packets
The packet received may be larger than the negotiated MaxPacket size. Typically, this is
caused by a software bug. For DMA overrun errors due to oversized data packets, the
USB specification is ambiguous. It assumes correct software drivers on both sides.
NAKing the packet can result in retransmission of the already oversized packet data.
Therefore, in response to oversized packets, the USB core continues ACKing the packet
for non-isochronous transfers.
Table 40-5. USB responses to DMA overrun errors
Errors due to Memory Latency Errors due to Oversized Packets
Non-Acknowledgment (NAK) or Bus Timeout (BTO) — See
bit 4 in "Error Interrupt Status Register (ERRSTAT)" as
appropriate for the class of transaction.
Continues acknowledging (ACKing) the packet for non-
isochronous transfers.
—
The data written to memory is clipped to the MaxPacket size
so as not to corrupt system memory.
The DMAERR bit is set in the ERRSTAT register for host and
device modes of operation. Depending on the values of the
INTENB and ERRENB register, the core may assert an
interrupt to notify the processor of the DMA error.
Asserts ERRSTAT[DMAERR] ,which can trigger an interrupt
and TOKDNE interrupt fires. Note: The TOK_PID field of the
BDT is not 1111 because the DMAERR is not due to latency.
Table continues on the next page...
Programmers interface
K20 Sub-Family Reference Manual, Rev. 2, Feb 2012
890 Freescale Semiconductor, Inc.
