...the world's most energy friendly microcontrollers
2016-04-28 - Giant Gecko Family - d0053_Rev1.20
317
www.silabs.com
13.Meanwhile, the application has initialized the data for the next two packets in the TxFIFO (ep2.xact2
and ep1.xact3, in order). The application has finished initializing data for the two endpoints involved
in this scenario.
14.The host repeats its attempt to read data (IN token) from endpoint 1.
15.Because data is now ready in the FIFO, the core responds with the data, which the host ACKs.
16.The host repeats its attempt to read data (IN token) from endpoint 2.
17.With data now ready in the FIFO, the core responds with the data, which the host ACKs.
18.With the last packet for endpoint 2 sent and its XFERSIZE now zero, the intended transfer is complete.
The core generates a USB_DIEP2_INT.XFERCOMPL interrupt for this endpoint.
19.The application processes the interrupt and uses the setting of the USB_DIEP2_INT.XFERCOMPL
interrupt bit to determine that the intended transfer on endpoint 2 is complete.
20.The host repeats its attempt to read data (IN token) from endpoint 1 (last transaction).
21.With data now ready in the FIFO, the core responds with the data, which the host ACKs.
22.Because the last endpoint one packet has been sent and XFERSIZE is now zero, the intended transfer
is complete. The core generates a USB_DIEP1_INT.XFERCOMPL interrupt for this endpoint.
23.The application processes the interrupt and uses the setting of the USB_DIEP1_INT.XFERCOMPL
interrupt bit to determine that the intended transfer on endpoint 1 is complete.
Figure 15.29. Slave Mode Bulk IN Two-Endpoint Transfer
10 bytes
ep2 drvr
Host
Application
Device
USB
IN, ep1
NAK
.
IN,ep1
512 bytes
512 bytes
ACK
ep1.xact_1
ep2.xact_1
ep1.xact_2
ep2.xact_2
ep1.xact_2
wr_reg(ep1.USB_ DI EPx _TSIZ
)
wr_reg(ep2.USB_ DI EPx _TSIZ
)
ep1.xact_3
ep1.xact_2
IN, ep2
ep2.InTknTxF
Emp intr
NA
K
IN, ep2
512 bytes
1 byte
ep1.setup_np_in_pkt
ep1.setup_np_in_pkt
ep1.setup_np_in_pkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
xfer_complete =1
EP_NUM 1 register set
XferSize = 1025 bytes
PktCnt = 3
EPEna = 1
EP_NUM 2 registers
XferSize = 522 bytes
PktCnt = 2
EPEna = 1
xfer_complete = 1
idle
until intr
idle
until intr
ep2.setup_np_in_pkt
ep2.setup_np_in_pkt
idle
until intr
idle
until intr
ep1.Xfer
Comp intr
ACK
IN,ep1
IN, ep2
ACK
IN, ep1
ACK
ep1.InTkn
TxF Emp intr
ep2.XferCompl intr
15.4.4.2.3.13 Generic Periodic IN (Interrupt and Isochronous) Data Transfers
To initialize the core after power-on reset, the application must follow the sequence in Overview:
Programming the Core (p. 250) . Before it can communicate with the host, it must initialize an endpoint
Summary of Contents for Giant Gecko EFM32GG
Page 842: ......