Rainbow Electronics AT91CAP9S250A User Manual

Page 863

Advertising
background image

863

6264A–CAP–21-May-07

AT91CAP9S500A/AT91CAP9S250A

• ERR_FL_ISO + ERR_FLUSH + ERR_TRANS: The first token IN has been treated, the data

for the second Token IN was not available in time, but the second bank has been validated
before the end of the microframe. The third bank has not been validated, but three
transactions have been set in NB_TRANS.

44.4.8.9

Data OUT

44.4.8.10

Bulk OUT or Interrupt OUT

Like data IN, data OUT packets are sent by the host during the data or the status stage of con-
trol transfer or during an interrupt/bulk/isochronous OUT transfer. Data buffers are sent packet
by packet under the control of the application or under the control of the DMA channel.

44.4.8.11

Bulk OUT or Interrupt OUT: Receiving a Packet Under Application Control (Host to Device)

Algorithm Description for Each Packet:

• The application enables an interrupt on RX_BK_RDY.

• When an interrupt on RX_BK_RDY is received, the application knows that UDPHS_EPTSTAx

register BYTE_COUNT bytes have been received.

• The application reads the BYTE_COUNT bytes from the endpoint.

• The application clears RX_BK_RDY.

Note: If the application does not know the size of the transfer, it may not be a good option to use
AUTO_VALID. Because if a zero-length-packet is received, the RX_BK_RDY is automatically
cleared by the AUTO_VALID hardware and if the endpoint interrupt is triggered, the software will
not find its originating flag when reading the UDPHS_EPTSTAx register.

Algorithm to Fill Several Packets:

• The application enables the interrupts of BUSY_BANK and AUTO_VALID.

• When a BUSY_BANK interrupt is received, the application knows that all banks available for

the endpoint have been filled. Thus, the application can read all banks available.

If the application doesn’t know the size of the receive buffer, instead of using the BUSY_BANK
interrupt, the application must use RX_BK_RDY.

44.4.8.12

Bulk OUT or Interrupt OUT: Sending a Buffer Using DMA (Host To Device)

To use the DMA setting, the AUTO_VALID field is mandatory.

See

44.4.8.6 Bulk IN or Interrupt IN: Sending a Buffer Using DMA (Device to Host)

for more

information.

DMA Configuration Example:

1.

First program UDPHS_DMAADDRESSx with the address of the buffer that should be
transferred.

2.

Enable the interrupt of the DMA in UDPHS_IEN

3.

Program the DMA Channelx Control Register:

– Size of buffer to be sent.

– END_B_EN: Can be used for OUT packet truncation (discarding of unbuffered

packet data) at the end of DMA buffer.

Advertising