Skip to main content
Graduate
August 13, 2025
Question

USB High Speed - CDC_Transmit_HS is always busy and callback is not called

  • August 13, 2025
  • 1 reply
  • 581 views

Dear ST,

I'm developing a project to send ADC data via USB high-speed to an external device (PC) with STM32H7S78-DK. I'm trying to establish communication via USB, but I'm having trouble with the CDC_Transmit_HS function, which always returns busy. Additionally, the callback CDC_TransmitCplt_HS() is never called, and the USBD_CDC_DataIn() function is not invoked. The hcdc->TxState = 0 is always different from 0. I don't understand why it is happening.

The USB init, I think it is ok, because I can identify it at an external computer with the correct description and 480 Mbit/s of USB High speed.

These are my configurations of USB:

JorgeAlves_1-1755107751791.png

JorgeAlves_2-1755107774781.png

JorgeAlves_3-1755107897224.png

The Global Interrupt for USB is also available.



This is the clock configuration:

JorgeAlves_4-1755107958926.png

 

 

This is my code at the main, I just developed a code to send "hello" every second, and if it is Busy, it will print an increment value on the LCD

JorgeAlves_0-1755107602325.png

This is my  USB init function:

JorgeAlves_5-1755108300636.png


Do you know what the solution can be to the CDC transmission issue with USB high-speed data transfer?

 

Best Regards,

Jorge Alves

 




    This topic has been closed for replies.

    1 reply

    Super User
    August 13, 2025

    Where is usb_buf located? Somewhere the USB DMA can access?

    Graduate
    August 14, 2025

    The usb_buf is located at  0x24000400

    JorgeAlves_0-1755164504006.png

     

    Can USB access it, right?

    Graduate
    August 18, 2025

    Dear ST, 

    Do you have any update? 

    Regards,

    Jorge