在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 12936|回复: 20

DIYMP3

[复制链接]
发表于 2003-12-16 20:18:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
DIY自己的MP3的一个很大原因是手头有几个小硬盘(1,2个G),扔了可惜,放在电脑里简直是浪费主板的IDE接口,相信DIY玩家们都深有同感吧。所以我就想,如果不需要PC,直接接个解码板就可以播放里面的MP3,那该是多好的事情啊。
MP3播放机的工作原理
  首先来看看硬件结构:
  
10_126.jpg
 楼主| 发表于 2003-12-16 20:21:12 | 显示全部楼层

DIYMP3

  一个完整MP3播放机要分几个部分:中央处理器、解码器、存储设备、主机通讯端口、音频DAC和功放、显示界面和控制键。如上图。其中中央处理器和解码器是整个系统的核心,在我的DIY作品中,这两个部分集成在一个芯片中。这里的中央处理器我们通常称为MCU(单片微处理器),简称单片机。它运行MP3的整个控制程序,也称为fireware。控制MP3的各个部件的工作:从存储设备读取数据送到解码器解码;与主机连接时完成与主机的数据交换;接收控制按键的操作,显示系统运行状态等任务。解码器是芯片中的一个硬件模块,或者说是硬件解码(有的MP3播放机是软件解码,由高速中央处理器完成)。它可以直接完成各种格式MP3数据流的解码操作,并输出PCM或I2S格式的数字音频信号。
存储设备是MP3播放机的重要部分,通常的MP3随身听都是采用半导体存储器(FLASH MEMORY),在我的作品中是用硬盘存作为存储器。它通过主机通讯端口传来的数据(通常以文件形式),回放的时候MCU读取存储器中的数据并送到解码器。数据的存储是要有一定格式的,众所周知,PC管理磁盘数据是以文件形式,MP3也不例外,最常用的办法就是直接利用PC的文件系统来管理存储器,微软操作系统采用的是FAT文件系统,这也是最广泛使用的一种。播放机其中一个任务就是要实现FAT文件系统,即可以从FAT文件系统的磁盘中按文件名访问并读出其中的数据。
  主机通讯端口是MP3播放机与PC机交换数据的途径,PC通过该端口操作MP3播放机存储设备中的数据,拷贝、删除、复制文件等操作。目前最广泛使用的是USB总线,并且遵循微软定义的大容量移动存储协议规范,将MP3播放机作为主机的一个移动存储设备。这里需要遵循几个规范:USB通信协议、大容量移动存储器规范和SCSI协议。
  音频DAC是将数字音频信号转换成模拟音频信号,以推动耳机、功放等模拟音响设备。这里要介绍一下数字音频信号。数字音频信号是相对模拟音频信号来说的。我们知道声音的本质是波,人说能听到的声音的频率在20Hz到20kHz之间,称为声波。模拟信号对波的表示是连续的函数特性,基本的原理是不同频率和振幅的波叠加在一起。数字音频信号是对模拟信号的一种量化(如下图),典型方法是对时间坐标按相等的时间间隔做采样,对振幅做量化。单位时间内的采样次数称为采样频率。这样一段声波就可以被数字化后变成一串数值,每个数值对应相应抽样点的振幅值,按顺序将这些数字排列起来就是数字音频信号了。这是ADC(模拟-数字转换)过程,DAC(数字-模拟转换)过程相反,将连续的数字按采样时候的频率顺序转换成对应的电压。MP3解码器解码后的信息属于数字音频信号(数字音频信号有不同的格式,最常用的是PCM和I2S两种),需要通过DAC转换器变成模拟信号才能推动功放,被人耳所识别。
  MP3播放机的软件结构跟硬件是相对应的,即每一个硬件部分都有相应的软件代码,这是因为大多数的硬件部分都是数字可编程控制的。最简化的MP3软件处理任务只有两个操作:
  1. 读取存储器上的数据,送到解码器,解码器的输出送到音频DAC;
  2. 分析USB主机控制器发的指令,完成对存储器的操作,将操作结果送回USB主机。
  前一个处理过程完成了MP3数据的回放,后一个处理过程实现了USB移动存储器。这两个过程也是整个软件部分最复杂的。除此之外的部分都是为了实现主要功能设计的,由于篇幅限制,不能对每个模块详细说明。
DIY过程
  如此复杂的一个系统,DIY的过程也是漫长艰难的,从最初到初步完成历时8个月。大致分成几个阶段:资料搜集和器件选型、绘制电路图、制作印刷电路板、焊接和硬件调试、软件编码、外壳包装。
  资料搜集和器件选型
  这项工作我很早就开始了。 小小的MP3播放机汇聚了多项标准协议,包括MP3标准本身,用于存储的FAT文件系统,USB通信协议和微软大容量移动存储标准。互联网真是个好东东,假如没有互联网,这个东西恐怕也不可能造出来。所有的参考资料都来自于网络。
  资料是有了,能否实现关键依赖于能否找到合适的器件。好在一开始就选定了ATMEL公司的MP3单芯片解决方案,这颗IC真是做MP3绝好的选择,它集成了MP3需要的大多数部件。外围芯片也很重要,首先要解决的就是音频DAC,选择的要点是要能与解码器输出的数字音频信号格式匹配,其次要考虑价格,是否能买到等因素。剩下的就是一些普通芯片了,逻辑门、存储器,电源、功放、各种插件等。这可是一个痛苦的过程,在网上找到资料,经研究符合使用条件,于是就到市场上找,买到后回来做实验。很多器件不是很容易就能买到的,买不到就得重新查资料,选新的型号,然后再去市场。辗转很多次,最终定了现在看到的这些东西。



10_126_1.bmp
 楼主| 发表于 2003-12-16 20:27:30 | 显示全部楼层

DIYMP3

电路调试
  线路板不能一次把所有的器件焊上,主要是为分部测试考虑,如果一下都焊上,有的器件有问题,影响整个电路工作,就不好找原因了。要先焊主芯片,以及主芯片运行所必需的一些外围器件,完成后可以加点,看看主芯片是否正常运行。正常情况主芯片内部有一个引导程序(相当于PC的BIOS),它运行后连接USB总线能够被PC发现新硬件。
  这些正常后可以继续焊完其他的器件。如下图,就是焊接完成的板子。其它部分的硬件需要程序来测试,比如硬盘的读写,串口通信,液晶显示,键盘处理等。针对每个部件写一段最简单的程序进行测试,证明其能正常工作。
  
完成了上面的所有工作,大约值进行了整个工程的30%,软件至少占了50%的工作量。由于要实现文件系统和USB的通讯协议,需要大量复杂的数据结构和运算,为了提高开发效率,完全使用C语言来写程序。软件编码很抽象,不象硬件值做那样直观,也就不过的描述了。这部分工作最终的结果就是赋予MP3播放机以灵魂,使一堆密密麻麻的电路动了起来,能够接受人的控制,显示自己的状态,读取硬盘的数据,最终播放出音乐。
  由于程序都是分模块写的,我没精确统计过程序长度,大概估计有4000行C源代码,编译后有40多KB。也许朋友们会问怎么这么少?这对MCU来说已经很大了,要知道这个芯片只有64K的地址空间,也就是程序最大不能超过64K。
制作后记
  半年多的努力终于有了成果,由于是完全由自己DIY的东西,还有不少技术细节很难在这里完全表达清楚,而且我还要不断完善我的这个作品。马上要做的是给它加上遥控器,随便找一个家电的遥控器就可以控制。
  最后,我要对大家说的是,一些产品并不是我们想像中的那么高深莫测的,只要肯动脑动手去摸索,其实是可以弄明白它的原理及制法的。通过这篇文章,我希望能让更多的朋友尝试这个原本让人不敢接触的领地,让朋友们能轻松打造自己的MP3播放机。不过我也知道不少朋友单是通过这篇文章恐怕还很难完全掌握所有的细节,真正制作起来可能还存在着这样那样的疑问

10_126_2.jpg
 楼主| 发表于 2003-12-16 20:28:55 | 显示全部楼层

DIYMP3

转帖:
http://www.unsp.com.cn/bbs/FORUM.asp?FORUM_ID=1&CAT_ID=1
发表于 2003-12-16 22:01:18 | 显示全部楼层

DIYMP3

牛人斑竹,什么时候我也能和你一样啊
发表于 2003-12-17 08:22:48 | 显示全部楼层

DIYMP3

呵呵,我正在收集这方面的资料






发表于 2003-12-17 13:45:32 | 显示全部楼层

DIYMP3

呵呵,,文件系统最难整了。
对此我一个字,难,,其他什么都不知道。
不过想想,,也就是几个结构么,没什么大不了的。
发表于 2003-12-17 16:17:21 | 显示全部楼层

DIYMP3

对,就是文件系统比较难弄
 楼主| 发表于 2003-12-17 19:40:33 | 显示全部楼层

DIYMP3

对,我想问题也正是在这里。
关键是怎么样把以文件格式存放的数据读出来。
发表于 2003-12-18 08:54:00 | 显示全部楼层

DIYMP3

USB,FAT32,IDE,MP3(格式)
,单片机这些都要懂才行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 00:44 , Processed in 0.033232 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表