cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H747 USB with DMA does not work

Andrew Sterian
Associate III

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

2 REPLIES 2
FBL
ST Employee

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 Accept as Solution on the reply which solved your issue or answered your question.


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