打造自己的硬盘MP3播放机(下)

🏠 首页 《无线电》杂志 2005年 🔗 第2期 🔗 第37页 分类:电脑·单片机·通信 🔗 孔德松 🔗, 林鹏 🔗

上期文章中,笔者为大家介绍了用硬盘自制MP3播放机的硬件原理和电路图,本期将为大家介绍自制该硬盘MP3播放机如何选用元件、调试电路,并将介绍该制作的软件结构。

元件选用

制作中所需各芯片功能见表1。

图1
图1 🔍原图 (398×343)

1. 时钟

AT89C51SND1C时钟电路与传统ATMEL 51系列MCU一样,最高主频20MHz。考虑到USB主时钟要求48MHz,晶振宜选择12MHz、16MHz或20MHz,笔者选用20MHz。另外AT89C51SND1C具有X2特性,该特性可将一个指令周期缩短到6个时钟周期,利用它可将运行速度提高一倍。

2. 锁相环(PLL)

AT89C51SND1C利用片内锁相环电路产生高频时钟信号,供给片内的高频功能部件,如USB驱动电路、MP3解码器、音频DAC等。 片内PLL需要外接一个滤波电路,ATMEL给出了各阻容元件的典型值,利用可编程的PLL可以产生频率相当高的时钟。利用ATMEL给出的计算公式:PLLclk=OSCclk×(R-1)/(N+1)可以对PLL频率进行计算和选择,公式中OSCclk是晶振频率。根据数据手册,R最大取值是2047,N最小取值是0,按最大晶振频率为20MHz来计算,PLLclk最高可到40960MHz。 选择PLLclk频率要考虑到使用PLL时钟部件的要求,USB时钟要求为48MHz,MP3解码器要求最小为21MHz,音频DAC根据不同的芯片,一般要求是采样频率的256倍或384倍。实际应用的经验表明,PLLclk越高越好,因为分频系数只能是整数,对于DAC的频率只能取近似值,为了减小频率误差,只能提高PLLclk频率。但实际应用中PLLclk最大值是有限的,只能到192MHz,因为USB时钟必须是48MHz,分频系数最大是4,这就决定了PLLclk不能超过192MHz。

3. FLASH

笔者选用的韩国三星K9F、K9K系列NAND FLASH存储器芯片具有大容量、集成度高的特点,大多数MP3、 USB闪盘都采用该芯片。三星FLASH的基本操作为读、编程、擦除,没有写操作。因为FLASH的位单元编程时只能由1变0,只有擦除后才能将0变回1,故写操作通常由擦除和编程两个操作完成。编程操作通常是以PAGE为单位,而擦除操作是以BLOCK为单位(1BLOCK=n PAGE),因此,写操作之前需要备份整个BLOCK,然后再将新内容编程到该BLOCK中。

4. IDE接口

笔者制作的这个MP3开发板提供一个标准IDE接口J5,可以连接IDE接口的硬盘、光驱。由于MCU的限制,对硬盘光驱的访问只能采用PIO方式,与DMA方式相比,速度较慢,但对于播放MP3文件和实现USB移动存储已经足够。这个接口买不到可以从坏主板上拆。

5. 音频DAC

这个MP3开发板采用Cirrus Logic公司的音频解码芯片CS43319(CS4331)(48kHz/18bit)音频DAC。该DAC可支持多种音频格式,与AT89C51SND1C相适应的是External SCLK Data Format(I2S)方式。也可以选用CS4334(96kHz/24bit),可以直接代换。

6. 功放

笔者采用了美国国家半导体公司的耳机功率放大器LM4881,它能提供200mW的驱动能力。

电路制作与调试

制作线路板时,不要一次把所有的器件焊上,主要是为分步测试考虑,如果一下都焊上,有的器件有问题,会影响整个电路工作,就不好查找原因了。应该先焊接主芯片及主芯片运行所必需的一些外围器件,完成后可以加电,看看主芯片是否正常运行。正常情况下,主芯片内部有一个引导程序(相当于PC的BIOS),它运行后,连接USB总线就能够被PC发现连接了新硬件。

这些操作正常后就可以继续焊完其他的器件。其他部分的硬件需要程序来测试,比如硬盘的读写、串口通信、液晶显示、键盘处理等,可针对每个部件写一段最简单的程序进行测试。

图6是焊接完成的板子。如果使用3.5英寸硬盘的设计而又要使用2.5英寸硬盘,可以买个如图7所示的转接卡。

图2
图2 🔍原图 (300×235)

软件结构

MP3播放机的软件结构(见图8)跟硬件是相对应的,每一个硬件部分都有相应的软件代码,因为大多数的硬件都是数字可编程控制的。最简化的MP3软件处理任务只有两个操作:

图3
图3 🔍原图 (567×447)

1.读取存储器上的数据,送到解码器,解码器输出后送到音频DAC;

2.分析USB主机控制器发的指令,完成对存储器的操作,将操作结果送回USB主机。

前一个处理过程完成了MP3数据的回放,后一个处理过程实现了USB移动存储器,这两个过程也是整个软件部分最复杂的。对AT89C51SND1C来说,这些功能都是通过特殊功能寄存器来实现的,比如内部集成的32级音量控制就是通过控制9E/9F来实现的。其他的功能具体请读者参考AT89C51SNDIC芯片手册,ATMEL的网站www.atmel.com可以下载。

从软件整体上来看,因个人的硬件设计思路不同,软件也当然不同。

至此,可以说一个完整的MP3播放机已基本制作完成,剩下的就是制作外壳了。如果是使用2.5英寸硬盘,可以找个软驱的外壳,大小很合适。与这个制作相关的芯片源程序、调试程序,读者可以到《无线电》杂志网站www.radio.com.cn上下载。读者可用Keil的uVision2软件对源程序进行查看和修改,烧录固件时可使用FILP2.4软件,该软件可在ATMEL的网站上下载。


后记:
这块MP3DIY开发板虽然程序还不是太完善,比如还不支持MMC卡、FLASH、CD-ROM,界面不漂亮等,但笔者现在正让一块老8G硬盘通过这块MP3的DIY开发板播放着MP3,发挥着余热!

文/孔德松 林鹏