文章目录
- 一、X-CUBE-USB-AUDIO扩展包
- 二、AUD_Streaming10 USB设备音频扩展应用程序
- 三、程序配置
- 3.1 音频配置
- 3.1 其他配置
- 3.2工程配置
- 四、目录内容
- 五、项目工程
一、X-CUBE-USB-AUDIO扩展包
STM32Cube的STM32 USB设备音频流软件扩展,由ST提供
请参阅X-CUBE-USB-AUDIO ST站点
X-CUBE-USB-AUDIO扩展包包括STM32F446E-EVAL
和STM32F769IDISCOVERY
板的库和应用示例,用作USB扬声器和录音机。
X-CUBE-USB-AUDIO扩展包可扩展;它允许为其他STM32设备和板开发USB音频应用程序。
主要特征
- 符合USB 2.0音频1.0级标准
- USB音频流播放和录制
- 播放采样率:96 kHz(用于高保真音频)、48 kHz和44.1 kHz
- 播放音频分辨率:24位(用于高保真音频)和16位
- 基于反馈的同步播放
- 记录采样率:96 kHz(用于高保真音频)、48 kHz、44.1 kHz和16 kHz
- 录制音频分辨率:24位(用于高保真音频)和16位
- 录制和回放都支持在编译阶段设置的多个采样率
- 录制和播放都支持多频率:在运行时根据主机请求在采样率之间切换
- 录音和播放都支持静音和音量控制
二、AUD_Streaming10 USB设备音频扩展应用程序
此应用程序是使用STM32Cube固件的USB音频流扩展包的一部分。它描述了如何基于STM32F446xx设备上音频流(输出:扬声器/耳机,输入:麦克风)功能的音频类实现来使用USB设备应用程序。
它遵循USB实施者论坛定义的“音频设备的通用串行总线设备类定义1.0版本,1998年3月18日”,用于通过USB FS设备重新编程应用程序。
按照此规范,只支持全速USB模式(不支持高速)。
大多数操作系统都支持这个类:不需要特定的驱动程序设置。
这是一个关于如何使用STM32F446xx USB OTG设备外设和SAI外设将音频数据从USB主机传输到STM32446E-EVAL板上实现的音频编解码器的高级应用程序。
HAL_Init()
函数重置所有外围设备,初始化闪存接口和systick。SystemClock_Config()
函数,用于将系统时钟(SYSCLK)配置为以168MHz的频率运行。选择该值以从主PLL驱动USB时钟。
三、程序配置
3.1 音频配置
usb_audio_user.h
USE_USB_FS
USE_USB_AUDIO_CLASS_10
USE_USB_AUDIO_PLAYBACK
USE_USB_AUDIO_RECORDING
USE_AUDIO_MEMS_MIC
: 使用PDM MEMS麦克风(最大支持频率48KHZ)USE_AUDIO_DUMMY_MIC
: 要使用虚拟麦克风而不是mems麦克风,它发送零数据包,模拟支持96KHZ的麦克风。为了发送96khz频率的虚拟数据,请确保USB_AUDIO_CONFIG_RECORD_USE_FREQ_96_K
设置为1,USB_AUDIO_CONFIG_RECORD_FREQ_MAX
设置为96K而不是48K
3.1 其他配置
usb_audio_user_cfg.h
USB_AUDIO_CONFIG_PLAY_RES_BIT/USB_AUDIO_CONFIG_PLAY_RES_BYTE
: 支持24位或16位音频。USE_AUDIO_PLAYBACK_USB_FEEDBACK
: 在播放中激活反馈USE_AUDIO_TIMER_VOLUME_CTRL
: 在低优先级的定时器中处理播放中的音量变化,这样可以减少音量变化时出现的故障USB_AUDIO_CONFIG_RECORD_RES_BIT/USB_AUDIO_CONFIG_RECORD_RES_BYTE
: 支持24位音频录制USE_AUDIO_RECORDING_USB_IMPLICIT_SYNCHRO
: 在MEMS话筒中使用隐式同步器USE_AUDIO_RECORDING_USB_NO_REMOVE
: 增强录制的音频质量,当编解码器采样率高于USB率时,会向主机发送额外的样本(避免删除样本)
3.2工程配置
4个工程配置
STM32446E-EVAL_USB_PLAYER
: 支持24位回放,并支持反馈同步。STM32446E-EVAL_USB_RECORDER
: MEMS录音器,支持16KHZ、48KHZ音频。可添加48KHZ以下的其他频率。STM32446E-EVAL_USB_AUD_DUM_RECORDER
: 支持音频16KHZ、44.1KHZ、48KHZ和96KHZ的USB音频虚拟记录器。STM32446E-EVAL_USB_AUD_ADVANCED
: 支持24位播放和录制,并支持反馈同步播放。
四、目录内容
USB_Device/AUD_Streaming10/Inc/main.h
,main program header fileUSB_Device/AUD_Streaming10/Inc/stm32f4xx_hal_conf.h
,HAL configuration fileUSB_Device/AUD_Streaming10/Inc/stm32f4xx_it.h
,interrupt handlers header fileUSB_Device/AUD_Streaming10/Inc/usb_audio_user_cfg.h
,user options for the projectUSB_Device/AUD_Streaming10/Inc/usb_audio.h
,Macros for the projectUSB_Device/AUD_Streaming10/Inc/usb_audio_constants.h
,list useful constantsUSB_Device/AUD_Streaming10/Inc/audio_user_devices.h
,如果用户更改扬声器或麦克风,则要修改的文件USB_Device/AUD_Streaming10/Inc/usbd_conf.h
,USB device driver Configuration fileUSB_Device/AUD_Streaming10/Inc/usbd_desc.h
,USB device AUDIO descriptor header fileUSB_Device/AUD_Streaming10/Src/audio_mic_node.c
,Mic node implementationUSB_Device/AUD_Streaming10/Src/audio_speaker_node.c
,Speaker node implementationUSB_Device/AUD_Streaming10/Src/main.c
,Main programUSB_Device/AUD_Streaming10/Src/stm32f4xx_it.c
,Interrupt handlersUSB_Device/AUD_Streaming10/Src/system_stm32f4xx.c
,STM32F4xx system clock configuration fileUSB_Device/AUD_Streaming10/Src/usbd_conf.c
,General low level driver configurationUSB_Device/AUD_Streaming10/Src/usbd_desc.c
,USB device AUDIO descriptorUSB_Device/AUD_Streaming10/Src/stm32f4xx_hal_msp.c
,Timer for playback volume change handling msp init
主要客制化文件
USB_Device\Extension\Drivers\BSP\Components\wm8994\wm8994_ex.c
,Customized wm8994.cUSB_Device\Extension\Drivers\BSP\Components\wm8994\wm8994_ex.h
,Customized wm8994.hUSB_Device\Extension\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_audio_ex.h
,Customized stm32446e_eval_audio.hUSB_Device\Extension\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_audio_ex.c
,Customized stm32446e_eval_audio.c
五、项目工程
STM32F446E-EVAL_UAC10-PLAY
: to use STM32 board as USB speakerSTM32F446E-EVAL_UAC10-REC
: to use STM32 board as USB microphoneSTM32F446E-EVAL_UAC10-ADV
: to use STM32 board as USB speaker and USB microphoneSTM32F446E-EVAL_UAC10-DUM
: to use STM32 board as USB microphone , that returns only zero padded packets. however it supports wide range of frequencies(96KHZ).
觉得好,就一键三连呗(点赞+收藏+关注)