Functional Description
16.3 Functional Description
The USB controller within the device supports 15 Transmit endpoints and 15 Receive endpoints in
addition to Endpoint 0. (The use of these endpoints for IN and OUT transactions depends on whether the
USB controller is being used as a device/peripheral or as a host. When used as a peripheral, IN
transactions are processed through TX endpoints and OUT transactions are processed through Rx
endpoints. When used as a host, IN transactions is processed through Rx endpoints and OUT
transactions is processed through TX endpoints.)
These additional endpoints can be individually configured in software to handle either Bulk transfers
(which also allows them to handle Interrupt transfers), Isochronous transfers or Control transfers. Further,
the endpoints can also be allocated to different target device functions on the fly – maximizing the number
of devices that can be simultaneously supported.
Each endpoint requires a chunk of memory allocated within the FIFO to be associated with it. The USB
module has a single block of FIFO RAM (32 Kbytes in size) to be shared by all endpoints. The FIFO for
Endpoint 0 is required to be 64 bytes deep and will buffer 1 packet. The first 64 Bytes of the FIFO RAM is
reserved by hardware for Endpoint 0 usage and for this reason user software does not need (nor has the
capability) to allocate FIFO for Endpoint 0. The rest of the FIFO RAM is user configurable with regard to
the other endpoint FIFOs, which may be from 8 to 8192 bytes in size and can buffer either 1 or 2 packets.
Separate FIFOs may be associated with each endpoint: alternatively a TX endpoint and the Rx endpoint
with the same Endpoint number can be configured to use the same FIFO, for example to reduce the size
of RAM block needed, provided they can never be active at the same time.
The role (host or device) that the USB controller assumes is chosen by user firmware programming the
respective USB controller MODE register defined within the USB subsystem space. Note that some USB
pins have not been bonded out and the functions of these pins are controlled by user software via
dedicated registers.
The user has access to the controller through the OCP slave interface via the CPU. The user can process
USB transactions entirely from the CPU or can also use the DMA to perform data transfer. The CPPI DMA
can be used to service Endpoints 1 to 15 not Endpoint 0. CPU access method is used to service Endpoint
0 transactions.
16.3.1 VBUS Voltage Sourcing Control
When any of the USB controllers assumes the role of a host, the USB is required to supply a 5V power
source to an attached device through its VBUS line. In order to achieve this task, the USB controller
requires the use of an external power logic (or charge pump) capable of sourcing 5V power. A
USB_DRVVBUS is used as a control signal to enable/disable this external power logic to either source or
disable power on the VBUS line. The control on the USB_DRVVBUS is automatic and is handled by the
USB controller. The control should be transparent to the user so long as the proper hardware connection
and software initialization are in place. The USB controller drives the USB_DRVVBUS signal high when it
assumes the role of a host while the controller is in session. When assuming the role of a device, the
controller drives the USB_DRVVBUS signal low disabling the external charge pump/power logic; hence,
no power is driven on the VBUS line (in this case, power is expected to be sourced by the external host).
Note that both USBs are self-powered and the device does not rely on the voltage on the VBUS line
sourced by an external host for controller operation when assuming the role of a device. The power on the
VBUS is used to identify the presence of a Host. It is also used to power up the pull-up on the D+ line.
The USB PHY would continually monitor the voltage on the VBUS and report the status to USB controller.
16.3.2 Pullup/PullDown Resistors
Since the USB controllers are dual role controllers, capable of assuming a role of a host or device, the
necessary required pull-up/pull-down resistors can not exist external to the device. These pull-up/pull-
down resistors exist internal to the device, within the PHY to be more specific, and are enabled and
disabled based on the role the controller assumes allowing dynamic hardware configuration.
When assuming the role of a host, the data lines are pulled low by the PHY enabling the internal
15KOhms resistors. When assuming the role of a device the required 1.5Kohm pull-up resistor on the D+
line is enabled automatically to signify the USB capability to the external host as a FS device (HS
operation is negotiated during reset bus condition).
1697
SPRUH73H – October 2011 – Revised April 2013
Universal Serial Bus (USB)
Copyright © 2011–2013, Texas Instruments Incorporated