Functional Description
1287
SPRUH22I – April 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
M3 Universal Serial Bus (USB) Controller
If the target device responds to the OUT token with a NAK, the USB Host controller keeps retrying the
transaction until the NAK Limit that has been set has been reached. However, if the target device
responds with a STALL, the USB controller does not retry the transaction but interrupts the main
processor by setting the STALLED bit in the USBTXCSRLn register. If the target device does not respond
to the OUT token within the required time, or the packet contained a CRC or bit-stuff error, the USB Host
controller retries the transaction. If after three attempts the target device has still not responded, the USB
controller flushes the FIFO and sets the ERROR bit in the USBTXCSRLn register.
18.2.2.3 Transaction Scheduling
Scheduling of transactions is handled automatically by the USB Host controller. The Host controller allows
configuration of the endpoint communication scheduling based on the type of endpoint transaction.
Interrupt transactions can be scheduled to occur in the range of every frame to every 255 frames in 1
frame increments. Bulk endpoints do not allow scheduling parameters, but do allow for a NAK timeout in
the event an endpoint on a device is not responding. Isochronous endpoints can be scheduled from every
frame to every 216 frames, in powers of 2.
The USB controller maintains a frame counter. If the target device is a full-speed device, the USB
controller automatically sends an SOF packet at the start of each frame and increments the frame counter.
If the target device is a low-speed device, a K state is transmitted on the bus to act as a keep-alive to stop
the low-speed device from going into SUSPEND mode.
After the SOF packet has been transmitted, the USB Host controller cycles through all the configured
endpoints looking for active transactions. An active transaction is defined as a receive endpoint for which
the REQPKT bit is set or a transmit endpoint for which the TXRDY bit and/or the FIFONE bit is set.
An isochronous or interrupt transaction is started if the transaction is found on the first scheduler cycle of a
frame and if the interval counter for that endpoint has counted down to zero. As a result, only one interrupt
or isochronous transaction occurs per endpoint every n frames, where n is the interval set via the USB
Host Transmit Interval Endpoint n (USBTXINTERVAL[
n
]) or USB Host Receive Interval Endpoint n
(USBRXINTERVAL[
n
]) register for that endpoint.
An active bulk transaction starts immediately, provided sufficient time is left in the frame to complete the
transaction before the next SOF packet is due. If the transaction must be retried (for example, because a
NAK was received or the target device did not respond), then the transaction is not retried until the
transaction scheduler has first checked all the other endpoints for active transactions. This process
ensures that an endpoint that is sending a lot of NAKs does not block other transactions on the bus. The
controller also allows the user to specify a limit to the length of time for NAKs to be received from a target
device before the endpoint times out.
18.2.2.4 USB Hubs
The following setup requirements apply to the USB Host controller only if it is used with a USB hub. When
a full- or low-speed device is connected to the USB controller via a USB 2.0 hub, details of the hub
address and the hub port also must be recorded in the corresponding USB Receive Hub Address
Endpoint n (USBRXHUBADDRn) and USB Receive Hub Port Endpoint n (USBRXHUBPORTn) or the
USB Transmit Hub Address Endpoint n (USBTXHUBADDRn) and USB Transmit Hub Port Endpoint n
(USBTXHUBPORTn) registers. In addition, the speed at which the device operates (full or low) must be
recorded in the USB Type Endpoint 0 (USBTYPE0) (endpoint 0), USB Host Configure Transmit Type
Endpoint n (USBTXTYPEn), or USB Host Configure Receive Type Endpoint n (USBRXTYPEn) registers
for each endpoint that is accessed by the device.
For hub communications, the settings in these registers record the current allocation of the endpoints to
the attached USB devices. To maximize the number of devices supported, the USB Host controller allows
this allocation to be changed dynamically by simply updating the address and speed information recorded
in these registers. Any changes in the allocation of endpoints to device functions must be made following
the completion of any on-going transactions on the endpoints affected.