X-CUBE-USB-AUDIO 资料篇②——AUD_Streaming10 USB音频设备扩展应用

继续创作,加快成长!这是我参加「日新计划 6 月更文挑战」的第29天,点击查看活动详情

一、X-CUBE-USB-AUDIO扩展包

STM32Cube的STM32 USB设备音频流软件扩展,由ST提供
请参阅X-CUBE-USB-AUDIO ST站点

X-CUBE-USB-AUDIO扩展包包含STM32F446E-EVALSTM32F769IDISCOVERY板的库和运用示例,用作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 file
  • USB_Device/AUD_Streaming10/Inc/stm32f4xx_hal_conf.h,HAL configuration file
  • USB_Device/AUD_Streaming10/Inc/stm32f4xx_it.h,interrupt handlers header file
  • USB_Device/AUD_Streaming10/Inc/usb_audio_user_cfg.h,user options for the project
  • USB_Device/AUD_Streaming10/Inc/usb_audio.h,Macros for the project
  • USB_Device/AUD_Streaming10/Inc/usb_audio_constants.h,list useful constants
  • USB_Device/AUD_Streaming10/Inc/audio_user_devices.h,如果用户更改扬声器或麦克风,则要修正的文件
  • USB_Device/AUD_Streaming10/Inc/usbd_conf.h,USB device driver Configuration file
  • USB_Device/AUD_Streaming10/Inc/usbd_desc.h,USB device AUDIO descriptor header file
  • USB_Device/AUD_Streaming10/Src/audio_mic_node.c,Mic node implementation
  • USB_Device/AUD_Streaming10/Src/audio_speaker_node.c,Speaker node implementation
  • USB_Device/AUD_Streaming10/Src/main.c,Main program
  • USB_Device/AUD_Streaming10/Src/stm32f4xx_it.c,Interrupt handlers
  • USB_Device/AUD_Streaming10/Src/system_stm32f4xx.c,STM32F4xx system clock configuration file
  • USB_Device/AUD_Streaming10/Src/usbd_conf.c,General low level driver configuration
  • USB_Device/AUD_Streaming10/Src/usbd_desc.c,USB device AUDIO descriptor
  • USB_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.c
  • USB_Device\Extension\Drivers\BSP\Components\wm8994\wm8994_ex.h,Customized wm8994.h
  • USB_Device\Extension\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_audio_ex.h,Customized stm32446e_eval_audio.h
  • USB_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 speaker
  • STM32F446E-EVAL_UAC10-REC: to use STM32 board as USB microphone
  • STM32F446E-EVAL_UAC10-ADV: to use STM32 board as USB speaker and USB microphone
  • STM32F446E-EVAL_UAC10-DUM: to use STM32 board as USB microphone , that returns only zero padded packets. however it supports wide range of frequencies(96KHZ).