Release Notes for STM32 USB Device Audio Streaming Example

Copyright 2012 STMicroelectronics

 

Contents

  1. Update History
  2. License

Update History


  • The STM32 USB Device Audio Streaming Example shows how to use an STM32 device to implement a USB based headset and microphone. Audio Out streaming allows transferring audio data from the USB Host (i.e. PC) to the speaker or headset. And Audio In streaming allows transferring audio data from a microphone to the USB Host. The two streams are independent and can be simultaneous. The main concern is that due to the presence of different clock domains (USB Host, USB device and DAC clock domains), the synchronization of different clocks is necessary.
  • The available synchronization methods are:
    • Synchronization None: allows to see the difference between synchronized and non-synchronized streaming.
    • External Clock Synchronization: using clock synthesizer CS2200 (available on board STM322xG-EVAL and STM324xG-EVAL evaluation board revB). Jumper JP16 should be set in position 2-3 for this method. The clock sourced by the clock synthesizer is routed to I2S cell and periodically adjusted (with few ppm) according to the status of the monitored buffers (imminent overrun or underrun conditions prediction).
    • Feedback Pipe Synchronization: using isochronous feedback endpoint to report to the host reducing or increasing number of data sent during a frame in order to overcome predicted overrun or underrun condition.
    • Add-Remove Synchronization: adds or removes one or more samples when an overrun or underrun condition is predicted. In this case the removed sample is lost and the added sample is the average value of the previous 2 last samples.
    • Source Rate Conversion (SRC) Synchronization: adjust the data sampling rate (after reception) to the STM32 available clock rate. When the STM32 clock is slower than the USB clock then the data are down sampled and if the STM32 clock is faster than the USB clock then the data are oversampled. 
  • This solution supports STM32F105/7, STM32F2xx and STM32F4xx devices.

V1.0.0RC1 / 13-February-2012

Main Changes

  • Fix limitation "When running on STM32F4xx and using STM324xG-EVAL board, the system clock is configured to 120 MHz instead of 168 MHz, to respect the configuration of the CS2200 external clock synthesizer controller". In this version the STM32F4xx is running at maximum frequency 168 MHz

Known limitations


Supported Devices and EVAL boards

  • STM32F20x/21x devices + STM322xG-EVAL (MB786) RevB (Clock Synthesizer component is implemented only on board RevB)
  • STM32F40x/41x devices + STM324xG-EVAL (MB786) RevB + STM32F4-Discovery (MB997) RevA
  • STM32F105/107 devices + STM3210C-EVAL (MB784) RevB (using 25MHz or 14.7456MHz HSE clock source)
  • Notes
    • External Clock synchronization and Source Rate Conversion synchronization are not available for STM32F105/7 devices
    • Except External Clock synchronization method, all others run with internal PLL system and require no external hardware
    • For the STM32F105/7 devices only one audio frequency is supported: 48KHz

Contents

  • STM32_USB_Device_Library V1.1.0RC1        (release notes)
    • This Library is based on "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0" and has been updated for the purpose of "STM32 USB Device Audio Streaming" Example, and it is intended for use ONLY in this scope.
  • STM32_USB_OTG_Driver V2.0.0                  (release notes)
  • STM32 Audio Common Drivers V1.0.0RC1      (release notes)
    • These drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope.
  • PDM audio software decoding Library V1.1.1  (release notes)
  • SRC (Source Rate Converter) Library V1.0.0  (release notes)
  • Cortex-M CMSIS V2.1                                (release notes)
  • STM32F10x CMSIS V3.6.0                          (release notes)
  • STM32F10x_StdPeriph_Driver V3.6.0            (release notes)
  • STM3210C_EVAL board drivers V5.1.0          (release notes)
    • Some drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope. For more details refer to the release notes.
  • STM32F2xx CMSIS V1.1.2                          (release notes)
  • STM32F2xx_StdPeriph_Driver V1.1.1            (release notes)
  • STM322x_EVAL board drivers V5.1.0            (release notes)
    • Some drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope. For more details refer to the release notes.
  • STM32F4xx CMSIS V1.0.1                          (release notes)
  • STM32F4xx_StdPeriph_Driver V1.0.1            (release notes)
  • STM3240_41_G_EVAL board drivers V1.2.0    (release notes)
    • Some drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope. For more details refer to the release notes.
  • STM32F4-Discovery board drivers V1.1.1      (release notes)
  • STM32_EVAL Common drivers V5.0.1            (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V6.30
    • ST-Link for STM322xG-EVAL, STM324xG-EVAL  and STM32F4-Discovery boards (using the embedded ST-Link hardware)
    • J-Link for STM3210C-EVAL board

V1.0.0RC1 / 31-January-2012

Main Changes

  • All source files: update disclaimer to add reference to the new license agreement
  • Updated to support STM32F4xx devices and STM324xG-EVAL board
  • Re-organization of modules using the new architecture of Audio components (STM32_Audio\Common, STM32_Audio\Addons)
  • Update of the SRC method to have less clock distortion: 
    • The SRC update step is set to 0.001KHz (for 48KHz)
    • The maximum clock deviation allowed for SRC module is 0.01KHz

Known limitations

  • Please refer to readme file for known limitations list.

Supported Devices and EVAL boards

  • STM32F20x/21x devices + STM322xG-EVAL (MB786) RevB (Clock Synthesizer component is implemented only on board RevB)
  • STM32F40x/41x devices + STM324xG-EVAL (MB786) RevB + STM32F4-Discovery (MB997) RevA
  • STM32F105/107 devices + STM3210C-EVAL (MB784) RevB (using 25MHz or 14.7456MHz HSE clock source)
  • Notes
    • External Clock synchronization and Source Rate Conversion synchronization are not available for STM32F105/7 devices
    • Except External Clock synchronization method, all others run with internal PLL system and require no external hardware
    • For the STM32F105/7 devices only one audio frequency is supported: 48KHz

Contents

  • STM32_USB_Device_Library V1.1.0RC1        (release notes)
    • This Library is based on "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0" and has been updated for the purpose of "STM32 USB Device Audio Streaming" Example, and it is intended for use ONLY in this scope.
  • STM32_USB_OTG_Driver V2.0.0                  (release notes)
  • STM32 Audio Common Drivers V1.0.0RC1      (release notes)
    • These drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope.
  • PDM audio software decoding Library V1.1.1  (release notes)
  • SRC (Source Rate Converter) Library V1.0.0  (release notes)
  • Cortex-M CMSIS V2.1                                (release notes)
  • STM32F10x CMSIS V3.6.0                          (release notes)
  • STM32F10x_StdPeriph_Driver V3.6.0            (release notes)
  • STM3210C_EVAL board drivers V5.0.0          (release notes)
    • Some drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope. For more details refer to the release notes.
  • STM32F2xx CMSIS V1.1.2                          (release notes)
  • STM32F2xx_StdPeriph_Driver V1.1.1            (release notes)
  • STM322x_EVAL board drivers V5.0.2            (release notes)
    • Some drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope. For more details refer to the release notes.
  • STM32F4xx CMSIS V1.0.1                          (release notes)
  • STM32F4xx_StdPeriph_Driver V1.0.1            (release notes)
  • STM3240_41_G_EVAL board drivers V1.0.1    (release notes)
    • Some drivers are customized for the purpose of the "STM32 USB Device Audio Streaming" Example and intended for use ONLY in this scope. For more details refer to the release notes.
  • STM32F4-Discovery board drivers V1.1.1      (release notes)
  • STM32_EVAL Common drivers V5.0.1            (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V6.30
    • ST-Link for STM322xG-EVAL, STM324xG-EVAL  and STM32F4-Discovery boards (using the embedded ST-Link hardware)
    • J-Link for STM3210C-EVAL board

V0.2.0 / 14-September-2011

Main Changes

  • Beta2 release.
  • Add support for Source Rate Conversion (SRC) Synchronization.

Known limitations

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • The following situation has not been validated: When dynamic frequency switching is enabled (SUPPORTED_FREQ_NBR define in usbd_conf.h is higher than 1) and when the host uses this feature to optimize the bus usage by switch audio frequency multiple times while the audio file is playing (Windows XP SP3 and Windows 7 drivers don't use this mechanism).
  • There's no way to come back to the main menu after pressing KEY button (will be fixed in next versions) 
  • If the USB cable is unplugged during processing, lot of noise is noticed (will be fixed in next versions)

Supported Devices and EVAL boards

  • STM32F20x/21x devices + STM322xG-EVAL (MB786) RevB (Clock Synthesizer component is implemented only on board RevB)
  • STM32F40x/41x devices + STM32F4-Discovery (MB997) RevA
  • STM32F105/107 devices + STM3210C-EVAL (MB784) RevB (using 25MHz or 14.7456MHz HSE clock source)
    • External Clock synchronization and Source Rate Conversion synchronization are not available for STM32F105/7 devices. Except External Clock synchronization method, all others run with internal PLL system and require no external hardware.For the STM32F105/7 devices only one audio frequency is supported: 48KHz

Contents

  • STM32F2xx CMSIS               V1.0.0      (release notes)
  • STM32F4xx CMSIS               V1.0.0RC1 (release notes)    
  • STM32_USB_Device_Library   V1.0.1      (release notes)
    • For the purpose of this example This USB Device Library drivers and Audio class provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0" has been updated to provide synchronization mechanisms allowing to overcome the difference between USB clock domain and STM32 clock domain. The USB Device Core  has also been modified to support some specific features (Incomplete Isochronous transfer and class endpoint requests).
  • STM32_USB_OTG_Driver        V2.0.0     (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0     (release notes)
  • STM32F10x_StdPeriph_Driver  V3.5.0     (release notes)
  • STM32F4xx_StdPeriph_Driver  V1.0.0RC1(release notes)   
  • STM32_EVAL drivers              V4.6.2     (release notes)
  • Audio drivers                        V0.1.0     (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V6.30
    • ST-Link for STM322xG-EVAL and STM32F4-Discovery boards (using the embedded ST-Link hardware)
    • J-Link for STM3210C-EVAL board
  • RealView Microcontroller Development Kit (MDK-ARM) toolchain V4.21 + ULINK

V0.1.5 / 02-September-2011

  • Beta2 release for "STM32 USB Device Audio Streaming Example".
  • This example is based on the Device Audio example provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0", and has been updated to provide synchronization mechanisms allowing to overcome the difference between USB clock domain and STM32 clock domain. The USB Device Core  has also been modified to support some specific features (Incomplete Isochronous transfer and class endpoint requests).
  • The available synchronization methods are:
    • Synchronization None: allows to see the difference between synchronized and non-synchronized streaming.
    • External Clock Synchronization: using clock synthesizer CS2200 (available on board STM32 20-21-45-46 G EVAL evaluation board revB). Jumper JP16 should be set in position 2-3 for this method. The clock sourced by the clock synthesizer is routed to I2S cell and periodically adjusted (with few ppm) according to the status of the monitored buffers (imminent overrun or underrun conditions prediction).
    • Feedback Pipe Synchronization: using isochronous feedback endpoint to report to the host reducing or increasing number of data sent during a frame in order to overcome predicted overrun or underrun condition.
    • Add-Remove Synchronization: adds or removes one or more samples when an overrun or underrun condition is predicted. In this case the removed sample is lost and the added sample is the average value of the previous 2 last samples.
    • Source Rate Conversion Synchronization: adjust the data sampling rate (after reception) to the STM32 available clock rate. When the STM32 clock is slower than the USB clock then the data are downsampled and if the STM32 clock is faster than the USB clock then the data are oversampled.
External Clock synchronization and Source Rate Conversion synchronization are not available for STM32F105/7 devices.
Except External Clock synchronization method, all others run with internal PLL system and require no external hardware.
For the STM32F105/7 devices only one audio frequency is supported: 48KHz.

Main Changes

  • Added support to STM32F4xx devices and STM32F4-Discovery board.
  • Added support of development toolchain IAR EWARM toolchain V6.21
  • Refer to the readme file under, Project\USB_Device_Examples\Audio_Streaming, to know how to use the provided example.

Known limitations (will be fixed in next versions)

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • The following situation has not been validated: When dynamic frequency switching is enabled (SUPPORTED_FREQ_NBR define in usbd_conf.h is higher than 1) and when the host uses this feature to optimize the bus usage by switch audio frequency multiple times while the audio file is playing (Windows XP SP3 and Windows 7 drivers don't use this mechanism).

Contents

  • CMSIS CM3                        V1.30       (release notes)
  • CMSIS CM4                        V2.01       
  • STM32F2xx CMSIS               V1.0.0      (release notes)
  • STM32F4xx CMSIS               V1.0.0RC1     
  • STM32_USB_Device_Library   V1.0.1      (release notes)
  • STM32_USB_OTG_Driver        V2.0.0     (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0     (release notes)
  • STM32F10x_StdPeriph_Driver  V3.5.0     (release notes)
  • STM32F4xx_StdPeriph_Driver  V1.0.0RC1(release notes)   
  • STM32_EVAL                       V4.6.2     (release notes)
  • Audio                                 V0.0.2     (release notes)

Development Toolchains

  • KEIL MDK-ARM toolchain V4.20
  • IAR EWARM toolchain V6.21

Supported EVAL boards

  • STM322xG-EVAL (MB786) RevB for STM32F2xx devices (Clock Synthesizer component is implemented only on board RevB) and STM32F4xx devices.
  • STM3210C-EVAL (MB784) RevB for STM32F105/7 devices (using 25MHz or 14.7456MHz HSE clock source).
  • STM32F4-Discovery (MB997) RevA for STM32F4xx devices.

V0.1.4 / 15-August-2011

  • Beta1 release for "STM32 USB Device Audio Streaming Example".
  • This example is based on the Device Audio example provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0", and has been updated to provide synchronization mechanisms allowing to overcome the difference between USB clock domain and STM32 clock domain. The USB Device Core  has also been modified to support some specific features (Incomplete Isochronous transfer and class endpoint requests).
  • The available synchronization methods are:
    • Synchronization None: allows to see the difference between synchronized and non-synchronized streaming.
    • External Clock Synchronization: using clock synthesizer CS2200 (available on board STM32 20-21-45-46 G EVAL evaluation board revB). Jumper JP16 should be set in position 2-3 for this method. The clock sourced by the clock synthesizer is routed to I2S cell and periodically adjusted (with few ppm) according to the status of the monitored buffers (imminent overrun or underrun conditions prediction).
    • Feedback Pipe Synchronization: using isochronous feedback endpoint to report to the host reducing or increasing number of data sent during a frame in order to overcome predicted overrun or underrun condition.
    • Add-Remove Synchronization: adds or removes one or more samples when an overrun or underrun condition is predicted. In this case the removed sample is lost and the added sample is the average value of the previous 2 last samples.
    • Source Rate Conversion Synchronization: adjust the data sampling rate (after reception) to the STM32 available clock rate. When the STM32 clock is slower than the USB clock then the data are downsampled and if the STM32 clock is faster than the USB clock then the data are oversampled.
External Clock synchronization and Source Rate Conversion synchronization are not available for STM32F105/7 devices.
Except External Clock synchronization method, all others run with internal PLL system and require no external hardware.
For the STM32F105/7 devices only one audio frequency is supported: 48KHz.

Main Changes

  • Renamed the package (replace STM32F2xx by STM32: package supports STM32F2xx and STM32F105/7 devices)
  • Modified the package directories organization:
    • Removed the usbd_audio_out_if.c/.h, usbd_audio_in_if.c/.h and usbd_audio_correction.c/.h from the USB Audio Class and replaced by stm32_audio_out_if.c./h, stm32_audio_in_if.c/.h and stm32_audio_correction.c/.h in Utilities/Audio/Common directory.
    • Added new directory Utilities/Audio/Common which gathers all utilities for audio.
  • Added support for STM32F105/7 devices (supports 25MHz and 14.7456MHz HSE clock sources values).
  • Added audio include file stm32_audio.h in Utilities/Audio/Common directory.
  • Used latest USB OTG library (refer to the library release note for more details)
  • Development toolchain used is KEIL MDK-ARM V4.2 instead of IAR EWARM V6.10 (IAR EWARM toolchain V6.21 will be supported in next release).
  • Refer to the readme file under, Project\USB_Device_Examples\Audio_Streaming, to know how to use the provided example.

Known limitations (will be fixed in next versions)

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • The following situation has not been validated: When dynamic frequency switching is enabled (SUPPORTED_FREQ_NBR define in usbd_conf.h is higher than 1) and when the host uses this feature to optimize the bus usage by switch audio frequency multiple times while the audio file is playing (Windows XP SP3 and Windows 7 drivers don't use this mechanism).

Contents

  • CMSIS CM3                        V1.30       (release notes)
  • STM32F2xx CMSIS               V1.0.0      (release notes)
  • STM32_USB_Device_Library   V1.0.1      (release notes)
  • STM32_USB_OTG_Driver        V2.0.0     (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0     (release notes)
  • STM32_EVAL                       V4.6.2     (release notes)
  • Audio                                 V0.0.1     (release notes)

Development Toolchains

  • KEIL MDK-ARM toolchain V4.20

Supported EVAL boards

  • STM322xG-EVAL (MB786) RevB for STM32F2xx devices (Clock Synthesizer component is implemented only on board RevB)
  • STM3210C-EVAL (MB784) RevB for STM32F105/7 devices (using 25MHz or 14.7456MHz HSE clock source).

V0.0.5 / 17-May-2011

  • Beta1 release for "STM32 USB Device Audio Streaming Example".
  • This example is based on the Device Audio example provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0RC1", and has been updated to provide four synchronization mechanisms allowing to overcome the difference between USB clock domain and STM32 clock domain. The USB Device Core  has also been modified to support some specific features (Incomplete Isochronous transfer and class endpoint requests).
  • The available synchronization methods are:
    • Synchronization None: allows to see the difference between synchronized and non-synchronized streaming.
    • External Clock Synchronization: using clock synthesizer CS2200 (available on board STM32 20-21-45-46 G EVAL evaluation board revB). Jumper JP16 should be set in position 2-3 for this method. The clock sourced by the clock synthesizer is routed to I2S cell and periodically adjusted (with few ppm) according to the status of the monitored buffers (imminent overrun or underrun conditions prediction).
    • Feedback Pipe Synchronization: using isochronous feedback endpoint to report to the host reducing or increasing number of data sent during a frame in order to overcome predicted overrun or underrun condition.
    • Add-Remove Synchronization: adds or removes one or more samples when an overrun or underrun condition is predicted. In this case the removed sample is lost and the added sample is the average value of the previous 2 last samples.
    • Source Rate Conversion Synchronization: adjust the data sampling rate (after reception) to the STM32 available clock rate. When the STM32 clock is slower than the USB clock then the data are downsampled and if the STM32 clock is faster than the USB clock then the data are oversampled.
Except External Clock synchronization method, all others run with internal PLL system and require no external hardware.

Main Changes

  • Enhancements for I2C communication robustness (for audio Codec, IOExpander and clock synthesizer devices)
    • Update Codec_WriteRegister() and Codec_ReadRegister() by reducing time for which interrupts are masked.
    • Update the Codec_CtrlInterface_Init() and Codec_GPIO_Init() functions to configure I2C and its relative IOs only if the I2C peripheral is not yet enabled (else do nothing).
    • Update Codec_Init() function by reversing order between GPIOs initialization and codec reset.
    • Update the Codec and Clock Synthesizer timeout callbacks Codec_TIMEOUT_UserCallback() and CLK_SYNTH_TIMEOUT_UserCallback() in file usbd_usr.c to enable recovering from bus error state.
  • Bug fix for the enumeration (to pass certification tests):
    • In the configuration descriptor update the number of endpoints for interface 1 alternate setting 1 to be always 2 (feedback endpoint will be ignored when not referenced).
    • Update the  function usbd_audio_DescUpdate() in file usbd_audio_core.c by removing modification of the number of endpoints in interface 1 alternate setting 1.
  • Update the audio recorder robustness:
    • In function AUDIO_REC_TIM_IRQHANDLER() in file stm322xg_audio_recorder.c add clearing of ADC overrun flag (OVR) after reading data register.
    • In function AUDIO_REC_TIM_IRQHANDLER() in file stm322xg_audio_recorder.c add timeout condition for the loop on the ADC End of conversion flag (EOC).
    • In stm322xg_audio_recorder.h file add a define for the ADC End Of Conversion timeout: ADC_TIMEOUT_MAX.
  • Update function STM32_AudioRec_ClkUpdate() in file stm322xg_audio_recorder.c to use the step passed value instead of constant value.
  • Update the SYNCH_CLKUPDT_STEP value in usbd_audio_synchprocess.h and audio_app_conf.h files to value 2.
  • Refer to the readme file under, Project\USB_Device_Examples\Audio_Streaming, to know how to use the provided example.

Known limitations (will be fixed in next versions)

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • The following situation has not been validated: When dynamic frequency switching is enabled (SUPPORTED_FREQ_NBR define in usbd_conf.h is higher than 1) and when the host uses this feature to optimize the bus usage by switch audio frequency multiple times while the audio file is playing (Windows XP SP3 and Windows 7 drivers don't use this mechanism).

Contents

  • CMSIS CM3                        V1.3         (release notes)
  • STM32F2xx CMSIS               V1.0.0RC1 (release notes)
  • STM32_USB_Device_Library   V1.0.0RC5 (release notes)
  • STM32_USB_OTG_Driver        V2.0.0RC1 (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0RC1 (release notes)
  • STM32_EVAL                       V4.6.0      (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V6.10
    • Note1: A software patch is needed to use STM32F2xx devices with EWARM V5.50.5. If you do not have this patch installed, you can install it from the following folder "Utilities\Third_Party\EWARM_v5.50".

Supported EVAL boards

  • STM322xG-EVAL (MB786) RevB for STM32F2xx devices (Clock Synthesizer component is implemented only on board RevB)

V0.0.4 / 16-May-2011

Main Changes

  • Alpha4 release for "STM32F2xx USB Device Audio Streaming Example".
  • Updated example to use dynamic synchronization method selection (at run time)
    • Added new file for synchronization mechanism processing: usbd_audio_synchprocess.c/.h
    • Added new structure for dynamic synchronization mechanism selection and modification (SynchStruct_TypeDef). This allows to modify at run time the parameters of a synchronization method (synchronization period/ step /..)
  • Gathered most used configuration defines in a single user file:audio_app_conf.h. This allow keeping drivers unmodified when user application is modified.
  • Update the main function of the example (in app.c) to support dynamic synchronization mechanism selection:
    • Added menu items selection using Wakeup, Tamper and Key push buttons.
    • Added call to AUDIO_CORR_SetActiveMethod() and usbd_audio_DescUpdate() to update the active synchronization method and the configuration descriptor according to user selection.
  • This example is based on the Device Audio example provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0RC1", and has been updated to provide three synchronization mechanisms allowing to overcome the difference between USB clock domain and STM32 clock domain. The USB Device Core  has also been modified to support some specific features (Incomplete Isochronous transfer and class endpoint requests).
  • Main changes in this version are:
    • Support of the IN transfers (microphone) using STM32 12-bit ADC.
    • Bug fix in stm322xg_usbl_audio_codec.c: remove I2C initialization at codec startup in Codec_Init() function (because I2C is already initialized in IOExpander module).
  • Refer to the readme file under, Project\USB_Device_Examples\Audio_Streaming, to know how to use the provided example.

Known limitations (will be fixed in next versions)

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • An audible tick is perceived at start and pause of audio streaming due to missing configuration of the audio codec. This limitation will be corrected in future versions.
  • The following situation has not been validated: When dynamic frequency switching is enabled (SUPPORTED_FREQ_NBR define in usbd_conf.h is higher than 1) and when the host uses this feature to optimize the bus usage by switch audio frequency multiple times while the audio file is playing (Windows XP SP3 and Windows 7 drivers don't use this mechanism).

Contents

  • CMSIS CM3                        V1.3         (release notes)
  • STM32F2xx CMSIS               V1.0.0RC1 (release notes)
  • STM32_USB_Device_Library   V1.0.0RC5 (release notes)
  • STM32_USB_OTG_Driver        V2.0.0RC1 (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0RC1 (release notes)
  • STM32_EVAL                       V4.6.0      (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V6.10
    • Note1: A software patch is needed to use STM32F2xx devices with EWARM V5.50.5. If you do not have this patch installed, you can install it from the following folder "Utilities\Third_Party\EWARM_v5.50".

Supported EVAL boards

  • STM322xG-EVAL (MB786) RevB for STM32F2xx devices (Clock Synthesizer component is implemented only on board RevB)

V0.0.3 / 12-May-2011

Main Changes

  • Alpha3 release for "STM32F2xx USB Device Audio Streaming Example"
  • This example is based on the Device Audio example provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0RC1", and has been updated to provide three synchronization mechanisms allowing to overcome the difference between USB clock domain and STM32 clock domain. The USB Device Core  has also been modified to support some specific features (Incomplete Isochronous transfer and class endpoint requests).
  • Main changes in this version are:
    • Support of the IN transfers (microphone) using STM32 12-bit ADC.
    • Bug fix in stm322xg_usbl_audio_codec.c: remove I2C initialization at codec startup in Codec_Init() function (because I2C is already initialized in IOExpander module).
  • Refer to the readme file under, Project\USB_Device_Examples\Audio_Streaming, to know how to use the provided example.

Known limitations (will be fixed in next versions)

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • An audible tick is perceived at start and pause of audio streaming due to missing configuration of the audio codec. This limitation will be corrected in future versions.
  • The following situation has not been validated: When dynamic frequency switching is enabled (SUPPORTED_FREQ_NBR define in usbd_conf.h is higher than 1) and when the host uses this feature to optimize the bus usage by switch audio frequency multiple times while the audio file is playing (Windows XP SP3 and Windows 7 drivers don't use this mechanism).

Contents

  • CMSIS CM3                        V1.3         (release notes)
  • STM32F2xx CMSIS               V1.0.0RC1 (release notes)
  • STM32_USB_Device_Library   V1.0.0RC4 (release notes)
  • STM32_USB_OTG_Driver        V2.0.0RC1 (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0RC1 (release notes)
  • STM32_EVAL                       V4.6.0      (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V6.10
    • Note1: A software patch is needed to use STM32F2xx devices with EWARM V5.50.5. If you do not have this patch installed, you can install it from the following folder "Utilities\Third_Party\EWARM_v5.50".

Supported EVAL boards

  • STM322xG-EVAL (MB786) RevB for STM32F2xx devices (Clock Synthesizer component is implemented only on board RevB)

V0.0.2 / 18-April-2011

Main Changes

  • Alpha2 release for "STM32F2xx USB Device Audio Streaming Example"
  • This example is based on the Device Audio example provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0RC1", and has been updated to provide three synchronization mechanism allowing to overcome the difference between USB clock domain and STM32 clock domain. The USB Device Core  has also been modified to support some specific features (Incomplete Isochronous transfer and class endpoint requests).
  • Main changes in this version are:
    • Support of the Feedback pipe synchronization method
    • Support of dynamic audio sampling rate switching (supported rates are 48000, 44100, 32000 and 44000 Hz).
  • Refer to the readme file under, Project\USB_Device_Examples\Audio_Streaming, to know how to use the provided example.

Known limitations (will be fixed in next versions)

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • An audible tick is perceived at start and pause of audio streaming due to missing configuration of the audio codec. This limitation will be corrected in future versions.
  • The following situation has not been validated: When dynamic frequency switching is enabled (SUPPORTED_FREQ_NBR define in usbd_conf.h is higher than 1) and when the host uses this feature to optimize the bus usage by switch audio frequency multiple times while the audio file is playing.

Contents

  • CMSIS CM3                        V1.3         (release notes)
  • STM32F2xx CMSIS               V1.0.0RC1 (release notes)
  • STM32_USB_Device_Library   V1.0.0RC3 (release notes)
  • STM32_USB_OTG_Driver        V2.0.0RC1 (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0RC1 (release notes)
  • STM32_EVAL                       V4.6.0      (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V5.50.5
    • Note1: A software patch is needed to use STM32F2xx devices with EWARM V5.50.5. If you do not have this patch installed, you can install it from the following folder "Utilities\Third_Party\EWARM_v5.50".
    • Note2: If you are using EWARM v6.10 and later, you will need to update the used STM32F2xx Device in the project setting as follow (in all projects): 
      • Choose "Project > Options", select the "General Options" category then
      • In "Target" page, select "Device: ST STM32F207xx"

Supported EVAL boards

  • STM322xG-EVAL (MB786) RevB for STM32F2xx devices (Clock Synthesizer component is implemented only on board RevB)

V0.0.1 / 08-April-2011

Main Changes

  • Alpha1 release for "STM32F2xx USB Device Audio Streaming Example"
  • This example is based on the Device Audio example provided with the "STM32F105/7 and STM32F2xx USB Host and Device Library V2.0.0RC1", and has been updated to provide two synchronization mechanism allowing to overcome the difference between USB clock domain and STM32 clock domain (the USB Device Library core was not modified).
  • Refer to the readme file under, Project\USB_Device_Examples\Audio_Streaming, to know how to use the provided example.

Known limitations (will be fixed in next versions)

  • STM32F2xx USB HS core not supported yet, this version supports only the USB FS core.
  • Dynamic audio sampling rate switching not supported yet.
  • 44.1KHz audio sampling rate not supported yet.

Contents

  • CMSIS CM3                        V1.3         (release notes)
  • STM32F2xx CMSIS               V1.0.0RC1 (release notes)
  • STM32_USB_Device_Library   V1.0.0RC2 (release notes)
  • STM32_USB_OTG_Driver        V2.0.0RC1 (release notes)
  • STM32F2xx_StdPeriph_Driver  V1.0.0RC1 (release notes)
  • STM32_EVAL                       V4.6.0      (release notes)

Development Toolchains

  • IAR Embedded Workbench for ARM (EWARM) toolchain V5.50.5
    • Note1: A software patch is needed to use STM32F2xx devices with EWARM V5.50.5. If you do not have this patch installed, you can install it from the following folder "Utilities\Third_Party\EWARM_v5.50".
    • Note2: If you are using EWARM v6.10 and later, you will need to update the used STM32F2xx Device in the project setting as follow (in all projects): 
      • Choose "Project > Options", select the "General Options" category then
      • In "Target" page, select "Device: ST STM32F207xx"

Supported EVAL boards

  • STM322xG-EVAL (MB786) RevB for STM32F2xx devices (Clock Synthesizer component is implemented only on board RevB)

License

The use of this STM32 Firmware is governed by the terms and conditions of the License Agreement available in the root of this package.

For complete documentation on STM32 microcontrollers visit www.st.com/STM32