基于ATmega128L的大容量MP3播放机_单片机论文
关键词:atmega128l mp3播放机 解码器lcd
引言
以flash为存储介质的mp34播放器,由于其体积小、携带方便、价位合理及其时尚的外围观设计,受到很多人的青睐。但flash的价位由于受其制造工艺的制约一直居高不下,从而使mp3播放器的容量仅限于32m、64m、128m等几个档次。本文旨在提出一种以笔记本硬盘为存储介质的mp3播放机的设计方案。该款播放机既具有移动硬盘的功能,又可作为mp3播放机使用。
1 系统结构
在该系统的设计中,采用atmel公司生产的atmega128l作为主控mcu。整个系统的结构框图如1所示。pc机通过usb接口实现对硬盘的管理和对mp3歌曲、文档等数据信息的存储。系统启动后,首先将硬盘上的一部分mp3歌曲送入flash中存储,由mcu控制将储存于flash中歌曲的码流信息送入mp3解码芯片中解码,并产生解码输出。在系统的dac模块把解码输出转换为模拟音频声音后,经一级音频放大并驱动耳机,实现mp3歌曲的播放功能。在按键的控制下,通过lcd中菜单选项的选择,实现对歌曲播放模式、声音音效、液晶对比度的调度以及歌曲选择等功能;在播放的同时,lcd上显示的信息除滚动的歌曲名称、演唱者、码流率等id3外,还包括系统供电电池的电量及歌曲播放模式等图标。
系统包括主控mcu、硬盘、flash缓存、按键、lcd、解码器和d/a转换器等几部分。
2 atmega128l的主要特点
atmega128l内核为avr,具有以下特点:
*先进的risc架构,内部具有133条功能强大的指令系统,而且大部分指令是单周期;32个8位通用工作寄存器+外围接口控制寄存器。
*内部有128kb在线可重复编程flash、4kbeeprom和4kb sram。
*有53个i/o引脚,每个i/o口分别对应输入、输出、功能选择、中断等多个寄存器,使功能口和i/o口可以复用,大大增强了端口功能和灵活性,提高了对外围的开发能力。
*内部有2个8位定时器/计数器和2个具有比较/捕捉寄存器的16位定时器/计数器;1个具有独立振荡器的实时计数器;1个可编程看门狗定时器;2通道8位pwm通道;8路10位a/d转换器;双向i2c串行总线接口;主/从spi串行接口;可编程串行通信接口;片内精确的模拟比较器等。
*功耗低。cpu可工作在idle、powersave、powerdown、standyby等几种省电模式下;可软件编程选择时钟频率。atmega128l的软件结构也是针对低功耗而设计的,具有内外多种中断模式。丰富的中断能力减少了系统设计中查询的需要,可以方便地设计出中断程序结构的控制程序、上电复位和可编程的低电压检测。
*带jtag接口。通过该口利用jtag仿真器,可以很方便地实现程序的在线调试和仿真,编译调试正确的代码,通过jtag口直接写入atmega128的flash代码区中。另外,支持bootloader功能,即mcu上电后,首先通过驻留在flash中的bootloader程序,将存储在外部媒介中的应用程序搬移到atmega128l的flash代码区。搬移成功后自动去执行代码,完成自启动。这对于产品化后程序的升级和维护提供了极大的方便。
*电源电压为2.7~5.5v
3 系统硬件设计中的各个接口模块
3.1 mcu与硬盘的接口设计
系统设计中选择2.5英寸的笔记本硬盘作为存储介质。笔记本硬盘接口是标准并行ide接口。mcu与硬盘的接口电路如图2所示。atmega128l的pa、pc口与硬盘的16根数据线相连。ide接口是基于寄存器结构的,所有对硬盘的控制操作均通过对相应寄存器操作来实现。ide接口的硬盘驱动器有16个寄存器,分为2段,每段有8个寄存器,两段寄存器的选择由cs0、cs1来确定,通过da0、da1、da2来选通每个段的8个寄存器。寄存器如表1所列。ide接口有两种传输模式:pio模式和dma模式。在本系统的设计中,采用pio传输模式。pio传输模式由处理器负责的传输,硬盘以扇区为单位与处理器进行数据交换;在进行扇区读写时,一次通过端口的数据为16位。8g以上的硬盘支持chs、lba两种寻址方式,寻址方式的选择通过驱动器/磁头寄存器的第6位控制。通过lba寻址方可以实现对硬盘的每一个地址的访问。
表1
da0 | da1 | da2 | 扇区读操作 | 扇区写操作 | 位 数 |
0 | 0 | 0 | 数据寄存器 | 数据寄存器 | 16 |
0 | 0 | 1 | 出错状态寄存器 | 写预补偿寄存器 | 8 |
0 | 1 | 0 | 扇计数器 | 扇区计数器 | 8 |
0 | 1 | 1 | 扇区号寄存器或lba的a7~a0 | 扇区号寄存器或lba的ad7~ad0 | 8 |
1 | 0 | 0 | 柱面号寄存器(高字节)或lba的a15~a8 | 柱面号寄存器(高字节)或lba的a15~a8 | 8 |
1 | 0 | 1 | 柱面号寄存器(高字节)或lba的a23~a16 | 柱面号寄存器(高字节)或lba的a23~a16 | 8 |
1 | 1 | 0 | 驱动器或磁头寄存器 | 驱动器或磁头寄存器 | 8 |
1 | 1 | 1 | (lba的a27~a24)状态寄存器 | (lba的a27~a24)命令寄存器 | 8 |
3.2 flash接口
作为便携式产品的设计,功耗问题是一个要重点解决的问题。作业存储介质的硬盘,其工作电压为5v,最大功耗可达20w,硬盘工作时间的长短对系统功耗将产生直接的影响。由于硬盘提供了standby、idle、sleep等几种低功耗运行模式,因此在系统设计过程中,考虑使用一片flash存储器作业缓存,即首先将存储硬盘中的一部分音频压缩文件送入flash中存储(文件数目由flash的容量决定),然后控制硬盘进入sleep低功耗模式。存储在flash中的数据进入解码芯片中进行解码。待flash中所有音频文件播放完,则唤醒硬盘重新进入正常的工作模式,启动下一次的数据缓存任务。
图3 解码+d/a接口
系统中采用sumsung公司生产的km29u128t flash存储器作为缓存。km29u128t是16m×8位nand flash存储器。该芯片支持块擦除、页读、页写的功能。它的寻址采用串行方式,即8根数据线既作地址线也作数据线。先输入地址,再传送数据。控制地址、命令锁存口和读写允许口实现对flash的读写。
3.3 解码和d/a接口
压缩音频数据的解码和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播放机的开发。
图3所示为mcu、mas3507d和dac3550a的接口示意图。atmega128l通过spi串行总线与解码器mas3507d的i2s接口相连,实现音频压缩码流的传输。当解码芯片mas3507d需要数据码流时,通过demand口向mcu发出请求信号。解压缩后的音频码流通过mas3507d的i2s的输出端口送入dac3550a进行d/a转换和放大。mas3507d和dac3550a都具有i2c总线,atmega128l通过i2c总线实现对mas3507d和dac3550a各个寄存器的读写控制,完成音量、音效等调节。
3.4 其它模块接口
人机界面是便携式系统的重要组成部分,尤其对本系统,由于硬盘可以存储海量的歌曲,如果能够对硬盘中的歌曲进行有效管理和搜索,无疑会大大提高系统使用的方便性和灵活性。基于该考虑,本系统采用了多个按键和1块点阵式lcd,用于控制和显示。lcd液晶模块采用solomon公司的ssd1815。ssd1815是单片cmos lcd控制器,有串/并行两种控制方式。本系统中采用串行控制方式。ssd1815内部有一个用于存放图形点阵信息的存储区,将要显示的图形或字符的点阵送入该区域即可完成显示。由于控制的复杂性,系统需要罗多的按键,为了尽可能地减少i/o口的占用和降低控制复杂性,对按键的查询采用i2c串行口,通过一片i2c扩展芯片pcf8574,可以实现对多个按键的查询。
4 系统的软件设计
笔记本硬盘是mp3文件的存储介质,由于其容量较大,pc机通过usb接口对硬盘进行管理和操作时采用fat32文件系统。文件以簇号链的形式在硬盘上存放,由磁盘分区信息和文件分配表的相关计算出文件在硬盘中的起始地址,通过硬盘数据口将该地址的数据读出来。连续的读操作将实现一个文件的读取。
在该系统中,mcu需要完成数据从硬盘到flash缓冲区的拷贝、送flash中的压缩音频数据流给解码器解码、按键的监测、根据按键的控制对歌曲播放模式和歌曲相关的显示等几个主要任务。考虑到flash的读写速度较慢,为保证歌曲的连续播放,在sram中划分2×512字节的区域作为二级缓存,用于暂存从flash传送过来的音频数据。根据解码器的反馈需求信号,从该缓冲区中取数送给解码器进行解码。歌曲的播放具有实时性的要求,即如果解码芯片的demand信号为高,mcu必须停止目前正在执行的任务来响应发送码流的任务。为保证数据码流的不间断,在系统软件设计中,将硬盘→flash、flash→ram的数据缓冲任务以及给解码芯片发送码流的任务用中断来实现。系统的软件设计流程如图4所示。由于给解码器发送码流的任务实时性要求最高,故单独用一中断实现该任务,且设置该中断的优先级最高。硬盘→flash、flash→ram的数据缓冲任务作为另一中断的中断服务程序;而按键检测、液晶显示和电源管理作为前台的三个任务,mcu轮流分配给各个任务使用。这样的设计既能满足歌曲播放的实时性要求,又能对按键检测、显示等其它任务作出响应。模块化设计和分时操作系统思想在软件设计中得到了充分的体现。
结语
本文讨论了基于atmega128l的大容量mp3播放机的设计思路,对系统中的各个模块接口作了简要的描述,并提出了系统软件设计的总体思想。以上软硬件设计思想已经实现产品化。该产品功耗低、功能强,性能稳定可靠,具有友好的用户界面和操作性。