从STM32F4xx 微控制器的内部Flash 或在外部U 盘上(通过主机模式中的USB FS 内核) 均可读取音频数据(wave)。记录的波形文件只能存储在外部U 盘中。 录音流程基于使用PDM 音频软件解码库的ST MP45DT02 MEMS 麦克风硬件(将麦克风生 成的PDM 数据转换为存储在U 盘中的PCM 数据)。 音频播放和录音应用支持两种大容量存储介质。在微控制器的内部Flash 或在外部U 盘上均 可播放音频数据,但记录数据时只能使用外部U 盘。这通过main.h 文件中的DEFINE 语句 选择。在工作区工具栏中,选择项目配置: ● MEDIA_IntFLASH ● MEDIA_USB_KEY 固件驱动程序可以: ● 从外部U 盘或内部Flash 播放存储的波形文件 ● 在外部U 盘中记录波形文件 ● 从播放切换为录音 此应用使用的主要STM32 模块包括: ● USB 外设:主机模式下配置。使用大容量存储类(MSC) 实现与U 盘的音频数据交换。 ● I2S 外设:在主发送器模式下配置,用于向外部音频编解码器(DAC) 发送音频数据。它 还可用作主接收器,作为MEMS 麦克风的输入时钟。 ● DMA:用于将数据从缓冲器发送到I2S 外设。这可以显著地降低CPU 负载。 ● I2C 外设:用于控制多个外部器件(如音频编解码器)并从此器件获取数据。 ● SPI 外设:用于控制MEMS 加速计。 ● 用户按钮:用于监视应用(播放或录音)。 从U 盘播放 在此演示中,使用FatFs 文件系统可打开U 盘上存储的任何波形文件,并通过DMA 和I2S 接口逐块传送到内部SRAM(1024 字节)。 从波形文件头中可读出语音采样周期。将音频编解码器连接到I2S 接口后可播放存储的波形 文件。 通过修改main.h 文件中的“WAVE_NAME”定义,可更改USB 密钥中加载的波形文件名。 波形文件名必须为十一个字符。 此应用会从U 盘读取所有的波形文件且仅显示以下格式的.WAV 文件: ● 音频格式:PCM(一种未经压缩的波形数据格式,其中的每个值表示采样时信号的振幅) ● 采样率:如8000、11025、16000、22050、44100 Hz 或48000 Hz。 ● 每次采样的位数:16 位(音频采样数据值的范围为[0-1024]) ● 通道数:2 个(立体声) 通过解析U 盘中的波形文件可检测采样率,以相应配置I2S。回放开始后蓝色LED 将持续 闪烁。 播放时使用双缓冲区。第一个缓冲区用于存储使用FatFs 文件系统从U 盘接收的波形数据。 缓冲区填充完毕后: ● DMA 将其内容发送到I2S 外设,再传送到外部音频编解码器DAC ● 第二个缓冲区存储U 盘的数据 这两个缓冲区可始终不停地交换,直到回放流程结束。 无论何时,如果U 盘从开发板断开连接,则蓝色LED 将熄灭,音频编解码器停止且红色LED 点亮。 如果U 盘重新连接到DISCOVERY 板,则红色LED 将熄灭,并且上一次运行的应用将重新 启动。 从内部Flash 回放 在此演示中,波形文件作为audio_sample.c 文件中声明的常量数组存储在内部Flash 中。 复位后,回放应用将在初始化音频DAC 后开始播放存储在内部Flash 中的波形文件。 |
STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
盘古UE-STM32F407工控板原理图
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
回复:【STM32F429心得】STM32F4DISCOVERY音频播放控制