LM3S3768 Luminary Micro, Inc, LM3S3768 Datasheet - Page 505

no-image

LM3S3768

Manufacturer Part Number
LM3S3768
Description
Lm3s3768 Arm Microcontroller
Manufacturer
Luminary Micro, Inc
Datasheet
17.2.1.2 IN Transactions
June 02, 2008
For example, the OUT portion of an endpoint could be a bulk endpoint, while the IN portion could
be an interrupt endpoint. The address and size of the FIFOs attached to each endpoint can be
modified to fit the application's needs.
When operating as a USB device, data for IN transactions is handled through the FIFOs attached
to transmit endpoints. The sizes of the FIFOs for endpoints 1 to 3 are determined by the
USBTXFIFOADD register. The maximum size of a data packet that may be placed in a transmit
endpoint’s FIFO for transmission is programmable and is determined by the value written to the
USBTXMAXPn register for that endpoint. The endpoint’s FIFO can also be configured to use
double-packet or single-packet buffering. When double-packet buffering is enabled, two data packets
can be buffered in the FIFO, which also requires that the FIFO is at least two packets in size. When
double-packet buffering is disabled, only one packet can be buffered, even if the packet size is less
than half the FIFO size. The USB controller also supports a special mode for bulk endpoints that
allows automatic splitting of a larger FIFO into multiple packets that are maximum packet size
transfers.
Note:
Single-Packet Buffering
If the size of the transmit endpoint's FIFO is less than twice the maximum packet size for this endpoint
(as set in the USBTXFIFOSZ register), only one packet can be buffered in the FIFO and single-packet
buffering is required. When each packet is completely loaded into the transmit FIFO, the TXRDY bit
in the USBTXCSRLn register needs to be set. If the AUTOSET bit in the USBTXCSRHn register is
set, the TXRDY bit is automatically set when a maximum sized packet is loaded into the FIFO. For
packet sizes less than the maximum, the TXRDY bit must be set manually. When the TXRDY bit is
set, either manually or automatically, the packet is ready to be sent. When the packet has been
successfully sent, both TXRDY and FIFONE are cleared and the appropriate transmit endpoint
interrupt signaled. At this point, the next packet can be loaded into the FIFO.
Double-Packet Buffering
If the size of the transmit endpoint's FIFO is at least twice the maximum packet size for this endpoint,
two packets can be buffered in the FIFO and double-packet buffering is allowed. As each packet is
loaded into the transmit FIFO, the TXRDY bit in in the USBTXCSRLn register needs to be set. If the
AUTOSET bit in the USBTXCSRHn register is set, the TXRDY bit is automatically set when a maximum
sized packet is loaded into the FIFO. For packet sizes less than the maximum, TXRDY must be set
manually. When the TXRDY bit is set, either manually or automatically, the packet is ready to be
sent. After the first packet is loaded, TXRDY is immediately cleared and an interrupt is generated.
A second packet can now be loaded into the transmit FIFO and TXRDY set again (either manually
or automatically if the packet is the maximum size). At this point, both packets are ready to be sent.
After each packet has been successfully sent, TXRDY is cleared and the appropriate transmit endpoint
interrupt signaled to indicate that another packet can now be loaded into the transmit FIFO. The
state of the FIFONE bit at this point indicates how many packets may be loaded. If the FIFONE bit
is set, then there is another packet in the FIFO and only one more packet can be loaded. If the
FIFONE bit is clear, then there are no packets in the FIFO and two more packets can be loaded.
Note:
The maximum packet size set for any endpoint must not exceed the FIFO size. The
USBTXMAXPn register should not be written to while there is data in the FIFO as unexpected
results may occur.
Double-packet buffering is disabled if an endpoint’s corresponding EPn bit is set in the
USBTXDPKTBUFDIS register. This bit is set by default, so it must be cleared to enable
double-packet buffering.
Preliminary
LM3S3768 Microcontroller
505

Related parts for LM3S3768