DocID018909 Rev 11
RM0090
USB on-the-go high-speed (OTG_HS)
1529
Mask
ACK
Unmask
CHH
Disable Channel
if (
STALL
)
{
Transfer Done = 1
}
}
else
if (
NAK
or
TXERR
)
{
Rewind Buffer Pointers
Reset Error Count
Mask
ACK
Unmask
CHH
Disable Channel
}
else
if (
CHH
)
{
Mask
CHH
if (Transfer Done or (Error_count == 3))
{
De-allocate Channel
}
else
{
Re-initialize Channel (in next b_interval - 1 Frame)
}
}
else
if (
ACK
)
{
Reset Error Count
Mask
ACK
}
The application is expected to write the data packets into the transmit FIFO when the
space is available in the transmit FIFO and the Request queue up to the count
specified in the MCNT field before switching to another channel. The application uses
the NPTXFE interrupt in OTG_HS_GINTSTS to find the transmit FIFO space.
b) Interrupt
IN
Unmask (NAK/TXERR/XFRC/BBERR/STALL/FRMOR/DTERR)
if (
XFRC
)
{
Reset Error Count
Mask
ACK
if (OTG_HS_HCTSIZx.PKTCNT == 0)
{
De-allocate Channel
}
else
{