2025-08-24 10:47 PM - edited 2025-08-24 11:52 PM
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.