English
Language : 

EFM32WG Datasheet, PDF (318/834 Pages) List of Unclassifed Manufacturers – The EFM32WG Wonder Gecko is the ideal choice for demanding 8-, 16-, and 32-bit energy sensitive applications.
...the world's most energy friendly microcontrollers
3. Every time either the core’s internal DMA writes a packet to the transmit FIFO, the transfer size for
that endpoint is decremented by the packet size. The data is fetched from DMA or application memory
until the transfer size for the endpoint becomes 0.
4. When an IN token is received for a periodic endpoint, the core transmits the data in the FIFO, if
available. If the complete data payload (complete packet) for the frame is not present in the FIFO,
then the core generates an IN Token Received When TxFifo Empty Interrupt for the endpoint.
• A zero-length data packet is transmitted on the USB for isochronous IN endpoints
• A NAK handshake is transmitted on the USB for interrupt IN endpoints
5. If an IN token comes for an endpoint on the bus, and if the corresponding TxFIFO for that endpoint
has at least 1 packet available, and if the USB_DIEPx_CTL.NAK bit is not set, and if the internally
maintained even/odd bit match with the bit 0 of the current frame number, then the core will send this
data out on the USB. The core will also decrement the packet count. Core also toggles the MultCount
in USB_DIEPx_CTL register and based on the value of MultCount the next PID value is sent.
• If the IN token results in a timeout (core did not receive the handshake or handshake error),
core rewind the FIFO pointers. Core does not decrement packet count. It does not toggle PID.
USB_DIEPx_INT.TIMEOUT interrupt will be set which the application could check.
• At the end of periodic frame interval (Based on the value programmed in the
USB_DCFG.PERFRINT register, core will internally set the even/odd internal bit to match the next
frame.
6. The packet count for the endpoint is decremented by 1 under the following conditions:
• For isochronous endpoints, when a zero- or non-zero-length data packet is transmitted
• For interrupt endpoints, when an ACK handshake is transmitted
7. The data PID of the transmitted data packet is based on the value of USB_DIEPx_TSIZ.MC
programmed by the application. In case the USB_DIEPx_TSIZ.MC value is set to 3 then, for a
particular frame the core expects to receive 3 Isochronous IN token for the respective endpoint. The
data PIDs transmitted will be D2 followed by D1 and D0 respectively for the tokens.
• If any of the tokens responded with a zero-length packet due to non-availability of data in the
TxFIFO, the packet is sent in the next frame with the pending data PID. For example, in a frame,
the first received token is responded to with data and data PID value D2. If the second token is
responded to with a zero-length packet, the host is expected not to send any more tokens for the
respective endpoint in the current frame. When a token arrives in the next frame it will be responded
to with the pending data PID value of D1.
• Similarly the second token of the current frame gets responded with D0 PID. The host is expected
to send only two tokens for this frame as the first token got responded with D1 PID.
8. When the transfer size and packet count are both 0, the Transfer Completed interrupt for the endpoint
is generated and the endpoint enable is cleared.
9. The USB_GINTSTS.INCOMPISOIN will be masked by the application hence at the Periodic Frame
interval (controlled by USB_DCFG.PERFRINT), even though the core finds non-empty any of the
isochronous IN endpoint FIFOs, USB_GINTSTS.INCOMPISOIN interrupt will not be generated.
2013-05-08 - Wonder Gecko Family - d0233_Rev0.50
318
www.energymicro.com