音频播放最核心的算法是音频解码,一般有独立的音频解码芯片,不需要额外编写算法,由解码芯片接收音频数据流即可。在本次实验中,是由STM32从SD卡中读取和解析音频文件,然后向音频解码芯片送出音频数据流,最后由音频解码芯片解码和和驱动输出音乐。 本次实验的音频解码主要是VS1053B或VS1003B,STM32与VS1053B之间的通讯使用SPI通讯。 MP3模块硬件电路: 本次实验能够实现循环播放、暂停、快进和后退功能,并且可以实时显示播放进度、播放总时间以及当前正在播放的音乐名称。 一,程序编写: 1, 程序编写步骤 1, SD文件系统初始化 2, MP3模块初始化 3, MP3硬件复位 4, 浏览Music文件夹 外层while循环:循环获取音频文件路径,实现循环播放 5, 索引音频文件路径 6, 打音频文件 7, 设置音效 8, 设置播放速度 9, 播放音乐 内层while循环:实时读取音频数据块进行解码播放,并且刷新播放进度条和捕捉前面板上的按键操作 10, 获取播放进度 11, 快进 12, 后退 13, 结束播放 二,程序编写 1, SD文件系统初始化 2, MP3模块初始化 实质是对SPI总线进行初始化 3, MP3硬件复位 有时候会出现初始化不成功的情况,所以增加一次硬件复位,用来消除VS1053芯片中的各种寄存器值,使其恢复到出厂设置值。 4, 浏览Music文件夹 设置音频文件路径和音频文件格式类型 外层while循环:循环获取音频文件路径,实现循环播放 5, 索引音频文件路径 6, 打音频文件 7, 设置音效 8, 设置播放速度 内层while循环:实时读取音频数据块进行解码播放,并且刷新播放进度条和捕捉前面板上的按键操作 9, 播放音乐并计算出播放时间长度 10, 获取播放进度 11, 快进、快退 12, 结束播放 完成的程序: 三, 编译、下载 1, 先将音乐文件拷贝到软件指定SD卡文件夹路径,或者要据SD卡来修改软件所设置的路径 2, 软件启动运行,前面板的显示 正在播放的歌曲的文件名和路径; 正在播放的进度和已播放的时间; 正在播放的歌曲总长度。 3,将耳机或音箱接上MP3模块的音频输出口,就可以听音乐了 |
|