STM32CubeH7 icon indicating copy to clipboard operation
STM32CubeH7 copied to clipboard

H7B3: USB with DMA generates many interrupts

Open PiPointX opened this issue 2 years ago • 1 comments

Describe the set-up I'm using a H7B3 on a custom board. On this board I want to use USB with Azure USBx. The USB configuration in CubeMX is:

  • USB host only
  • DMA enabled
  • internal PHY
  • Speed: FullSpeed

I'm using CubeIDE 1.10.1. The USB device I want to use with the USB Host is a Prolific-Device.

Describe the bug Regarding the Reference Guide, USB interrupts like NAK, NYET, ... should be handled automatically by the DMA. But when I use the confguration above the interrupts never get disabled in USB_HC_StartXfer. And the interrupts get fired very often and have a huge influence on the performance of the controller.

How To Reproduce

  1. Set a breakpoint into the function USB_HC_StartXfer.
  2. Connect a prolific device
  3. Step through function
USBx_HC((uint32_t)ch_num)->HCINTMSK &= ~(USB_OTG_HCINTMSK_NYET |
                                               USB_OTG_HCINTMSK_ACKM |
                                               USB_OTG_HCINTMSK_NAKM);
  1. The code block above gets neve reached because of this check here:

if (((USBx->CID & (0x1U << 8)) != 0U) && (hc->speed == USBH_HS_SPEED))

Additional context It has to do with this issue here: https://community.st.com/t5/stm32-mcus-products/stm32f4-stm32f7-usb-host-core-interrupt-flood/td-p/436225

But the interrupts still get triggered even when DMA is enabled

Screenshots If applicable, add screenshots to help explain your problem.

PiPointX avatar Sep 19 '23 09:09 PiPointX

Hello @PiPointX,

Thank you for this report. We will get back to you as soon as we analyze it further. This may take some time. Thank you for your comprehension.

With Regards,

RJMSTM avatar Sep 20 '23 16:09 RJMSTM