原创博文,转载请注明出处

这是我高级电子技术试验课做的作业,拿来共享一下。项目在安福莱例程基础之上进行的功能完善,里面的部分内容可参考安福莱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播放器设计与实现的更多相关文章

  1. 基于GStreamer编写Mp3播放器

    一.简介 作者系统为CentOS6,本文在此基础上对Mp3播放器进行开发,需要使用mp3解码库libmad和gstreamer0.10-plugins-ugly,详细步骤如下.   二.操作步骤 1) ...

  2. 你用java的swing可以做出这么炫的mp3播放器吗?

    这个mp3播放器是基于java的swing编写的,我认为界面还是可以拿出来和大家看一看评一评. 先说说创作的初衷,由于前段时间工作不是很忙,与其闲着,还不如找一些东西来给自己捣腾捣腾,在 之前写的 j ...

  3. MP3播放器团队项目

    一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...

  4. 基于ffmpeg的C++播放器1

    基于ffmpeg的C++播放器 (1) 2011年12月份的时候发了这篇博客 http://blog.csdn.net/qq316293804/article/details/7107049 ,博文最 ...

  5. x宝23大洋包邮的老式大朝华MP3播放器简单评测

    (纯兴趣测评,非广告) 最近逛X宝,看到了这个古董级MP3播放器居然还在售,于是脑抽+情怀泛滥买了一个. 然后呢,从遥远的深圳跨越好几千公里邮过来了这个玩意: 那节南孚5号电池是我自己的,是为了对比一 ...

  6. 从零开始学习PYTHON3讲义(十四)写一个mp3播放器

    <从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...

  7. 基于jQuery虾米音乐播放器样式代码

    分享一款基于jQuery虾米音乐播放器样式代码.这是一款基于jquery+html5实现的虾米音乐播放器源码下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div c ...

  8. 团队编程--MP3播放器

    设计思路: 这次的作业是一个MP3播放器,它是一个团队项目.由于我们都没接触过这类的编程.刚开始的时候我们是不知道从什么地方着手的.经过我们的商量我们决定从现在市场主流的音乐播放器上找到几个主要的功能 ...

  9. 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载

    I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this M ...

随机推荐

  1. 优秀团队建设--美国式团队(ppt)

    美国式团队 一.团队精神 团队精神反映一个人的素养.一个人的能力,一个人与别人合作的精神和能力.一个团队是个有机的总体,作为个人,仅仅有全然融入到这个有机总体之中,才干最大限度地体现自己的价值. 团队 ...

  2. HTML5游戏开发引擎Pixi.js完全入门手册(一)框架简介及框架结构分析,作者思路剖析

    前言: 最近无聊在淘宝弄了个小店,打算做一个兼职.遇到一个客户,要我帮忙拷贝一个html5游戏.. 我这人有一个习惯,拿到自己没见过的东西.都会去研究一番.去网上查了下发现,资料都是英文版.感觉极度不 ...

  3. JavaScript总结一下--创建对象

          在JavaScript象主要就是用下面三种语句: var box=new Object(); 或var box=Object(); var box={};//字面量 function Bo ...

  4. POJ 1066 Treasure Hunt(相交线段&amp;&amp;更改)

    Treasure Hunt 大意:在一个矩形区域内.有n条线段,线段的端点是在矩形边上的,有一个特殊点,问从这个点到矩形边的最少经过的线段条数最少的书目,穿越仅仅能在中点穿越. 思路:须要巧妙的转换一 ...

  5. 浅谈javascript中的call()和apply()方法

    话说在js中,每个函数都包含两个非继承而来的放方法,apply()和call(),使得我们能在特定的作用域中调用函数. 官方定义: 语法:       fun.call(thisArg[, arg1[ ...

  6. poj 3254 Corn Fields 国家压缩dp

    意甲冠军: 要在m行n陆行,有一些格您可以种树,别人做不到的.不相邻的树,我问了一些不同的共同拥有的法律. 分析: 从后往前种,子问题向父问题扩展,当种到某一格时仅仅有他和他后面的n-1个格子的情况对 ...

  7. txt 开关 csv 可通用 工具

    Ruby Txt 开关 CSV 常用工具 to require 'csv' namespace :sys_file_conver do desc "把txt数据导入到csv中" t ...

  8. PHP的垃圾回收机制详解

    原文:PHP的垃圾回收机制详解 最近由于使用php编写了一个脚本,模拟实现了一个守护进程,因此需要深入理解php中的垃圾回收机制.本文参考了PHP手册. 在理解PHP垃圾回收机制(GC)之前,先了解一 ...

  9. MySQL存储引擎差异化实验

    本篇把MySQL最常用的存储引擎给大家做一个介绍,然后通过插入.修改和并发实验来了解和验证一下它们之间的一些差异. 一.MySQL存储引擎简介 存储引擎在MySQL结构里占据核心的位置,是上层抽象接口 ...

  10. Impala源代码分析---1

    2.Impala源代码分析 參考链接:http://www.sizeofvoid.net/wp-content/uploads/ImpalaIntroduction2.pdf 本章開始进入源代码分析阶 ...