USB on-the-go full-speed (OTG_FS)
RM0090
1332/1731
DocID018909 Rev 11
Figure 399. Bulk/control IN transactions
The sequence of operations is as follows:
a) Initialize channel 2.
b) Set the CHENA bit in HCCHAR2 to write an IN request to the non-periodic request
queue.
c) The
core
attempts to send an IN token after completing the current OUT
transaction.
d) The core generates an RXFLVL interrupt as soon as the received packet is written
to the receive FIFO.
e) In response to the RXFLVL interrupt, mask the RXFLVL interrupt and read the
received packet status to determine the number of bytes received, then read the
receive FIFO accordingly. Following this, unmask the RXFLVL interrupt.
ACK
Host
Application
Device
AHB
USB
OUT
DAT A0
MPS
1
MPS
1
MPS
write_tx_fifo
(ch_1)
init_reg(ch _1)
set_ch_en
(ch _2)
init_reg(ch_2)
write_tx_fifo
(ch_1)
set_ch_en
(ch _2)
ch_2
ch_2
ch_1
ch_1
De-allocate
(ch_1)
IN
ch_2
ch_2
ch_2
ch_1
ACK
O UT
set_ch_en
(ch _2)
Non-Periodic Request
Queue
Assume that this queue
can hold 4 entries.
4
1
6
ACK
DAT A0
IN
ACK
read_rx_sts
read_rx_fifo
1
MPS
set_ch_en
(ch _2)
1
MPS
read_rx_stsre
ad_rx_fifo
read_rx_sts
Disable
(ch _2)
1
2
3
4
5
6
7
De-allocate
(ch _2)
CHH interrupt
r
ch_2
2
3
5
7
8
9
12
13
read_rx_sts
10
11
DAT A1
MPS
DAT A1
ai15675
RXFLVL interrupt
XFRC interrupt
RXFLVL interrupt
RXFLVL interrupt
RXFLVL interrupt
XFRC interrupt