Skip to main content
Explorer
September 17, 2024
Question

How to implement STM32F4 as a USB Host to CDC Slave?

  • September 17, 2024
  • 2 replies
  • 1311 views

we are working on a project where an STM32F4 microcontroller is used as a host to connect with an external device. we are considering using the USB interface for this purpose. Can we refer to the following example to implement USB host functionality on the STM32F4, and are there any specific considerations or configurations we should be aware of for proper communication and integration?

https://controllerstech.com/usb-cdc-device-and-host-in-stm32/

    This topic has been closed for replies.

    2 replies

    Technical Moderator
    September 17, 2024

    Hello @tejashwini ,

    Let me first welcome you to the ST Community :)

    You can find relevant USB Host examples in the STM32CubeF4 MCU package.

    I advise you to refer to the User manual UM1720 for the "STM32Cube USB host library" which provides detailed and examples for USB Host implementation.

    Hope this helped you!

     

    Explorer
    January 10, 2025

    Hi ,

     

    Thanks for reply.

    I have used USB CDC Standalone example it is working fine.

    Implementing the same function by generating  project from STMcubemx is  getting device desciptor, transmitting data but not receiving data.

    So any solutions for this is helpful.

    Technical Moderator
    January 14, 2025

    Try increasing the heap size or configuring the USB library to use static allocation, as insufficient heap size or improper memory allocation can cause issues with data reception.

    Explorer
    January 15, 2025

    I have tried  with increasing heap and stack size, but also it is not working fine.  CDC stand alone example from STM32 has same heap and stack size which is working fine.

    Implementing the same is causing an issue in my project as Transmit callBack is not happening.

     

    Thanks for the help

    Technical Moderator
    January 15, 2025

    If CDC example from CubeF4 works, so you can compare your generated code with the working Cube example (compare configuration, functions...).

    Maybe, check the packet size that does not exceed 64 bytes for full-speed USB CDC transfers.
    If you need to receive more data, modify the application code to handle longer messages by splitting them into multiple packets. How to select suitable endpoints for your STM32 US... - STMicroelectronics Community

    You can share more details or your project (ioc file) if your issue is not resolved.

    Explorer
    January 27, 2025

    Hi,

     

    I am still facing the same issue where using example code is working but my code is not.  I have attached my .ioc file for reference.

    Thanks for the help