Home >Documents >STM32Cube USB device library - unipi.itfor.unipi.it/alessandro_palla/files/2014/12/Cube-USB-...

STM32Cube USB device library - unipi.itfor.unipi.it/alessandro_palla/files/2014/12/Cube-USB-...

Date post:30-May-2020
Category:
View:3 times
Download:0 times
Share this document with a friend
Transcript:
  • May 2014 DocID025934 Rev 1 1/56

    UM1734 User manual

    STM32Cube USB device library

    Introduction Universal Serial Bus (USB) is the most successful interconnect in the history of personal computing which is used to connect devices like mouse, game-pads and joysticks, scanners, digital cameras, printers… etc. USB has also migrated into consumer electronics and mobile products.

    The aim of this document is to describe how to start and implement a USB device applications for most common USB device classes (HID, MSC, Audio, CDC…) based on the USB device stack that supports all STM32 microcontrollers series provided by STMicroelectronics.

    The USB device library is a part of STM32Cube firmware package (such as STM32CubeF0, STM32CubeF2, STM32CubeF3, STM32CubeF4 and STM32CubeL0) and can be downloaded free from ST website (http://www.st.com/stm32cube).

    www.st.com

    http://www.st.com/stm32cube http://www.st.com

  • Contents UM1734

    2/56 DocID025934 Rev 1

    Contents

    1 STM32Cube overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2 Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1 Acronyms and abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.2 Additional Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    4 USB device library architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.1 Architecture overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    5 USB OTG Hardware Abstraction Layer . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.1 Driver architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

    5.2 USB driver programming manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 5.2.1 Configuring USB driver structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    6 USB device library overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.1 USB device library description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    6.1.1 USB device library flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    6.1.2 USB device data flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    6.1.3 Core interface with low level driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    6.1.4 USB device library interfacing model . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    6.1.5 Configuring the USB device firmware library . . . . . . . . . . . . . . . . . . . . . 22

    6.1.6 USB control functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    6.2 USB device library functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    6.3 USB device class interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    7 USB device library class module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.0.1 HID class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    7.0.2 Mass storage class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    7.0.3 Device firmware upgrade (DFU) class . . . . . . . . . . . . . . . . . . . . . . . . . . 36

  • DocID025934 Rev 1 3/56

    UM1734 Contents

    3

    7.0.4 Audio class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    7.0.5 Communication device class (CDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    7.0.6 Adding a custom class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    7.0.7 Library footprint optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    8 Frequently-asked questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    9 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

  • List of tables UM1734

    4/56 DocID025934 Rev 1

    List of tables

    Table 1. List of terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Table 2. USB device status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Table 3. Standard requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Table 4. API description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Table 5. Low level Event Callback functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Table 6. USB library configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Table 7. USB device core files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Table 8. Class drivers files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Table 9. usbd_core (.c,.h) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Table 10. usbd_ioreq (.c,.h) files functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Table 11. usbd_ctrlq (.c,.h) files functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Table 12. USB device class files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Table 13. usbd_hid.c,h files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Table 14. SCSI commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Table 15. usbd_msc (.c,.h) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Table 16. usbd_msc_bot (.c,.h) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Table 17. usbd_msc_scsi (.c,.h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Table 18. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Table 19. DFU states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Table 20. Supported requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Table 21. usbd_dfu (.c,.h) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Table 22. Audio control requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Table 23. usbd_audio_core (.c,.h) files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Table 24. usbd_audio_if (.c,.h) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Table 25. Audio player states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Table 26. usbd_cdc (.c,.h) files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Table 27. Configurable CDC parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Table 28. usbd_cdc_interface (.c,.h) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Table 29. Variables used by usbd_cdc_xxx_if.c/.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Table 30. Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

  • DocID025934 Rev 1 5/56

    UM1734 List of figures

    5

    List of figures

    Figure 1. STM32Cube block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Figure 2. STM32Cube USB device library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Figure 3. USB device library architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Figure 4. Driver architecture overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Figure 5. USBD_HandleTypedef .

Click here to load reader

Reader Image
Embed Size (px)
Recommended