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.

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

Figure 370. Normal interrupt OUT/IN transactions<br />

init_reg(ch_2)<br />

set_ch_en<br />

(ch_2)<br />

read_rx_sts<br />

read_rx_fifo<br />

read_rx_sts<br />

init_reg(ch_2)<br />

set_ch_en<br />

(ch_2)<br />

1<br />

1<br />

2<br />

2<br />

6<br />

6<br />

Application AHB Host<br />

USB Device<br />

init_reg(ch_1)<br />

write_tx_fifo<br />

(ch_1)<br />

write_tx_fifo<br />

(ch_1)<br />

1<br />

MPS<br />

1<br />

MPS<br />

RXFLVL interrupt<br />

1<br />

MPS<br />

7 8<br />

9<br />

init_reg(ch_1)<br />

init_reg(ch_1)<br />

write_tx_fifo<br />

(ch_1)<br />

XFRC interrupt<br />

RXFLVL interrupt<br />

XFRC interrupt<br />

XFRC interrupt<br />

1<br />

MPS<br />

● Interrupt service routine for interrupt OUT/IN transactions<br />

a) Interrupt OUT<br />

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

if (XFRC)<br />

{<br />

Reset Error Count<br />

Mask ACK<br />

De-allocate Channel<br />

}<br />

else<br />

if (STALL or FRMOR)<br />

{<br />

Mask ACK<br />

Unmask CHH<br />

3<br />

5<br />

3<br />

5<br />

ch_1<br />

ch_2<br />

ch_1<br />

ch_2<br />

4<br />

4<br />

Periodic Request Queue<br />

Assume that this queue<br />

can hold 4 entries.<br />

Doc ID 018909 Rev 3 1120/1416<br />

OUT<br />

DATA0<br />

M PS<br />

ACK<br />

IN<br />

DATA0<br />

ACK<br />

OUT<br />

DATA1<br />

MPS<br />

ACK<br />

IN<br />

DATA1<br />

Odd<br />

(micro)<br />

frame<br />

Even<br />

(micro)<br />

frame<br />

ai15676

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

Saved successfully!

Ooh no, something went wrong!