# Release Notes for STM32F10x USB Full Speed Device Library (USB-FS-Device_Lib)

Copyright © 2009 STMicroelectronics

## Contents

1. What's New in STM32 USB-FS-Device Library V3.0.1
2. What is STM32 USB-FS-Device Library?
3. STM32 USB-FS-Device Library update History
4. License

## What's New in STM32F10x USB-FS-Device Library V3.0.1

The STM32 USB-FS-Device_Lib V3.0.1 is an update of USBLib V2.2.1 that makes the library compliant with the Cortex™ microcontroller software interface standard (CMSIS).

## What is STM32 USB-FS-Device Library?

The STM32 USB-FS-Device Library provides a free, complete firmware package that makes implementation of USB-FS-Device interfaces in STM32 applications quick and easy, that allows developers to painlessly develop any flavor of USB-FS-Device firmware including:

- Control transfer with generic device management tasks
- Interrupt transfer with HID Mouse/Joystick demo
- Bulk transfer with mass storage demo
- Isochronous transfer with Voice Speaker demo

The STM32 USB-FS-Device Library is full CMSIS compliant.

## STM32 USB-FS-Device Library update History

### V3.0.1 - 04/27/2009

- STM3210x USB Library USB-FS-Device Mass Storage ARM startup file updated: increase stack size.

### V3.0.0 - 04/06/2009

- STM3210x USB Library renamed to STM32 USB-FS-Device Library (USB-FS-Device_Lib)
- STM32 USB-FS-Device Library is full CMSIS compliant
- STM32 USB-FS-Device Library Structure is updated.
- STM32 USB-FS-Device Library Package Architecture is enhanced
- Update with STM32F10x Standard Peripherals Library V3.0.0.

For more details, please refer to AN2953 "How to migrate from the STM32F10xxx firmware library V2.0.3 to the STM32F10xxx standard peripheral library V3.0.0".

### V2.2.1 - 09/22/2008

- Device_Firmware_Upgrade demo

- Update the FSMC NOR Driver and SPI FLASH Driver

- Mass_Storage demo

- Update the FSMC NAND, SD Card Drivers

- Virtual_COM_Port demo

- Update the USART Parity Configuration

### V2.2.0 - 06/13/2008

- Device_Firmware_Upgrade demo

- Add example with preconfigured projects for RVMDK, EWARMv4, EWARMv5, RIDE and HiTOP toolchain to demonstrate how to create a binary image to be loaded with the DFU

- Remove the Firmware License Agreement file

- Update the source files's header to remove reference to the License

### V2.1 - 05/30/2008

- Device_Firmware_Upgrade demo

- Resolve the issue of jump to user program with some toolchain. At each device startup, if user doesn't select to enter DFU mode the application program will check if user code is programmed starting from address 0x8003000 (test if the initial Stack Pointer is programmed at this address), and if so it will jump and execute this code. But since some toolchain places the initial Stack Pointer on the top of the SRAM memory (0x20010000 for High-density devices, 0x20005000 for Medium-density devices), this test will not detect that the Stack Pointer is programmed due to wrong definition of mask variable value. This issue is fixed in main.c file at line60: "0x2FFF0000" changed to "0x2FFE0000".

### V2.0 - 05/23/2008

1. General

- Update with STM32F10x FWLib V2.0 to support the extra peripherals and features embedded in the STM32 High-density devices.
- Add Firmware License Agreement file
- For more details about USB Library and demos implementation, please refer to the User manual "UM0424 STM32F10xxx USB development kit available for download from the ST microcontrollers website: www.st.com/stm32.
- Glossary

- Medium-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 32 and 128 Kbytes.
- High-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes.

2. USB library

- Correct the bug of control transfer when the data to transfer is an exact multiple of wMaxPacketSize for the endpoint. In this case the device should return a zero-length packet to indicate the end of the Data stage. For more details regarding this condition please refer to the section 8.5.3.2 of the USB 2.0 specification.

The functions DataStageIn() and Data_Setup0() in the file "usb_core.c" are
modified to support this feature.

- Correct the Get Status request (bus/self power feature reporting): function Standard_GetStatus(u16 Length) in the usb_core.c updated.

3. USB demos

- Add a CUSTOM_HID demo with PC applet (source code porvided) to give an example of how to create a customized HID device based on windows native driver.
- All demos ported to run on STMicroelectronics STM3210E-EVAL evaluation board (in addition to STM3210B-EVAL)

- JoyStickMouse

- add the support of the remote wake-up using the Key push button as wake-up source.
- add the support of STM32 STOP Mode entry/exit during USB Suspend/resume states.

- DFU

- update to support internal Flash programming of STM32 High-density devices
- add support of NOR flash memory mounted on the STM3210E-EVAL board (thismemory can be: M29W128F, M29W128G or S29GL128)
- add an intermediary layers to separate media access and USB class (files dfu_mal.c/h files and nor_if.c/h)

- Mass Storage Demo

- add support of NAND flash memory mounted on the STM3210E-EVAL board (only small page is supported (512Byte/page) and ECC is not supported)
- add an intermediary layers to separate media access and USB class (files mass_mal.c/h files and nand_if.c/h)

- All demos

- add the support of STMicroelectronics STM3210E-EVAL evaluation board (in addition to STM3210B-EVAL)
- add the support of a unique serial number string descriptor based on the STM32 Device Unique ID register.
- first plug bug: in the first plug on a new PC, Windows sends a specific Get string descriptor (OS descriptor index 0xEE). This descriptor is not supported by the demos so the function "GetStringDescriptor(u16 Length)" is modified to STALL all Get string descriptor requests with an index greater than the number of supported string descriptors(file usb_prop.c).
- the infinite loop in the USB initialization is removed to be compliant with embeded OSs (file usb_prop.c).
- update the "bDeviceState" possible values (file usb_pwr.h) to be:

- UNCONNECTED
- ATTACHED
- POWERED
- SUSPENDED
- ADDRESSED
- CONFIGURED
- The "bDeviceState" is updated according to the device state in the files usb_prop.c and hw_config.c

- current feature initialization: the field "pInformation->Current_Feature" is initialized on each USB reset (file usb_prop.c).
- update all device and configuration descriptors to be USB 2.0 complient and bus powered devices (file usb_desc.c).

### V1.0 - 10/08/2007

- Updated with STM32F10x FWLib V1.0
- All demos

- Add project with RIDE toolchain
- Product descriptor updated
- hw_config.c

- PD.09 pin configured as Output open-drain instead of Output push-pull

- Device_Firmware_Upgrade demo

- main.c

- Initialize user application's Stack Pointer before jumping to user application

### V0.3 - 05/21/2007

- Created.

## License

The enclosed firmware and all the related documentation are not covered by a License Agreement, if you need such License you can contact your local STMicroelectronics office.

THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

For Complete on STM32(CORTEX M3) 32-Bit Microcontrollers visit www.st.com/STM32