Texas Instruments OMAP5912 Reference Manual page 1407

Multimedia processor device overview and architecture
Hide thumbs Also See for OMAP5912:
Table of Contents

Advertisement

USB Device Controller
3.4
Non-Isochronous IN (MPU->USB HOST) Transactions
Non-isochronous IN transactions refer to USB transactions in which data is
moved from the MPU to the USB host, where the USB handshaking protocols
are in effect, and data transmission is ensured. These transactions are the IN
transactions that occur on control, bulk, and interrupt endpoints. These
transactions do not ensure USB bandwidth.
To provide data for an endpoint IN transaction, the MPU code writes the
transmit data into the endpoint transmit FIFO. MPU code must first wait until
the USB is done with any previous TX data for the endpoint (if data had
previously been written to the TX FIFO). This must be done by proper
response to endpoint-specific transmit interrupts. When an IN transaction to
the endpoint occurs, if the endpoint STAT_FLG.FIFO_EN bit is set, the USB
module sends any data that is in the endpoint TX FIFO during the data phase.
If the TX FIFO is empty and STAT_FLG.FIFO_EN is set when an IN
transaction to the endpoint occurs, a 0-byte data packet is sent.
Once the endpoint previous transmit activity is taken care of, the MPU code
gains access to endpoint FIFO and status by setting the EP_NUM.EP_SEL bit.
Then the MPU can write the new transmit data to the endpoint TX FIFO via the
DATA register (being careful not to overflow the FIFO). Once all of the transmit
data has been written to the endpoint FIFO, MPU code sets the
CTRL.SET_FIFO_EN bit to allow the USB to use the endpoint TX FIFO, and
then clears the EP_NUM.EP_SEL bit. The data in the endpoint TX FIFO is sent
to the USB host the next time an IN transaction to the endpoint occurs.
Figure 5 shows the various USB protocol conditions that can occur during
non-isochronous IN transactions. It diagrams the three phases of the IN
transaction, the direction of information flow for each phase, when
endpoint-specific nterrupts are generated, and the resulting STAT_FLG bits
for the endpoint. The top three cases show the normal USB handshaking:
acknowledge (data sent by USB module and received properly by the USB
host), NAK (device not ready to send data to USB host), and STALL (device
in a condition where the endpoint cannot handle IN transactions). The last
case shows an abnormal case in which there is an error either in the token
packet received by the core or in the data packet received by the USB host.
SPRU761A
Universal Serial Bus (USB)
115

Advertisement

Table of Contents
loading

Table of Contents