基于AVR单片机的U盘MP3设计方案

随着电子技术的发展,mp3播放器正朝着大容量和小型化方向发展。然而,播放器和存储器的集成设计使得mp3难以扩展其容量以容纳更多歌曲。将播放器与内存分离是mp3发展的另一个方向。介绍了一种利用avr控制以hostusb对u盘音乐文件进行读取和解码的解决方案。该方案还具有读取音乐标签、u盘电子书,贪吃蛇游戏等功能,具有商业价值。
1系统功能简介
本设计主要完成对存储在u盘中的音乐及文本等信息的读取操作,能够完成u盘内mp3音乐数据的播放及标签信息的显示,实现播放器与存储器分离,并在此基础上完成电子书,贪吃蛇游戏等功能。
2系统芯片选择
本设计mcu选择atmel公司的atmega64作为主控芯片。atmega64是高性能、低功耗的8位avr微处理器,具有先进的risc结构。64k字节系统内可编程flash,2k字节eeprom,4k字节片内sram,64个引脚,53个可编程i/o口,具有可工作于主机/从机模式的spi串行接口音频解码芯片选择芬兰vlsi公司生产的vs1003。vs1003是一款具有mp3/wma/midi音频解码及adpcm编码功能的芯片,它包含一个高性能,低功耗的dsp内核vs_dsp,工作数据存储器,为用户应用提供5kb的指令ram和0.5kb的数据ram。一个串行的控制和数据接口,4个通用i/o口,一个uart,一个高质量可变采样率的adc和立体声dac,一个耳机放大器和地线缓冲器。
usb通信芯片选择ch375,ch375是一个usb总线的通用接口芯片,支持usb-host主机方式和usb-device/slave设备方式。在本地端,ch375具有8位数据总线和读、写、片选控制线以及终端输出,可以方便地挂接到单片机等控制其的系统总线上。内置控制传输的协议处理器,简化常用的控制传输。支持低功耗模式。
3系统硬件电路设计
3.1mp3解码芯片与atmega64的硬件连接
vs1003使用同步串行总线spi通信,atmega64内部集成有spi总线控制器,故将sclk,moso,mosi直接与mcu的spi控制引脚相连接即可。另外将xcs,xres,dreq,xdcs分别于pb4~pb7相连接,即可完成对解码芯片的控制。
3.2ch375与atmega64的硬件连接
本设计中,ch375工作在host模式下,八位双向数据总线d0~d7分别于mcu的pd0~pd7相连接,实现数据与命令的并行传输。a0,rd,wr,int,cs分别于pc3~pc7相连接。这种连接可以很方便的将ch375挂接到各种mcu系统总线上。
3.3彩屏与atmega64的硬件连接
彩屏与mcu实现并口数据命令传输,将其16位数据命令口与mcu的pa0~pa7以及pe0~pe7相连接,另外将彩屏的片选cs,数据命令选通rs,写选通wr,读选通rd,及复位rst分别于mcu的pg0~pg4相连接。
系统启动后,在atmega64的控制下,首先将数据从u盘中取出,如果是音频数据,则直接送入vs1003进行解码,vs1003将接收到的数据解码后转换为模拟音频后,通过功率放大器输出。若收到的是文本数据,则进行字符格式转换,并在液晶屏上显示出来。
4系统软件设计
系统软件的设计主要分为vs1003的驱动程序,ch375的驱动程序,彩屏的驱动程序以及整体的整合。(分别为:vs1003、cch375、ctft_ili9320。cmp3_play。c)
4.1fat文件系统管理
一个fat文件系统包括四个不同的部分。保留扇区,fat区,根目录区,数据区。其中保留区中的第一个分区必须是bpb,也称作“引导扇区”,因为它含有对文件系统进行识别的关键信息,计算机将以此信息识别存储器文件格式,因此十分重要。
fat区包含有两份文件分配表,这是出于系统冗余考虑,尽管它很少使用,即使是磁盘修复工具也很少使用它。它是分区信息的映射表,指示簇是如何存储的。根目录区是在根目录中存储文件和目录信息的目录表。在fat32下它可以存在分区中的任何位置,但是在早期的版本中它永远紧随fat区域之后。数据区是实际的文件和目录数据存储的区域,它占据了分区的绝大部分。
4.2u盘的读取
由于ch375内置控制传输的协议处理器,因此读取u盘可以通过控制ch375的寄存器来进行u盘的读取。ch375以c语言子程序库提供了usb存储设备的文件级接口,这些应用层接口api包含了常用的文件级操作,可以移植并嵌入到常用的单片机程序中。ch375的u盘文件级子程序库具有以下特性:支持常用文件系统,支持多级子目录,可以支持小写字母或者长文件名,支持文件打开、新建、删除、读写以及搜索等。ch375的文件级子程序库需要大约600byte的随机存储器ram作为缓冲区。文件级子程序库的所有api在调用后都有操作状态返回,但不一定有应答数据。主要子程序如下:
(1)初始化ch375芯片:ch375init;(2)打开文件:ch375fileopen;(3)枚举或者搜索文件:ch375fileenumer;(4)关闭文件:ch375fileclose;(5)以扇区为单位从文件读数据:ch375filereadx;(6)以扇区为单位向文件写数据:ch375filewritex。
4.3vs1003的读写控制
vs1003的寄存器用下列顺序读出,如图一。首先将xcs片选拉低以选择芯片,再通过si线发送8位的读操作码(0x03)和8位的地址。在地址被vs1003芯片读入后,si上的数据将被忽略。相应地址的16位数据将从so线移出。当数据全被移出后xcs需拉高。
vs1003的寄存器须按以下的顺序写入,如图二。首先将xcs片选拉低,再通过si线发送8位的读操作码(0x02)和8位的地址。随即发送16位的数据字。当最后一位被移入且最后的时钟已发送,必须将xcs拉高以完成写操作。
4.4mp3的播放
当执行音乐播放程序时,atmega64芯片首先从u盘中预取标签信息,经过分析,由unicode到gbk编码的转换,再取字模,最终在lcd上显示;之后开始取音乐文件的数据,送到vs1003芯片,vs1003开始解码并在音频接口发出音频信号。当按下暂停键时,暂停取数据,上一曲、下一曲时跳出取数据循环。
4.5其他软件设计
1.音乐标签的软件设计。本系统可以读取的音乐的标签有id3v1、id3v2,当要区分这两个标签时可以用程序读取音乐文件的开头和结尾,利用其标志符“id3”、“tag”来区分其具有哪一个标签。但是标签中的文字编码也包括unicode、gbk,具体的区分也要查找相关的标志符。
2.文档阅读的软件设计。gbk的编码中会带有asc码,而gbk码占两个字节,asc码占一个字节,如果在取文件过程中恰好取到gbk码的每二个字节,那么以后的内容在lcd上的显示将全部为乱码,特别是在向上翻页的时候(文档内容在lcd上的显示还要判断回车以及其它字符,这样就会造成每一页具体读了多少字节,显示了多少字节都不一样)。最终解决办法是用一个数组记录每一次翻页共显示了多少字节(不是读取了多少字节)。
3.在tft上显示字符和汉字。对于tft液晶,没有具体的字模存储在控制芯片中,只能是整体系统的存储。而且汉字的unicode和gbk编码并不相同。笔者把具体的字库存储在了要读取的优盘根目录下(对应的字模文件是st16.binkt16.bin)。对于unicode到gbk的转换,笔者把转换文件也存储在了优盘的根目录下面(对应文件是unitogbk.sys)。
5结束语
经测试,该设计可以读取和播放u盘中的mp3文件,音质清晰,无延迟和跳帧。能够读取u盘中的txt文件,实现电子书功能。内置的贪吃蛇游戏也可以顺利实现。由于播放器和存储器的分离,存储空间不受限制,自由度大,比普通mp3播放器更具优势。

英特尔® Agilex™ D系列FPGA和SoC适用于中端FPGA应用
防孤岛保护装置和反孤岛装置的区别是什么
2011年伊朗国际新能源及节能展
华为P20Pro/Pixel2XL/GalaxyS9+/iPhoneX哪个拍照最好
福建德尔科技IPO审核状态更新为"已问询"
基于AVR单片机的U盘MP3设计方案
5G技术与煤炭产业融合发展的成功实践
基于先楫HPM6450的全新RISC-V核心板的参数与典型应用
骨传导蓝牙耳机哪个牌子好,蓝牙耳机骨传导式推荐
2023世亚数博会,世亚软博会,全方位展示数字科技创新成果
维信诺多项创新解决方案及创新终端荣获DIC AWARD大奖
MVG为SGS提供汽车天线测量和 OTA 测试设备
温度传感器的作用
何为有效值?何为均方根?
车载功放的低音增强功能
PADS LOGIC的导入功能
嵌入式的由来和发展
变电站智能巡检机器人的作用及功能
STM32F407 串口配置步骤
中国人民大学孟小峰教授团队发布2018中国隐私风险指数