...the world's most energy friendly microcontrollers
2016-04-28 - Giant Gecko Family - d0053_Rev1.20
315
www.silabs.com
Slave Mode Bulk IN Transfer (Pipelined Transaction)
These notes refer to Figure 15.28 (p. 316)
1. The host attempts to read data (IN token) from an endpoint.
2. On receiving the IN token on the USB, the core returns a NAK handshake, because no data is available
in the transmit FIFO.
3. To indicate that there was no data to send, the core generates an USB_DIEPx_INT.INTKNTXFEMP
(In Token Received When TxFIFO Empty) interrupt.
4. When data is ready, the application sets up the USB_DIEPx_TSIZ register with the transfer size and
packet count.
5. The application writes one maximum packet size or less of data to the Non-periodic TxFIFO.
6. The host reattempts the IN token.
7. Because data is now ready in the FIFO, the core responds with the data, and the host ACKs it.
8. When
the
TxFIFO
level
falls
below
the
halfway
mark,
the
core
generates
a
USB_GINTSTS.NPTXFEMP (NonPeriodic TxFIFO Empty) interrupt. This triggers the application to
start writing additional data packets to the FIFO.
9. A data packet for the second transaction is ready in the TxFIFO.
10.A data packet for third transaction is ready in the TxFIFO while the data for the second packet is
being sent on the bus.
11.The second data packet is sent to the host.
12.The last short packet is sent to the host.
13.Because the last packet is sent and XFERSIZE is now zero, the intended transfer is complete. The
core generates a USB_DIEPx_INT.XFERCOMPL interrupt.
14.The application processes the interrupt and uses the setting of the USB_DIEPx_INT.XFERCOMPL
interrupt bit to determine that the intended transfer is complete
Summary of Contents for Giant Gecko EFM32GG
Page 842: ......