2025-02-18 05:52 PM
(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?
2025-02-19 02:56 AM
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.
2025-02-19 09:48 AM
The DBGMCU_IDC register has the REV_ID[15:0] field as 0x2003 which tells me this is a Revision V chip.