CC1110Fx / CC1111Fx
When both the IN and the OUT endpoint of an
endpoint number do not use double buffering,
the sum of USBMAXI and USBMAXO must not
exceed the FIFO size for the endpoint. Figure
43 a) shows how the IN and OUT FIFO
memory for an endpoint is organized with
single buffering. The IN FIFO grows down from
the top of the endpoint memory region while
the OUT FIFO grows up from the bottom of the
endpoint memory region.
upwards. The second IN buffer also starts from
the middle of the memory region but grows
downwards.
To configure an endpoint as IN only, set
USBMAXOto 0 and to configure an endpoint as
OUT only, set USBMAXIto 0.
For unused endpoints, both USBMAXO and
USBMAXIshould be set to 0.
EP Number FIFO Size (in bytes)
When the IN or OUT endpoint of an endpoint
number use double buffering, the sum of
USBMAXI and USBMAXO must not exceed half
the FIFO size for the endpoint. Figure 43 b)
illustrates the IN and OUT FIFO memory for an
endpoint that uses double buffering. Notice
that the second OUT buffer starts from the
middle of the memory region and grows
1
2
3
4
5
32
64
128
256
512
Table 60: FIFO Sizes for EP 1 – 5
0
0
IN FIFO
(Buffer 1)
IN FIFO
USBMAXI - 1
USBMAXI - 1
USBMAX0 - 1
OUT FIFO
(Buffer 2)
0
0
IN FIFO
(Buffer 2)
USBMAXI - 1
USBMAX0 - 1
USBMAX0 - 1
OUT FIFO
(Buffer 1)
OUT FIFO
0
0
b)
a)
Figure 43: IN/OUT FIFOs, a) Single Buffering b) Double Buffering
13.16.6.2 Double Buffering
host requests data. Double buffering is not as
critical for bulk and interrupt endpoints as it is
for isochronous endpoint since packets will not
be lost. Double buffering, however, may
improve the effective data rate for bulk
endpoints.
To enable faster transfer and reduce the need
for retransmissions, CC1111Fx implements
double buffering, allowing two packets to be
buffered in the FIFO in each direction. This is
highly
recommended
for
isochronous
To enable double buffering for an IN endpoint,
USBCSIH.IN_DBL_BUF must be set to 1. To
enable double buffering for an OUT endpoint,
set USBCSOH.OUT_DBL_BUFto 1.
endpoints, which are expected to transfer one
data packet every USB frame without any
retransmission. For isochronous endpoint one
data packet will be sent/received every USB
frame. However, the data packet may be
sent/received at any time during the USB
frame period and there is a chance that two
data packets may be sent/received at a few
micro seconds interval. For isochronous
endpoints, an incoming packet will be lost if
there is no buffer available and a zero length
data packet will be sent if there is no data
packet ready for transmission when the USB
13.16.6.3 FIFO Access
The endpoint FIFOs are accessed by reading
and writing to the registers in Table 36 on page
53. Writing to a register causes the byte written
to be inserted into the IN FIFO. Reading a
register causes the next byte in the OUT FIFO
to be extracted and the value of this byte to be
returned.
SWRS033E
Page 173 of 239