USB on-the-go full-speed (OTG_FS)
•
Interrupt service routine for interrupt OUT/IN transactions
a)
Unmask (NAK/TXERR/STALL/XFRC/FRMOR)
if (XFRC)
{
Reset Error Count
Mask ACK
De-allocate Channel
}
else
if (STALL or FRMOR)
{
Mask ACK
Unmask CHH
Disable Channel
if (STALL)
}
else
if (NAK or TXERR)
else
else
The application uses the NPTXFE interrupt in OTG_GINTSTS to find the transmit FIFO
space.
b)
1208/1284
Interrupt OUT
{
Transfer Done = 1
}
{
Rewind Buffer Pointers
Reset Error Count
Mask ACK
Unmask CHH
Disable Channel
}
if (CHH)
{
Mask CHH
if (Transfer Done or (Error_count == 3))
{
De-allocate Channel
}
else
{
Re-initialize Channel (in next b_interval - 1 Frame)
}
}
if (ACK)
{
Reset Error Count
Mask ACK
}
Interrupt IN
DocID029473 Rev 3
RM0430
Need help?
Do you have a question about the STM32F413 and is the answer not in the manual?
Questions and answers