Contents
- Update History
- 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-2012Main
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-2012Main
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-2011Main
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
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
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
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-2011Main
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
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-2011Main
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
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-2011Main
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
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-2011Main
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
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)
LicenseThe
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
|