...the world's most energy friendly microcontrollers
2016-04-28 - Giant Gecko Family - d0053_Rev1.20
269
www.silabs.com
must read the NAK/ACK along with the xact_err. If NAK/ACK is not set, the Xact_err count must be
incremented otherwise application must initialize the Xact_err count to 1.
Bulk/Control OUT/SETUP
Unmask (CHHLTD)
if (CHHLTD)
{
if (XFERCOMPL or STALL)
{
Reset Error Count (Error_count=1)
Mask ACK
De-allocate Channel
}
else if (XACTERR)
{
if (NAK/ACK)
{
Error_count = 1
Re-initialize Channel
Rewind Buffer Pointers
}
else
{
Error_count = Error 1
if (Error_count == 3)
{
De allocate channel
}
else
{
Re-initialize Channel
Rewind Buffer Pointers
}
}
}
}
else if (ACK)
{
Reset Error Count (Error_count=1)
Mask ACK
}
As soon as the channel is enabled, the core attempts to fetch and write data packets, in multiples of
the maximum packet size, to the transmit FIFO when space is available in the transmit FIFO and the
Request queue. The core stops fetching as soon as the last packet is fetched.
15.4.3.6.8 Bulk and Control IN Transactions in DMA 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) .
A typical bulk or control IN operation in DMA mode is shown in Figure 15.13 (p. 267) . See channel
2 (ch_2).
The assumptions are:
1. The application is attempting to receive two maximum-packet-size packets (transfer size = 1,024
bytes).
2. The receive FIFO can hold at least one maximum-packet-size packet and two status DWORDs per
packet (72 bytes for FS).
Summary of Contents for Giant Gecko EFM32GG
Page 842: ......