09.12.2012 Views

RM0090: Reference manual - STMicroelectronics

RM0090: Reference manual - STMicroelectronics

RM0090: Reference manual - STMicroelectronics

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>RM0090</strong> USB on-the-go full-speed (OTG_FS)<br />

2. The application can only schedule data transfers one frame at a time.<br />

– (MCNT – 1) × MPSIZ ≤ XFERSIZ ≤ MCNT × MPSIZ<br />

– PKTCNT = MCNT (in OTG_FS_DIEPTSIZx)<br />

– If XFERSIZ < MCNT × MPSIZ, the last data packet of the transfer is a short<br />

packet.<br />

– Note that: MCNT is in OTG_FS_DIEPTSIZx, MPSIZ is in OTG_FS_DIEPCTLx,<br />

PKTCNT is in OTG_FS_DIEPTSIZx and XFERSIZ is in OTG_FS_DIEPTSIZx<br />

3. The complete data to be transmitted in the frame must be written into the transmit FIFO<br />

by the application, before the IN token is received. Even when 1 Word of the data to be<br />

transmitted per frame is missing in the transmit FIFO when the IN token is received, the<br />

core behaves as when the FIFO is empty. When the transmit FIFO is empty:<br />

– A zero data length packet would be transmitted on the USB for isochronous IN<br />

endpoints<br />

– A NAK handshake would be transmitted on the USB for interrupt IN endpoints<br />

Internal data flow:<br />

1. The application must set the transfer size and packet count fields in the endpointspecific<br />

registers and enable the endpoint to transmit the data.<br />

2. The application must also write the required data to the associated transmit FIFO for<br />

the endpoint.<br />

3. Every time the application writes a packet to the transmit FIFO, the transfer size for that<br />

endpoint is decremented by the packet size. The data are fetched from application<br />

memory until the transfer size for the endpoint becomes 0.<br />

4. When an IN token is received for a periodic endpoint, the core transmits the data in the<br />

FIFO, if available. If the complete data payload (complete packet, in dedicated FIFO<br />

mode) for the frame is not present in the FIFO, then the core generates an IN token<br />

received when TxFIFO empty interrupt for the endpoint.<br />

– A zero-length data packet is transmitted on the USB for isochronous IN endpoints<br />

– A NAK handshake is transmitted on the USB for interrupt IN endpoints<br />

5. The packet count for the endpoint is decremented by 1 under the following conditions:<br />

– For isochronous endpoints, when a zero- or non-zero-length data packet is<br />

transmitted<br />

– For interrupt endpoints, when an ACK handshake is transmitted<br />

– When the transfer size and packet count are both 0, the transfer completed<br />

interrupt for the endpoint is generated and the endpoint enable is cleared.<br />

6. At the “Periodic frame Interval” (controlled by PFIVL in OTG_FS_DCFG), when the<br />

core finds non-empty any of the isochronous IN endpoint FIFOs scheduled for the<br />

current frame non-empty, the core generates an IISOIXFR interrupt in<br />

OTG_FS_GINTSTS.<br />

Doc ID 018909 Rev 3 1144/1416

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!