基于Stm32的MP3播放器设计与实现
原创博文,转载请注明出处
这是我高级电子技术试验课做的作业,拿来共享一下。项目在安福莱例程基础之上进行的功能完善,里面的部分内容可参考安福莱mp3例程。当然用的板子也是安福莱的板子,因为算起来总共做了也没几天,技术含量嘛,一般般,大家不喜勿喷。如果你正在学习stm32,希望能帮助到你。
项目代码已提交到我的github,点击进入。
下面是一些简单的介绍。
摘 要
Cortex-M3是ARM公司为要求高性能(1.25 Dhrystone MIPS/MHz)、低成本、低功耗的嵌入式应用专门设计的内核。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集和大幅度提高中断响应的紧耦合嵌套向量中断控制器,所有新功能都同时具有业界最优的功耗水平。
本报告给出一个由STM32、普通SD卡、VS1003B硬件解码芯片以及其他外围器件构成的MP3播放器。系统采用ARM Cortex-M3内核的STM32F103ZE作为微控制器,结合VS1003B音频解码芯片,SD卡存储器,TFT液晶显示屏等外围设备,以及FAT文件操作,设计并实现了可以控制暂停、播放、静音、删除、选择歌曲和调整音量的MP3播放器。本报告从硬件设计和软件设计两个方面对该MP3播放器的工作过程做了详尽分析。
关键词:STM32F103ZE、VS1003、FAT、Fonts、SD卡、MP3播放器
1、设计目的
MP3是MPEG Audio Layer3的简称,其实就是一种音频压缩技术。通过这个技术,MP3可以把音乐以1:10甚至1:12的压缩率压缩,从而大大降低了音乐文体的体积。由于MP3体积小,音质高的特征,所以MP3格式的音乐被广泛传播。
本次实验的目的是通过制作一个MP3播放器有助于我们更加了解对STM32、SPI接口、SD卡、TIMER、中断、FAT文件系统、VS1003B解码器的应用。
2、设计任务与性能指标
整个系统的功能实现包括:
1、SD卡读写
2、FAT文件系统
3、LCD人界界面
4、MP3文件播放
对于播放器的歌曲控制功能则包括暂停、播放、静音、删除、选择歌曲和调整音量。
3、系统总体设计与工作原理
STM32嵌入式MP3播放器由微处理器STM32F103ZE、SD卡、I2S音频DAC、VS1003B音频解码芯片、电源电路、晶振电路、复位电路、SPI总线、RS232串口、功能按键、指示灯、JTAG接口及各种扩展接口组成。
整个系统模块分为四个模块:MCU主芯片、CPU外围电路、VS1003B音频解码芯片、TFT液晶显示。MCU是STM32主芯片的最小板,上面有芯片工作需要的最小资源:时钟控制电路、复位电路、JTAG控制口以及与外围电路的接口。CPU外围电路上集成了稳压电源、滤波电路、SD卡、与液晶及音频解码芯片的连接电路。VS1003B和液晶分别是单独的音频解码芯片、控制显示部分。
整个系统的工作原理:STM32F103ZE微控制器首先对硬件设备进行初始化,然后读取SD卡中的音乐文件,并将数据送入VS1003B进行音频解码,得到模拟的音乐流,从而实现MP3的播放功能,同时结合TFT显示屏和功能按键实现了人机交互。
系统框图如下:

基于Stm32的MP3播放器设计与实现的更多相关文章
- 基于GStreamer编写Mp3播放器
一.简介 作者系统为CentOS6,本文在此基础上对Mp3播放器进行开发,需要使用mp3解码库libmad和gstreamer0.10-plugins-ugly,详细步骤如下. 二.操作步骤 1) ...
- 你用java的swing可以做出这么炫的mp3播放器吗?
这个mp3播放器是基于java的swing编写的,我认为界面还是可以拿出来和大家看一看评一评. 先说说创作的初衷,由于前段时间工作不是很忙,与其闲着,还不如找一些东西来给自己捣腾捣腾,在 之前写的 j ...
- MP3播放器团队项目
一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...
- 基于ffmpeg的C++播放器1
基于ffmpeg的C++播放器 (1) 2011年12月份的时候发了这篇博客 http://blog.csdn.net/qq316293804/article/details/7107049 ,博文最 ...
- x宝23大洋包邮的老式大朝华MP3播放器简单评测
(纯兴趣测评,非广告) 最近逛X宝,看到了这个古董级MP3播放器居然还在售,于是脑抽+情怀泛滥买了一个. 然后呢,从遥远的深圳跨越好几千公里邮过来了这个玩意: 那节南孚5号电池是我自己的,是为了对比一 ...
- 从零开始学习PYTHON3讲义(十四)写一个mp3播放器
<从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...
- 基于jQuery虾米音乐播放器样式代码
分享一款基于jQuery虾米音乐播放器样式代码.这是一款基于jquery+html5实现的虾米音乐播放器源码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div c ...
- 团队编程--MP3播放器
设计思路: 这次的作业是一个MP3播放器,它是一个团队项目.由于我们都没接触过这类的编程.刚开始的时候我们是不知道从什么地方着手的.经过我们的商量我们决定从现在市场主流的音乐播放器上找到几个主要的功能 ...
- 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载
I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this M ...
随机推荐
- DevExpress XtraReports 入门一 创建 Hello World 报表
原文:DevExpress XtraReports 入门一 创建 Hello World 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更 ...
- Git 基本原理与经常使用命令
平时使用过两种版本号控制软件 SVN 和 Git,平心而论,假设纯粹自己使用,那么绝对 Git 更加适合,本地库.远程库.离线工作.强大而灵活的分支.大名鼎鼎的Github, 这些都是选择 Git 的 ...
- bigdata_hive_Issue of Vectorization on Parquet table
When Vectorization is turned on in Hive:set hive.vectorized.execution.enabled=true;If the involved t ...
- 离github在导入dubbo工程
dubbo移动到github目前已经有一些时间,我们可能根本不习惯使用github.因此,我们仍然使用以前的版本号. 由于某些原因.阿里下载前关闭.在这里给大家提供一个私有地址: 链接:http:// ...
- mysql_【MySQL】常见的mysql 进程state
Analyzing 线程是对MyISAM 表的统计信息做分析(例如, ANALYZE TABLE ). checking permissions 线程是检查服务器是否具有所需的权限来执行该语句. Ch ...
- REUSEADDR 选项
一般而言,对于处理2MSL状态的套接字(一般为服务端套接字)是不允许接受从同一客户端重新发起一个新的连接的,但是套接字编程系统接口允许应用程序通过设置一个REUSEADDR选项,使处于2MSL状态的套 ...
- c# 官方命名规则
官方的哦. https://msdn.microsoft.com/zh-cn/library/vstudio/ff926074(v=vs.110).aspx
- DOS批处理的字符串功能
原文:DOS批处理的字符串功能 DOS批处理的字符串功能 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理功能有:截取字符串内容.替换字符串特 ...
- 使用jquery实现放大镜效果
原文:使用jquery实现放大镜效果 实现原理 首先,我们讲解一下放大镜效果的实现方式: 方法一:准备一张高像素的大图,当鼠标放到原图上,加载显示大图的对应位置. 方法二:对原图片进行放大,也就是调整 ...
- How to:installshield安装包怎样才能出现选择路径的界面?
原文:How to:installshield安装包怎样才能出现选择路径的界面? 这个问题新手问的很多,installshield的安装包默认设置下选择路径的界面藏在Custom安装类型下.在做完安装 ...