随笔(1)STM32F4——音频播放器
1.实验平台
STM32F4 ==》I2S(全双工) 《== WM8978
2.实验目的
实现录音和音频播放
3.多媒体知识储备
播放网络视频数据的流程
解协议,解封装,解码视音频,视音频同步
HTTP/RTMP =》解协议后 =》MP4/FLV =》解封装 =》视频流(H.264)音频流(AAC) =》解码后 =》视频(RGB/YUV420) 音频(PCM)
<1>WAV简介
符合RIFF文件规范 PCM编码(脉冲编码调制)采样频率44.1k、16位量化数字 由若干Chunk组成
RIFF WAVE Chunk\Format Chunk\Fact Chunk\Data Chunk
每一个Chunk组成如下:块标识符(4bytes)\数据大小(4bytes)\数据
如RIFF块:"RIFF"/wav文件大小(总大小-8bytes)/"WAVE"
如Format块:"fmt "/size(20)/音频格式、通道数、采样率、字节速率等参数
如fact块:这是可选块 在非PCM格式的文件中会有
如data块:这才是PCM编码的WAV数据存放的地方
4.关于WM8978音频处理器
通过I2S接口和MCU进行音频数据的传输 将得到的wav数据(PCM编码)丢给WM8978(codec)即可播放声音
I2S(飞利浦)标准:
LRC 的频率就是音频数据的采样率 1fs
MCLK 由MCU提供,频率必须等于音频采样率的256倍,即256fs
WM8978的内部结构框图(通道开关):
5.STM32F4的I2S总线接口
类别其他如UART总线,大概会有什么组成部分?
发送缓存区 接收缓存区 时钟发生器 通信控制器
6.软件实现流程
1)初始化WM8978 :配置相关寄存器
2)初始化I2S :
3)解析WAV文件,获取音频信号采样率和位数并设置I2S时钟分频率
4)设置DMA
5)编写DMA传输完成中断服务函数
6) 开启DMA 传输,填充数据