...the world's most energy friendly microcontrollers
2016-04-28 - Giant Gecko Family - d0053_Rev1.20
263
www.silabs.com
{
Transfer Done = 1
Unmask CHHLTD
Disable Channel
}
else if (NAK or XACTERR)
{
Rewind Buffer Pointers
Unmask CHHLTD
Disable Channel
if (XACTERR)
{
Increment Error Count
Unmask ACK
}
else
{
Reset Error Count
}
}
else if (CHHLTD)
{
Mask CHHLTD
if (Transfer Done or (Error_count == 3))
{
De-allocate Channel
}
else
{
Re-initialize Channel
}
}
else if (ACK)
{
Reset Error Count
Mask ACK
}
The application is expected to write the data packets into the transmit FIFO when space is available in the
transmit FIFO and the Request queue. The application can make use of USB_GINTSTS.NPTXFEMP
interrupt to find the transmit FIFO space.
The application is expected to write the requests as and when the Request queue space is available
and until the XFERCOMPL interrupt is received.
15.4.3.6.5 Bulk and Control IN Transactions in Slave Mode
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 connected device, it must
initialize a channel as described in Channel Initialization (p. 256) . See Figure 15.10 (p. 260) and
Figure 15.11 (p. 260) for read or write data to and from the FIFO in Slave mode.
A typical bulk or control IN pipelined transaction-level operation in Slave mode is shown in
Figure 15.12 (p. 262) . See channel 2 (ch_2). The assumptions are:
1. The application is attempting to receive two maximum-sized packets (transfer size = 1,024 bytes).
2. The receive FIFO can contain at least one maximum-packet-size packet and two status DWORDs
per packet (72 bytes for FS).
3. The Non-periodic Request Queue depth = 4.
15.4.3.6.5.1 Normal Bulk and Control IN Operations
The sequence of operations in Figure 15.12 (p. 262) is as follows:
Summary of Contents for Giant Gecko EFM32GG
Page 842: ......