DocID018909 Rev 11
RM0090
USB on-the-go full-speed (OTG_FS)
1368
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 uses the NPTXFE interrupt in OTG_FS_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_FS_HCTSIZx.PKTCNT == 0)
{
De-allocate Channel
}
else
{
Transfer Done = 1
Unmask
CHH
Disable Channel