This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM6421: USB DMA hangs after EPRST

Part Number: AM6421


Hi,

I am developing bulk OUT communication for USB devices using the am6421.
And I try to cancel the DMA transfer request to the OUT endpoint by writing to the EPRST field in the EP_CMD register, while a transfer is in progress and the DBUSY status in the EP_STS register is set.
After performing the above procedure, initiating a DMA request does not start the transfer.
Is this behavior known?
Also, is there any workaround?

Best Regards,

  • Hi,

    Can you please specify what is use case here?

    Also before starting a DMA transfer again you have to wait till the EPRST bit again becomes 0. After the reset end you will also need to set the TRADDR.

    Regards,

    Tushar

  • Hi Tushar,

    Thank you for your reply.

    I am using a bulk OUT endpoint with a maximum packet size of 512 bytes.
    During communication, some kind of error occurs on the host side, and a Clear Feature request is sent. In response, the device needs to clear the STALL condition, and at the same time, it also performs an endpoint reset (EPRST) operation.

    Since then, even when the host sends an OUT packet after the device initiates a DMA request, the DMA no longer functions properly.

    Also before starting a DMA transfer again you have to wait till the EPRST bit again becomes 0. After the reset end you will also need to set the TRADDR.

    This is already handled in our implementation.

    Best Regards,

    Motofumi

  • Hi Tushar,

    I apologize, but we've discovered that the software implementation error prevented TRADDR from being updated.
    Thank you for your assistance.

    Best Regards,

    Motofumi

  • Hi Motofumi,

    Thanks for the above update. Happy to help Slight smile.

    Regards,

    Tushar