# Release Notes for # STM32F10x, STM32L1xx and STM32F3xx USB Full Speed Device Library Copyright 2013 STMicroelectronics
## Contents Update History License ## Update History ### V4.0.0 / 21-January-2013 Main Changes Add support of STM32F30xx and STM32F37xx devices Remove support of the USB OTG Full speed in device (peripheral) mode embedded in the STM32F105x/7x devices All source files starting with prefix otgd_fs (ex. otgd_fs_pcd.c/.h) were removed There is no change on the API dealing with the USB FS Device peripheral, full compatibility is maintained vs. V3.4.0 The STM32F105x/7x devices are supported by the STM32F105/7xx, STM32F2xx and STM32F4xx USB On-The-Go Host and Device Library (UM1021) All examples usb_pwr.c and usb_istr.c files updated to make the code more robust Custom HID example Add GET_Report/Set_Report features Add composite "Mass Storage and HID" example Add VirtualComport_Loopback example Remove USB Audio Streaming example (used only for STM32F105x/7x devices) Remove "stm32_usb-fs-device_lib_contents.htm" file: the information provided in this html page are available in UM0424 Contents CMSIS CM3 V3.01 (release notes) STM32F10x CMSIS V3.6.1 (release notes) STM32L1xx CMSIS V1.1.1 (release notes) STM32F30x CMSIS V1.0.0 (release notes) STM32F37x CMSIS V1.0.0 (release notes) STM32_USB-FS-Device_Driver V4.0.0 (release notes) STM32F10x_StdPeriph_Driver V3.6.1 (release notes) STM32L1xx_StdPeriph_Driver V1.1.1 (release notes) STM32F30x_StdPeriph_Driver V1.0.1 (release notes) STM32F37x_StdPeriph_Driver V1.0.0 (release notes) STM32_EVAL\Common V5.0.2 (release notes) STM3210B_EVAL V5.0.1 (release notes) STM3210E_EVAL V5.1.0 (release notes) STM32L152_EVAL V5.0.2 (release notes) STM32L152D_EVAL V1.0.1 (release notes) STM32303C_EVAL V1.0.1 (release notes) STM32373C_EVAL V1.0.0 (release notes) Development Toolchains IAR Embedded Workbench for ARM (EWARM) toolchain V6.50 + J-Link RealView Microcontroller Development Kit (MDK-ARM) toolchain V4.50 + ULINK Raisonance IDE RIDE7 (RIDE) toolchain v1.46 + Rlink Pro Atollic TrueSTUDIO toolchain V3.3.0 + ST-LINK TASKING VX-toolset for ARM Cortex-M V4.3r1 + ST-LINK Supported Devices and EVAL boards STM32F10x Medium-density devices and STM3210B-EVAL board STM32F10x High-density devices and STM3210E-EVAL board STM32F10x XL-density devices STM3210E-EVAL_XL board STM32L1xx Medium-Density devices and STM32L152-EVAL board STM32L1xx High-Density devices and STM32L152D-EVAL board STM32F37xx devices and STM32373C-EVAL board STM32F30xx devices and STM32303C-EVAL board ### V3.4.0 / 29-June-2012 Main Changes All source files: license disclaimer text update and add link to the License file on ST Internet. Add support of STM32L1xx High Density and Medium Density Plus devices Use latest version of STM32F10x and STM32L1xx HAL and BSP components (for more details refer to each component's release notes): CMSIS drivers: update directory structure to be compliant with CMSIS V2.1, full API compatibility maintained with previous version Standard Peripherals Drivers: miscellaneous bug fix and enhancement STM32xxx_EVAL board drivers: update drivers architecture and folder organization, full API compatibility maintained vs. V4.4.0 All examples: Project settings updated to be in line with changes made on latest version of the STM32F10x and STM32L1xx HAL and BSP drivers Remove projects for HiTOP toolchain Add projects for TASKING toolchain Add support of STM32L1xx High Density devices and STM32L152D_EVAL board Source code update to be in line with latest version of STM32xxx_EVAL board drivers JoyStickMouse example usb_pwr.c: remove duplicated function RCC_HSEConfig() Contents CMSIS CM3 V2.1 (release notes) STM32F10x CMSIS V3.6.1 (release notes) STM32L1xx CMSIS V1.1.1 (release notes) STM32_USB-FS-Device_Driver V3.4.0 (release notes) STM32F10x_StdPeriph_Driver V3.6.1 (release notes) STM32L1xx_StdPeriph_Driver V1.1.1 (release notes) STM32_EVAL\Common V5.0.2 (release notes) STM3210B_EVAL V5.0.1 (release notes) STM3210C_EVAL V5.0.1 (release notes) STM3210E_EVAL V5.0.1 (release notes) STM32L152_EVAL V5.0.2 (release notes) STM32L152D_EVAL V1.0.1 (release notes) Development Toolchains IAR Embedded Workbench for ARM (EWARM) toolchain V6.30.7 + J-Link RealView Microcontroller Development Kit (MDK-ARM) toolchain V4.50 + ULINK Raisonance IDE RIDE7 (RIDE) toolchain (RIDE7 IDE:7.36, RKitARM for RIDE7:1.38) + Rlink Pro Atollic TrueSTUDIO toolchain V3.0.0 + ST-LINK TASKING VX-toolset for ARM Cortex-M V4.2r1 + ST-LINK ### V3.3.0 / 21-March-2011 Main Changes Add support for STM32L15x Medium-Density Low-Power devices. Project All demos: add support for STM32L15x devices. Device_Firmware_Upgrade demo: Update the project to use the library SPI flash driver stm32_eval_spi_flash.c dfu_mal.c: add explanation of write and erase timings and use defines for all values usb_conf.h: add defines for Erase/Write timing values for all memories For STM32L15x devices, the Joystick Up button is used instead of Key push button to control entering DFU mode or jump to user application Custom HID demo: for STM32L15x devices, the Right/Left Joystick buttons are used instead of Key/Tamper push buttons Utilities Binary folder : update the hextobin.bat and axftobin.bat files to support the STM32L15x devices template project DFU_images folder: update DFU images for all demos Contents CMSIS CM3 V1.3 ( release notes) STM32F10x CMSIS V3.5.0 ( release notes) STM32L1xx CMSIS V1.0.0 ( release notes) STM32_USB-FS-Device_Driver V3.3.0 ( release notes) STM32F10x_StdPeriph_Driver V3.5.0 ( release notes) STM32L1xx_StdPeriph_Driver V1.0.0 ( release notes) STM32_EVAL V4.4.0 ( release notes) Development Toolchains IAR Embedded Workbench for ARM (EWARM) toolchain v5.50 RealView Microcontroller Development Kit (MDK-ARM) toolchain v4.13 Raisonance IDE RIDE7 (RIDE) toolchain (RIDE7 v7.24 & Rkit ARM v1.22.09.0254) Hitex IDE/Debugger (HiTOP) toolchain v5.32 (compiler: Tasking v3.0r3) Atollic TrueSTUDIO STM32 (TrueSTUDIO) toolchain v1.3.0 ### V3.2.1 - 07/05/2010 General Fix bug in usb_core.c (only for STM32F105x/7x Connectivity Line devices ). Libraries STM32_USB-FS-Device_Driver usb_core.c Setup0_Process() function: remove call to OTGD_FS_EP0StartXfer() function, to fix issue when the Endpoint0 is stalled and no further setup request is received. Project The library and demonstrations firmware are provided and have been tested with the following toolchains: EWARM v5.42 MDK- ARM v4.10 RIDE7 v7.24 & Rkit ARM v1.22.09.0254 HiTOP5.32 (compiler: Tasking v3.0r3) TrueSTUDIO v1.3.0 The Standard Peripherals Library components used in this version are: CMSIS: v1.30 Peripheral drivers: v3.3.0 Utilities: v4.2.0 AudioStreaming Demo: MDK-ARMproject: in the configuration "STM3210C-EVAL-14MHz", add HSE_Value = 14745600 define in the compiler preprocessor. Utilities\DFU_images DFU Update all STM3210C-EVAL DFU images (available in folder " STM32_USB-FS-Device_Lib\Utilities\DFU_images "). . ### V3.2.0 - 05/14/2010 General Add support for STM32F10x XL-Density devices. Solve issues and enhance the Virtual COM Port demo. Update drivers to support Isochronous IN transfers. Add project for TrueSTUDIO toolchain. Update demos projects to use latest version V3.3.0 of Standard Peripherals Library. Libraries STM32_USB-FS-Device_Driver otgd_fs_cal.c/h Update all registers and bit names to be in line with the reference manual description and remove unused registers/bits. Update function OTGD_FS_EPStartXfer() to support Isochronous IN transfers. Remove unused code in OTGD_FS_EPStartXfer() function. Internal core delay functions ( mDelay() and uDelay() in otgd_fs_cal.h )modified to use SysTick timer or other user-defined counting mechanism through a user defined function: USB_OTG_BSP_uDelay() .This function prototype is declared in library header file ( otgd_fs_cal.h ) and should be implemented in user application. In all provided demos a template of the function USB_OTG_BSP_uDelay() is implemented in hw_config.c file. otgd_fs_pcd.c Remove extra NAKs and PID toggling and update impacted functions accordingly. otgd_fs_pcd.c Update function OTGD_FS_Handle_InEP_ISR() to support Isochronous IN transfers. Remove extra NAKs and PID toggling and update impacted functions accordingly. Project The library and demonstrations firmware are provided and have been tested with the following toolchains: EWARM v5.42 MDK- ARM v4.10 RIDE7 v7.24 & Rkit ARM v1.22.09.0254 HiTOP5.32 (compiler: Tasking v3.0r3) TrueSTUDIO v1.3.0 The Standard Peripherals Library components used in this version are: CMSIS: v1.30 Peripheral drivers: v3.3.0 Utilities: v4.2.0 All demos hw_config.c: Serial Number definition ( Get_SerialNum() function in all hw_config.c demo files) modified to provide host with a string in Unicode format (instead of device Unique ID in hex format). Virtual_COM_Port demo Demo enhanced by using more reliable data buffering algorithm (largecircular buffer for IN transfers using SOF synchronization) and modifying data OUT writing algorithm. For more details, please refer to the "readme.txt" file in the demo folder. Custom_HID demo usb_desc.c: Modify the Usage page code from 0x8C to "Vendor defined usage page" ( 0xFF00 ) Mass_Storage demo Update the project to use the library SD card drivers stm32_eval_spi_sd.c and stm32_eval_sdio_sd.c . Utilities\DFU_images Binary Update the hextobin.bat and axftobin.bat files to support the XL-Density devices template project. DFU Update DFU images for all demos (available in folder " STM32_USB-FS-Device_Lib\Utilities\DFU_images "). Note: STM32F10x XL-Density devices are supported with the same boards as High-Density devices (ie. STM3210E-EVAL boards). ### V3.1.1 - 04/07/2010 General Solve issue for Virtual Com Port demo on STM32F105x/7x Connectivity Line devices; change the FIFO allocation in the USB OTG Core layer to define statically the Rx and all Tx FIFO sizes following the application configuration in the usb_config.h file (defined in each project). Add project for HiTOP toolchain Libraries STM32_USB-FS-Device_Driver otgd_fs_cal.c Initialize some local variables OTGD_FS_CoreInitDev() function: update FIFO allocation to handle user configuration in the usb_config.h file otgd_fs_int.c Initialize some local variables OTGD_FS_Handle_RxStatusQueueLevel_ISR() function: remove commented code OTGD_FS_PCD_WriteEmptyTxFifo() function: increment xfer_buff after writing to the FIFO OTGD_FS_Handle_InEP_ISR() function: code updated to manage all endpoints (previously supporting only endpoint 1) otgd_fs_pcd.c optimize coding of OTGD_FS_PCD_EP_Open() function Initialize some local variables Project The library and demonstrations firmware are provided and have been tested with the following toolchains: IAR: EWARM v5.41 RVMDK: ARM-MDK v4.10 RIDE: RIDE7 v7.24 & Rkit ARM v1.22.09.0254 HiTOP: HiTOP5.32 (compiler: Tasking v3.0r3) All demos usb_config.h: add the definition of FIFO partitions for STM32F105x/7x Connectivity Line devices (for more details refer to the comments within this file) Audio_Speaker demo usb_desc.c: change error in USB Descriptor comment Virtual Com Port demo: update USART interrupt service routine to handle the OverRun error Utilities\DFU_images Update DFU images of Virtual Com Port demo ### V3.1.0 - 10/30/2009 General Supports the USB OTG Full speed in device (peripheral) mode embedded in the STM32F105x/7x Connectivity Line devices. Implements SIL layer (Simplified Interface Layer) for initialization, read and write operations on non control endpoints. Audio Streaming demonstration added for STM32F105x/7x Connectivity Line devices. Update with STM32F10x Standard Peripherals Library V3.1.2 Libraries STM32_USB-FS-Device_Driver Enhancements: Minor modifications in usb_int.c : replace some functions by macros to improve speed. Implemented new medium layer: SIL (Simplified Interface Layer, usb_sil.c /.h) allowing simple initialization , read and write operations on non control Endpoints. New features: Added Peripheral interface layer to support Connectivity Line USB peripheral: ( otgd_fs_dev.c /.h, otgd_fs_cal.c /.h, otgd_fs_pcd.c /.h, otgd_fs_int.c /.h, otgd_fs_regs.h ) (managed by pre-compiler defines). Minor modifications on usb_core.c to support Connectivity Line USB peripheral (managed by pre-compiler defines). STM32F10x_StdPeriph_Driver Update with STM32F10x Standard Peripherals Library V3.1.2 Project The library and demonstrations firmware are provided and have been tested with the following toolchains: IAR: EWARM v5.42 RVMDK: ARM-MDK v3.80a RIDE: RIDE7 v7.24 & Rkit ARM v1.22.09.0254 Projects for HiTOP toolchain will be provided in next version. Custom HID, Joystick Mouse, Device Firmware Upgrade, Mass Storage and Virtual Com Port demos have been updated to support Connectivity Line devices and use the SIL layer (Simplified Interface Layer). Mass Storage demo: minor modifications on msd.c driver to support larger range of micro SD cards. Joystick Mouse: Update of Remote wake-up function to operate properly. Device Firmware Upgrade: DFU Descriptors updated. Added Audio Streaming demo for Connectivity Line devices. Utilities Binary Updated the hextobin.bat and axftobin.bat files to support the connectivity line template project. Updated the hextobin.bat file to use hex files generated by IAR toolchain. DFU Added dfu image for Connectivity Line devices. ### 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 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. 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. USB demos Add a CUSTOM_HID demo with PC applet (source code provided ) 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 ( this memory 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 embedded 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 compliant 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 Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this package except in compliance with the License. You may obtain a copy of the License at: http://www.st.com/software_license_agreement_liberty_v2 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. For complete documentation on STM32 Microcontrollers visit www.st.com/STM32