USB HS CDC stop working if Internal IP DMA is enabled on STM32F469NI
Hi,
I am working on STM32F469NI using the USB OTG HS peripheral in CDC (VCOM) mode.
-
When using USB CDC without DMA, the VCOM works fine.
-
However, when I enable Internal IP DMA (from CubeMX → USB_OTG_HS → Parameter Settings → Enable internal IP DMA), the USB CDC communication stops working after some time.
Setup details:
-
MCU: STM32F469NI
-
USB mode: Device (CDC VCOM)
-
PHY: Internal FS PHY
-
DMA Mode: Internal IP DMA enabled for USB_OTG_HS
-
Running on custom board
Observed behavior:
-
On PC, the VCOM port is detected correctly.
-
Initially, data transfer works fine.
-
After some time (or after repeated Tx/Rx), the communication hangs completely. No data transfer occurs until reset.
-
If I disable Internal IP DMA, the issue goes away.
What I tried:
-
Checked buffer alignment (made Tx buffers 4-byte aligned).
-
Verified HAL callbacks (CDC_Transmit_FS etc.) are still being called.
Questions:
-
Is Internal IP DMA for USB HS CDC fully supported on STM32F469NI?
-
Are there known limitations / errata related to this?
-
Any additional configuration needed for DMA mode (buffer alignment, cache maintenance, etc.)?
-
Could this be an issue in Cube/HAL implementation?
Any guidance or reference examples would be helpful.