📄 21ic 基于atmega128l的大容量mp3播放机.htm
字号:
<TD align=middle width="7%" height=12>0</TD>
<TD align=middle width="6%" height=12>0</TD>
<TD align=middle width="7%" height=12>0</TD>
<TD width="41%" height=12>数据寄存器</TD>
<TD width="32%" height=12>数据寄存器</TD>
<TD align=middle width="7%" height=12>16</TD></TR>
<TR class=main>
<TD align=middle width="7%" height=12>0</TD>
<TD align=middle width="6%" height=12>0</TD>
<TD align=middle width="7%" height=12>1</TD>
<TD width="41%" height=12>出错状态寄存器</TD>
<TD width="32%" height=12>写预补偿寄存器</TD>
<TD align=middle width="7%" height=12>8</TD></TR>
<TR class=main>
<TD align=middle width="7%" height=12>0</TD>
<TD align=middle width="6%" height=12>1</TD>
<TD align=middle width="7%" height=12>0</TD>
<TD width="41%" height=12>扇计数器</TD>
<TD width="32%" height=12>扇区计数器</TD>
<TD align=middle width="7%" height=12>8</TD></TR>
<TR class=main>
<TD align=middle width="7%" height=7>0</TD>
<TD align=middle width="6%" height=7>1</TD>
<TD align=middle width="7%" height=7>1</TD>
<TD width="41%" height=7>扇区号寄存器或LBA的A7~A0</TD>
<TD width="32%" height=7>扇区号寄存器或LBA的AD7~AD0</TD>
<TD align=middle width="7%" height=7>8</TD></TR>
<TR class=main>
<TD align=middle width="7%" height=24>1</TD>
<TD align=middle width="6%" height=24>0</TD>
<TD align=middle width="7%" height=24>0</TD>
<TD width="41%" height=24>柱面号寄存器(高字节)或LBA的A15~A8</TD>
<TD width="32%" height=24>柱面号寄存器(高字节)或LBA的A15~A8</TD>
<TD align=middle width="7%" height=24>8</TD></TR>
<TR class=main>
<TD align=middle width="7%" height=24>1</TD>
<TD align=middle width="6%" height=24>0</TD>
<TD align=middle width="7%" height=24>1</TD>
<TD width="41%" height=24>柱面号寄存器(高字节)或LBA的A23~A16</TD>
<TD width="32%" height=24>柱面号寄存器(高字节)或LBA的A23~A16</TD>
<TD align=middle width="7%" height=24>8</TD></TR>
<TR class=main>
<TD align=middle width="7%" height=12>1</TD>
<TD align=middle width="6%" height=12>1</TD>
<TD align=middle width="7%" height=12>0</TD>
<TD width="41%" height=12>驱动器或磁头寄存器</TD>
<TD width="32%" height=12>驱动器或磁头寄存器</TD>
<TD align=middle width="7%" height=12>8</TD></TR>
<TR class=main>
<TD align=middle width="7%" height=12>1</TD>
<TD align=middle width="6%" height=12>1</TD>
<TD align=middle width="7%" height=12>1</TD>
<TD width="41%" height=12>(LBA的A27~A24)状态寄存器</TD>
<TD width="32%" height=12>(LBA的A27~A24)命令寄存器</TD>
<TD align=middle width="7%" height=12>8</TD></TR></TBODY></TABLE>
<P style="TEXT-INDENT: 30px">3.2 Flash接口</P>
<P
style="TEXT-INDENT: 30px">作为便携式产品的设计,功耗问题是一个要重点解决的问题。作业存储介质的硬盘,其工作电压为5V,最大功耗可达20W,硬盘工作时间的长短对系统功耗将产生直接的影响。由于硬盘提供了STANDBY、IDLE、SLEEP等几种低功耗运行模式,因此在系统设计过程中,考虑使用一片Flash存储器作业缓存,即首先将存储硬盘中的一部分音频压缩文件送入Flash中存储(文件数目由Flash的容量决定),然后控制硬盘进入SLEEP低功耗模式。存储在Flash中的数据进入解码芯片中进行解码。待Flash中所有音频文件播放完,则唤醒硬盘重新进入正常的工作模式,启动下一次的数据缓存任务。<BR><BR><B><A
href="http://www.21ic.com/info/images/dpj/200401/19c.gif">图3
解码+D/A接口</A></B><BR><BR></SPAN><FONT size=3>
</FONT><SPAN class=main1>系统中采用Sumsung公司生产的KM29U128T
Flash存储器作为缓存。KM29U128T是16M×8位NAND
Flash存储器。该芯片支持块擦除、页读、页写的功能。它的寻址采用串行方式,即8根数据线既作地址线也作数据线。先输入地址,再传送数据。控制地址、命令锁存口和读写允许口实现对Flash的读写。</P>
<P style="TEXT-INDENT: 30px">3.3 解码和D/A接口</P>
<P style="TEXT-INDENT: 30px">压缩音频数据的解码和D/A转换采用Micronas
Intermetall公司专为个人音频播放器设计的MAS3507D和DAC3550A芯片组。MAS3507D是单芯片解码器,数据的处理由内部嵌入的RISC
DSP核来完成。单芯片上嵌入的还有电源管理器、程序存储器、时钟管理器、音频基带处理器以及I2S、I2C、PIO多种接口。采用集成I2S的音频输出方式,可方便地与DAC3550A连接。在芯片内集成了数字、音量、立体声、声道混合、低音、高音控制等功能。DAC3550A是与MAS3507D匹配的高质量的音频DAC,内部集成了耳机放大器;内置时钟振荡器并由CLKOUT端提供给MAS3507D;具有I2S总线音频输入和I2C控制总线;具有低功耗模式。它把MP3播放机中D/A转换和音频放大两部分集成在一起,非常适合于便携式MP3播放机的开发。</P>
<P
style="TEXT-INDENT: 30px">图3所示为MCU、MAS3507D和DAC3550A的接口示意图。ATmega128L通过SPI串行总线与解码器MAS3507D的I2S接口相连,实现音频压缩码流的传输。当解码芯片MAS3507D需要数据码流时,通过DEMAND口向MCU发出请求信号。解压缩后的音频码流通过MAS3507D的I2S的输出端口送入DAC3550A进行D/A转换和放大。MAS3507D和DAC3550A都具有I2C总线,Atmega128L通过I2C总线实现对MAS3507D和DAC3550A各个寄存器的读写控制,完成音量、音效等调节。</P>
<P style="TEXT-INDENT: 30px">3.4 其它模块接口</P>
<P
style="TEXT-INDENT: 30px">人机界面是便携式系统的重要组成部分,尤其对本系统,由于硬盘可以存储海量的歌曲,如果能够对硬盘中的歌曲进行有效管理和搜索,无疑会大大提高系统使用的方便性和灵活性。基于该考虑,本系统采用了多个按键和1块点阵式LCD,用于控制和显示。LCD液晶模块采用Solomon公司的SSD1815。SSD1815是单片CMOS
LCD控制器,有串/并行两种控制方式。本系统中采用串行控制方式。SSD1815内部有一个用于存放图形点阵信息的存储区,将要显示的图形或字符的点阵信息送入该区域即可完成显示。由于控制的复杂性,系统需要罗多的按键,为了尽可能地减少I/O口的占用和降低控制复杂性,对按键的查询采用I2C串行口,通过一片I2C扩展芯片PCF8574,可以实现对多个按键的查询。<B><BR><IMG
height=306 hspace=10 src="21IC 基于ATmega128L的大容量MP3播放机.files/19d.gif"
width=549 vspace=10 border=0><BR>4 系统的软件设计</B></P>
<P
style="TEXT-INDENT: 30px">笔记本硬盘是MP3文件的存储介质,由于其容量较大,PC机通过USB接口对硬盘进行管理和操作时采用FAT32文件系统。文件以簇号链的形式在硬盘上存放,由磁盘分区信息和文件分配表的相关信息计算出文件在硬盘中的起始地址,通过硬盘数据口将该地址的数据读出来。连续的读操作将实现一个文件的读取。</P>
<P
style="TEXT-INDENT: 30px">在该系统中,MCU需要完成数据从硬盘到Flash缓冲区的拷贝、送Flash中的压缩音频数据流给解码器解码、按键的监测、根据按键的控制对歌曲播放模式和歌曲相关信息的显示等几个主要任务。考虑到Flash的读写速度较慢,为保证歌曲的连续播放,在SRAM中划分2×512字节的区域作为二级缓存,用于暂存从Flash传送过来的音频数据。根据解码器的反馈需求信号,从该缓冲区中取数送给解码器进行解码。歌曲的播放具有实时性的要求,即如果解码芯片的DEMAND信号为高,MCU必须停止目前正在执行的任务来响应发送码流的任务。为保证数据码流的不间断,在系统软件设计中,将硬盘→Flash、Flash→RAM的数据缓冲任务以及给解码芯片发送码流的任务用中断来实现。系统的软件设计流程如图4所示。由于给解码器发送码流的任务实时性要求最高,故单独用一中断实现该任务,且设置该中断的优先级最高。硬盘→Flash、Flash→RAM的数据缓冲任务作为另一中断的中断服务程序;而按键检测、液晶显示和电源管理作为前台的三个任务,MCU轮流分配给各个任务使用。这样的设计既能满足歌曲播放的实时性要求,又能对按键检测、显示等其它任务作出响应。模块化设计和分时操作系统思想在软件设计中得到了充分的体现。</P>
<P style="TEXT-INDENT: 0px"><B>结语</B></P>
<P
style="TEXT-INDENT: 30px">本文讨论了基于ATmega128L的大容量MP3播放机的设计思路,对系统中的各个模块接口作了简要的描述,并提出了系统软件设计的总体思想。以上软硬件设计思想已经实现产品化。该产品功耗低、功能强,性能稳定可靠,具有友好的用户界面和操作性。
</SPAN></P>
<P></P></DIV></TD></TR>
<TR>
<TD align=middle height=15>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD>
<DIV></DIV></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2>
<TABLE cellSpacing=0 cellPadding=0 width="80%" border=0>
<TBODY>
<TR>
<TD width=75>【<A href="javascript:doPrint();">打印本稿</A>】</TD>
<TD width=8></TD>
<TD width=75>
<P>【<A
href="http://www.21ic.com/new_info/news/review.asp?title=基于ATmega128L的大容量MP3播放机target="
_blank?>发表评论</A>】</P></TD>
<TD width=10></TD>
<TD width=79>【<A
href="http://www.21ic.com/new_info/news/sendmail.asp?num=基于ATmega128L的大容量MP3播放机">推荐</A>】</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2></TD></TR>
<TR>
<TD align=right height=2><A href="javascript:window.close();"><IMG
height=20 src="21IC 基于ATmega128L的大容量MP3播放机.files/close_c.gif"
width=77 border=0 name=Image161></A><FONT
color=#ffffff>----</FONT></TD></TR></TBODY></TABLE><BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width=520 align=center border=0>
<TBODY>
<TR>
<TD vAlign=bottom align=middle width=114 bgColor=#999a76
height=1><IMG height=1
src="21IC 基于ATmega128L的大容量MP3播放机.files/blank.gif" width=1></TD>
<TD width=466 height=1></TD></TR>
<TR>
<TD align=middle width=114 bgColor=#ece8db height=19>相关新闻</TD>
<TD width=466 height=19></TD></TR>
<TR bgColor=#999a76>
<TD colSpan=2 height=1><IMG height=1
src="21IC 基于ATmega128L的大容量MP3播放机.files/blank.gif" width=1></TD></TR>
<TR>
<TD colSpan=2 height=1></TD></TR></TBODY></TABLE>
<TABLE borderColor=#000000 cellSpacing=0 cellPadding=0 width=520
align=center border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE class=RelatedTable width="100%" border=0>
<TBODY>
<TR class=RelatedTr>
<TD class=RelatedTd>
<SCRIPT language=javascript
src="21IC 基于ATmega128L的大容量MP3播放机.files/about.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR></TD>
<TD vAlign=top align=middle width=150 bgColor=#ece8db height=2>
<TABLE cellSpacing=0 cellPadding=1 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#000000>
<TABLE cellSpacing=0 cellPadding=2 width=150 bgColor=#ece8db
border=0>
<TBODY>
<TR>
<TD><!--#include file="../../adinc/a_ad_3.asp"--></TD></TR>
<TR>
<TD
height=5></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top colSpan=6></TD></TR>
<TR>
<TD vAlign=top colSpan=6 height=10></TD></TR>
<TR>
<TD vAlign=top bgColor=#999999 colSpan=6 height=2></TD></TR>
<TR>
<TD class=stxt vAlign=center align=middle colSpan=6
height=6></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD class=s width=973 height=12></TD></TR>
<TR>
<TD class=s width=973 height=20>
<DIV align=center><FONT face="Arial, Helvetica, sans-serif"><!--#include file="../../../../inc/copy.inc"--></FONT></DIV></TD></TR></TBODY></TABLE><BR></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -