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).

猜你喜欢

转载自juejin.im/post/7114461759225724941
今日推荐