
23
DELAYISO
Meaning:
Delay data transfer to an ISOCHRONOUS endpoint until the next frame (until
after the next SOF packet is transmitted). This will happen if the packet is
scheduled too late in the frame to avoid colliding with the next automatically
generated SOF packet.
Mode:
Host only
The CPU sets and clears this bit.
Programming Notes
The USB spec guarantees that a host will grant an enumerated ISO endpoint enough bus
bandwidth (frame time) to allow ISO data transfers in every 1ms frame. This means that the host
must dispatch an IN or OUT packet (by writing the HXFR register) not only in every frame, but
early enough
in every frame to guarantee that the transfer can complete before the MAX3421E
automatically generates the next SOF packet.
Since the MAX3421E can be connected to any speed SPI master, and since there is no guarantee
that the controlling firmware will write the HXFR register early enough in every frame to
guarantee delivery, the SIE provides the DELAYISO bit to control the behavior when a packet is
scheduled too late in a frame. When there is a packet/SOF timing conflict, the DELAYISO bit
determines whether the packet data or the SOF packet has priority.
If DELAYISO = 1, the SIE checks the available time left in the 1-millisecond frame whenever
the CPU launches an ISO packet by loading the HXFR register. If the SIE finds that there is not
enough time in the frame to send or receive a 256-byte ISO packet, it delays sending the ISO
packet until the beginning of the next frame.
Note:
The 256-byte window was chosen to accommodate a common ISO application, CD quality
audio. In that application, 44.1 K-samples per second, times two channels, times 16 bits per
channel requires 176 bytes per millisecond frame. A 256-byte window adds some margin.
ISO OUT-SOF Conflicts
The SIE has two ways to deal with a scheduling conflict between sending ISO OUT packet data
and an automatically generated SOF packet. The SIE either starts to send the packet and then
prematurely cuts off sending the data to generate the SOF, or it delays sending the entire packet
until after it generates the next SOF packet.
Note:
Another ISO error condition is a data under-run, indicated by the result code
HRSLT = 0x06. A data under-run occurs if the SIE needs SNDFIFO data while sending an ISO
data packet, but the CPU has not loaded the SNDFIFO in time.