09.12.2012 Views

RM0090: Reference manual - STMicroelectronics

RM0090: Reference manual - STMicroelectronics

RM0090: Reference manual - STMicroelectronics

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

Disable Channel<br />

if (STALL)<br />

{<br />

Transfer Done = 1<br />

}<br />

}<br />

else<br />

if (NAK or TXERR)<br />

{<br />

Rewind Buffer Pointers<br />

Reset Error Count<br />

Mask ACK<br />

Unmask CHH<br />

Disable Channel<br />

}<br />

else<br />

if (CHH)<br />

{<br />

Mask CHH<br />

if (Transfer Done or (Error_count == 3))<br />

{<br />

De-allocate Channel<br />

}<br />

else<br />

{<br />

Re-initialize Channel (in next b_interval - 1 Frame)<br />

}<br />

}<br />

else<br />

if (ACK)<br />

{<br />

Reset Error Count<br />

Mask ACK<br />

}<br />

The application uses the NPTXFE interrupt in OTG_FS_GINTSTS to find the transmit<br />

FIFO space.<br />

b) Interrupt IN<br />

Unmask (NAK/TXERR/XFRC/BBERR/STALL/FRMOR/DTERR)<br />

if (XFRC)<br />

{<br />

Reset Error Count<br />

Mask ACK<br />

if (OTG_FS_HCTSIZx.PKTCNT == 0)<br />

{<br />

De-allocate Channel<br />

}<br />

else<br />

{<br />

Transfer Done = 1<br />

Unmask CHH<br />

Disable Channel<br />

1121/1416 Doc ID 018909 Rev 3

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

Saved successfully!

Ooh no, something went wrong!