
USB on-the-go full-speed (OTG_FS)
RM0351
1738/1830
DocID024597 Rev 5
Unmask (NAK/TXERR/XFRC/BBERR/STALL/FRMOR/DTERR)
if (
XFRC
)
{
Reset Error Count
Mask
ACK
if (OTG_HCTSIZx.PKTCNT == 0)
{
De-allocate Channel
}
else
{
Transfer Done = 1
Unmask
CHH
Disable Channel
}
}
else
if (
STALL
or
FRMOR
or
NAK
or
DTERR
or
BBERR
)
{
Mask
ACK
Unmask
CHH
Disable Channel
if
(
STALL
or
BBERR
)
{
Reset Error Count
Transfer Done = 1
}
else
if (!
FRMOR
)
{
Reset Error Count
}
}
else
if (
TXERR
)
{
Increment Error Count
Unmask
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)
}