Bulk Or Interrupt In Endpoint; Isochronous In Endpoint; Bulk Or Interrupt Out Endpoint; Isochronous Out Endpoint - Texas Instruments CC253x User Manual

System-on-chip for 2.4ghz
Table of Contents

Advertisement

Endpoints 1–5

21.7.5 Bulk or Interrupt IN Endpoint

Interrupt IN transfers occur at regular intervals, whereas bulk IN transfers use available bandwidth not
allocated to isochronous, interrupt, or control transfers.
Interrupt IN endpoints may set the USBCSIH.FORCE_DATA_TOG bit. When this bit is set, the data toggle
bit is continuously toggled, regardless of whether an ACK was received or not. This feature is typically
used by interrupt IN endpoints that are used to communicate rate feedback for isochronous endpoints.
A bulk or interrupt IN endpoint can be stalled by setting the USBCSIL.SEND_STALL bit to 1. When the
endpoint is stalled, the USB controller responds with a STALL handshake to IN tokens. The
USBCSIL.SENT_STALL bit is then set, and an interrupt is generated, if enabled.
A bulk transfer longer than the maximum packet size is performed by splitting the transfer into a number of
data packets of maximum size followed by a smaller data packet containing the remaining bytes. If the
transfer length is a multiple of the maximum packet size, a zero-length data packet is sent last. This
means that a packet with a size less than the maximum packet size denotes the end of the transfer. The
AutoSet feature can be useful in this case, because many data packets are of maximum size.

21.7.6 Isochronous IN Endpoint

An isochronous IN endpoint is used to transfer periodic data from the USB controller to the host (one data
packet every USB frame).
If there is no data packet loaded in the IN FIFO when the USB host requests data, the USB controller
sends a zero-length data packet, and the USBCSIL.UNDERRUN bit is asserted.
Double buffering requires that a data packet is loaded into the IN FIFO during the frame preceding the
frame where it should be sent. If the first data packet is loaded before an IN token is received, the data
packet is sent during the same frame as it was loaded and hence violates the double-buffering strategy.
Thus, when double buffering is used, the USBPOW.ISO_WAIT_SOF bit should be set to 1 to avoid this.
Setting this bit ensures that a loaded data packet is not sent until the next SOF token has been received.
The AutoSet feature typically is not used for isochronous endpoints, because the packet size increases or
decreases from frame to frame.

21.7.7 Bulk or Interrupt OUT Endpoint

Interrupt OUT transfers occur at regular intervals, whereas bulk OUT transfers use available bandwidth
not allocated to isochronous, interrupt, or control transfers.
A bulk or interrupt OUT endpoint can be stalled by setting the USBCSOL.SEND_STALL bit to 1. When the
endpoint is stalled, the USB controller responds with a STALL handshake when the host is done sending
the data packet. The data packet is discarded and is not placed in the OUT FIFO. The USB controller
asserts the USBCSOL.SENT_STALL bit when the STALL handshake is sent and generates an interrupt
request if the OUT endpoint interrupt is enabled.
As the AutoSet feature is useful for bulk IN endpoints, the AutoClear feature is useful for OUT endpoints,
because many packets are of maximum size.

21.7.8 Isochronous OUT Endpoint

An isochronous OUT endpoint is used to transfer periodic data from the host to the USB controller (one
data packet every USB frame).
If there is no buffer available when a data packet is being received, the USBCSOL.OVERRUN bit is asserted
and the packet data is lost. Firmware can reduce the chance for this to happen by using double buffering
and using DMA to unload data packets effectively.
An isochronous data packet in the OUT FIFO may have bit errors. The hardware detects this condition
and sets USBCSOL.DATA_ERROR. Firmware should therefore always check this bit when unloading a data
packet.
The AutoClear feature typically is not used for isochronous endpoints, because the packet size increases
or decreases from frame to frame.
188
USB Controller
Copyright © 2009–2014, Texas Instruments Incorporated
SWRU191F – April 2009 – Revised April 2014
Submit Documentation Feedback
www.ti.com

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents