在线时间1 小时
UID2036137
ST金币0
蝴蝶豆0
注册时间2013-8-24
新手上路
- 最后登录
- 2019-3-23
|
a0a.1 0b0c
从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 中的波形文件。 |
|