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

news/2024/12/23 4:34:52/

文章目录

  • 一、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-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).

觉得好,就一键三连呗(点赞+收藏+关注)


http://www.ppmy.cn/news/379557.html

相关文章

DIY 多媒体播放:Qt + MPlayer 的故事。

本文的主角是Linux下的万能播放器:MPlayer 因为MPlayer是开源的,所以倍受开发者爱戴。下载MPlayer-1.0rc2.tar.bz2到Linux中,依次configure,make,make install后,就可以在linux下使用MPlayer播放视频和音频…

Audio 多媒体播放流程

Android 多媒体播放流程MediaPlayer 框架mediaplayer state diagramNuplayer的创建setDataSourcepreparesyncOnStart and Decoder MediaPlayer 框架 Android 1.0→Packet video – Open core Android 1.6→Open Core 2.0 Android 2.0→Stagefright Android 2.1→Stage…

配置PotPlayer和Dolby Access启用耳机杜比全景声

最后修订: 2021-12-03 适合读者 观看的电影的是6声道或以上的蓝光电影,而不是立体声的网络电影 想体验由 音效插件立体声耳机 模拟出来环绕声音效 背景 如果你用的是立体声耳机/扬声器,电影的6声道/8声道环绕声通常由媒体播放器程序downm…

X-CUBE-USB-AUDIO 资料篇③——USB音频流概述

文章目录 一、USB协议概述二、USB音频功能描述对于音频播放对于音频录制 三、USB描述符四、涉及的硬件 本章概述了USB Audio Class 1.0标准,作为开发X-CUBE-USB-Audio扩展包的参考。 一、USB协议概述 USB通信协议为设备和主机(如PC)之间可靠…

便携式媒体播放器:电路、工作、布线及其应用

媒体播放器设备播放音频文件和数字视频。目前,有多种便携式媒体播放器可以简单地播放不同的数字音频、视频和图像文件。先进的媒体播放器支持游戏;录制视频并提供额外的存储空间。所以通常这个空间是存储卡槽的形式,体积较小,用于…

css自学框架之容器

学习自己开发CSS框架,起步代码之容器部分代码: html, body,dl, dt, dd, ol, ul,h1, h2, h3, h4, h5, h6,pre, code, form, p,fieldset, legend, figure{margin: 0; padding: 0;}*, *:before, *:after{ box-sizing: border-box } /*box-sizing: border-b…

GABSE与DB2的编码格式问题

在使用过程中发现中文字符在不同数据库中占用的字节的数量不一致 原因是数据库编码格式不同 但是即便如此,也可能是因为表的编码格式不同 在GBASE中可以使用下述语句查看表的编码格式 SHOW CREATE TABLE TABLE_NAME;这里查出来的GBASE的编码格式是UTF-8 这个语句…

Python - 匹配多行文本块的正则表达式

文章目录 编写正则表达式以匹配多行字符串的原因匹配多行字符串的可能解决方案Python re.compile() 方法Python re.search() 方法Python re.finditer() 方法Python re.findall() 方法Python re.MULTILINE 方法Python 正则表达式符号使用 re.compile() 匹配 Python 中的多行文本…