Skip to main content
Andrew Sterian
Associate II
February 19, 2025
Question

STM32H747 USB with DMA does not work

(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.

2 replies

ST Technical Moderator
February 19, 2025

Hi @Andrew Sterian 

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

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL
Andrew Sterian
Associate 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.