STMicroelectronics / STM32CubeH7

STM32Cube MCU Full Package for the STM32H7 series - (HAL + LL Drivers, CMSIS Core, CMSIS Device, MW libraries plus a set of Projects running on all boards provided by ST (Nucleo, Evaluation and Discovery Kits))
https://www.st.com/en/embedded-software/stm32cubeh7.html
Other
479 stars 298 forks source link

H7B3: USB with DMA generates many interrupts #278

Open PiPointX opened 10 months ago

PiPointX commented 10 months ago

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:

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.

RJMSTM commented 10 months ago

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,