
24
MAX3421E Programming Guide
ISO OUTS with DELAYISO = 0
If an ISO-OUT data packet transfer is underway when it is time for the SIE to generate the next
SOF packet, the SIE truncates the data packet and generates the SOF. The SIE indicates this loss-
of-data condition by setting HRSLT[3:0] = 0x03, followed by the FRAMEIRQ. It does not assert
the HXFRDNIRQ in this case.
ISO OUTS with DELAYISO = 1
The SIE delays sending the OUT data packet if the CPU writes the HXFR register at a time that
would not allow the SIE to transfer 256 bytes before the end of the frame. In this case the SIE
sends the next SOF packet (and asserts FRAMEIRQ); it then sends the delayed ISO packet and
terminates the transfer, asserting the HXFRDNIRQ with code 0x00 (hrSUCCESS). The CPU
detects a deferred packet by sampling the SNDBAVIRQ bit just after the FRAMEIRQ. If
SNDBAVIRQ is zero, the SNDFIFO buffer is still committed to USB transfer and the packet
was therefore delayed.
ISO IN-SOF Conflicts
The SIE handles IN transfer conflicts somewhat differently than for OUTS, because the host
cannot command a peripheral to stop sending data to avoid colliding with the next SOF packet.
Therefore, in the conflict condition the SIE either reads the remaining ISO IN data and does not
generate the SOF packet, or it delays sending the IN request until after it generates the next SOF
packet.
Note:
Another ISO error condition is a data over-run, indicated by the result code
HRSLT = 0x06. A data over-run occurs when the SIE has ISO IN data available but nowhere to
put it. This happens because no RCVFIFOS are available (the CPU has not unloaded the
RCVFIFO in time.
ISO INS with DELAYISO = 0
If an ISO-IN request results in the peripheral sending a data packet that runs past the SOF
generation time, the SIE continues to receive the IN data and suppresses sending the SOF packet
for that frame. In this case the SIE sets HRSLT[3:0] = 0x03, does not assert the HXFRDNIRQ
when the IN transfer completes, but does assert the FRAMEIRQ for that frame. The CPU can
detect this error case by recognizing that a FRAMEIRQ occurred without an HXFRDNIRQ
before it.
Note
: The SIE always increments the frame count, whether or not an SOF packet is actually sent.
ISO INS with DELAYISO = 1
If the CPU initiates the ISO-IN transfer at a time that would not allow a 256 byte data packet to
be received before colliding with the next SOF, the SIE defers sending the IN packet until after
the next frame. In this case the SIE asserts the FRAMEIRQ for the next frame, sends the ISO-IN
packet, transfers the IN data, and asserts the HXFRDNIRQ with HRSLT[3:0] = 0x00
(hrSUCCESS).