29.01.2015 Views

STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and ...

STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and ...

STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

RM0008<br />

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

Figure 275. Normal isochronous OUT/IN transactions<br />

Application<br />

AHB<br />

Host<br />

USB<br />

Device<br />

1<br />

init_reg(ch_1)<br />

init_reg(ch_2)<br />

set_ch_en<br />

(ch_2)<br />

1<br />

2<br />

write_tx_fifo<br />

(ch_1)<br />

1<br />

MPS<br />

3<br />

ch_1<br />

4<br />

Periodic Request Queue<br />

Assume that this queue<br />

can hold 4 entries.<br />

2<br />

3<br />

ch_2<br />

OUT<br />

DATA0<br />

M PS<br />

Odd<br />

(micro)<br />

frame<br />

5<br />

6<br />

XFRC interrupt<br />

ACK<br />

init_reg(ch_1)<br />

4<br />

IN<br />

write_tx_fifo<br />

(ch_1)<br />

1<br />

MPS<br />

5<br />

DATA0<br />

RXFLVL interrupt<br />

read_rx_sts<br />

read_rx_fifo<br />

6<br />

1<br />

MPS<br />

ACK<br />

read_rx_sts<br />

init_reg(ch_2)<br />

set_ch_en<br />

(ch_2)<br />

7 8<br />

9<br />

RXFLVL interrupt<br />

XFRC interrupt<br />

ch_1<br />

ch_2<br />

init_reg(ch_1)<br />

XFRC interrupt<br />

OUT<br />

DATA1<br />

MPS<br />

Even<br />

(micro)<br />

frame<br />

write_tx_fifo<br />

(ch_1)<br />

1<br />

MPS<br />

ACK<br />

IN<br />

DATA1<br />

ai15676<br />

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

Code sample: Isochronous OUT<br />

Unmask (FRMOR/XFRC)<br />

if (XFRC)<br />

{<br />

De-allocate Channel<br />

}<br />

else<br />

if (FRMOR)<br />

{<br />

Unmask CHH<br />

Disable Channel<br />

}<br />

else<br />

Doc ID 13902 Rev 9 807/995

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

Saved successfully!

Ooh no, something went wrong!