Download STM32Cube USB device library

Transcript
UM1734
USB device library overview
The main application executes the user defined program. main.c, stm32fxx_it.c,
usbd_conf.c and usbd_desc.c together with their header files are the main files
(mandatory for the application) that the user needs to develop his own application. The user
can modify them according to his application requirements (class driver).
Only simple APIs are called. They allows interfacing between the application layer and the
USB library module which handles the USB initialization and getting the current status of the
USB.
To initialize the USB HAL driver, the USB device library and the hardware on the used board
(BSP) and to start the library, the user application must call these three APIs:
•
USBD_Init (): This function initializes the device stack and loads the class driver.
The device descriptor is stored in the usbd_desc.c and usbd_desc.h (used for the
configuration descriptor type) files:
•
USBD_RegisterClass(): This function links the class driver to the device core.
•
USBD_Start(): This function allows user to start the USB device core
For example the user can add additional endpoints in the usbd_conf file, depending on the
class requirement. This is done by calling USBD_LL_Init() function. The dev_endpoints
should contain the number of required endpoints following the USB class specifications.
The USB device library provides several configurations thanks to the usbd_conf.h file (for
more details refer to Section 5.1.5: Configuring the USB device firmware library on
page 22).
Note:
The HAL library initialization is done through the HAL_Init() API in the stm32fxxx_hal.c This
function performs the following operation:
- Reset of all peripherals
- Configuration of Flash prefetch, Instruction cache, Data cache
- Enabling of SysTick and configuration of 1 ms tick (default clock after Reset is HSI)
5.1.2
USB device data flow
The USB library (USB core and USB class layer) handles the data processing on endpoint 0
(EP0) through the I/O request layer when a wrapping is needed to manage the multi-packet
feature on the control endpoint, or directly from the stm32fxxx_hal_pcd layer when the other
endpoints are used since the USB OTG core supports the multi-packet feature. Figure 8
illustrates this data flow scheme.
DocID025934 Rev 3
19/59
58