Skip to main content
Visitor II
February 19, 2025
Question

STM32H747 USB with DMA does not work

  • February 19, 2025
  • 1 reply
  • 619 views

(STM32H747I-DISCO board)

It seems to be a common problem -- USB HS works fine as long as this line reads:

hpcd_USB_OTG_HS.Init.dma_enable = DISABLE;

As soon as I change this to ENABLE (either manually or through STM32CubeMX) then USB enumerates but as soon as I start a BULK IN transfer, no data is received by the host, the host flags the transfer as "failed", and the STM32H747 USB pipeline is just "stuck". I have enabled level 3 USB debug messages and there is no error message printed.

I have already read this post and can confirm that:

1. My transmit buffers are aligned on 4-byte boundaries

2. The transmit buffer is in SRAM1 which is accessible to USB_OTG_HS1

3. All USB operations are happening on the Cortex-M4 processor of the STM32H747I, so there is no Cortex-M7 caching issues to consider

Any other ideas for how to enable the internal USB DMA?

    This topic has been closed for replies.

    1 reply

    Technical Moderator
    February 19, 2025

    Hi @Andrew Sterian 

    Check revision marking on the chip. Scatter/gather feature is only available on revision V devices.

    Visitor II
    February 19, 2025

    The DBGMCU_IDC register has the REV_ID[15:0] field as 0x2003 which tells me this is a Revision V chip.