基于CH375的U盘MP3播放器设计
扫描二维码
随时随地手机看文章
随着电子技术的发展,MP3播放器向大容量、高音质、小巧便携不断发展。虽然播放器与存储器的一体化设计使MP3播放器便于携带,但与此同时他也带来了很多新的问题。
比如存储容量固定,如果想装下更多的歌曲只能去购买新的产品,造成了巨大的浪费;另一方面,一体化又限制了MP3播放器在其他领域的应用,比如车载MP3等不方便移动的播放器。于是将存储器与播放器分离成为MP3的另一发展方向,同时HOSTUSB的开发也为实时数据采集的移动存储提供了价格低廉的解决方案。本文将从软硬件方面详细介绍如何用AVR控制HOSTUSB读取U盘中的文件并将其解码播放。
l 方案设计
1.1 系统功能简介
本设计主要完成U盘的识别和数据的读取,并将U盘中读取的MP3文件解码播放出流畅的音乐,完成.MP3播放器的存储与解码的分离。系统功能主要包括读取U盘数据和MP3解码播放2部分。实现设计功能需要USB接口芯片、MP3解码芯片、主控制器和其他外围电路。
1.2主要芯片的选择
通过比较本文选择南京沁恒电子生产的一款USB通用接口芯片CH375。CH375芯片支持HOST主机方式和DEVICE设备方式,内部集成了PLL倍频器、主从USB接口、数据缓冲区、被动并行接口、异步串行接口、命令解释器、控制传输的协议处理器、通用的固件程序等。
音频解码芯片选择芬兰VLSI公司生产的VSl003。VSl003具有MP3/wMA/MIDI解码和ADPCM编码功能,他内部包含一个高性能、低功耗的DSP处理核(VSD一SP),一个工作内存,一片可供用户程序使用的5.5 kBRAM,一个串行SPI总线接口,一个高质量的采样频率可调的过采样DAC以及一个16位的采样ADC。
采用高性能低功耗的8位AVR闪存微处理器作为系统主控制器,ATmega64内部具有丰富的资源,64 kB的系统内可编程FLASH,2 kB E2PROM,4 kB SRAM,53个通用I/O口线,32个通用工作寄存器,RSIC设计的单指令周期使单片机具有高速处理能力,能保证MP3文件的顺畅播放。
2硬件接口
2.1 USB接口芯片CH375与MCU的连接
CH375可以方便地挂接到MCU系统总线上,MCU通过CH375按照相应的USB协议可以很方便地与其他USB设备进行通信。本设计中CH375工作在USBHOST模式下,将CH375的TXD端接地,RXD端悬空采取并行传输的方式,将8位并行数据线D0~D7与AT-mega64L的PD口相连实现数据与命令的并行传输,RD,WR,CS,INT和A0五根控制线分别连接至ATmega64L的PC3~.PC7引脚,接口的系统框图如图1所示。RD,WR和CS分别为读选通、写选通和片选,低电平有效;INT中断请求为低电平有效;地址输入线AO为高电平时选择命令端口,可以向CH375写人命令;当AO引脚为低电平时选择数据端口,可以向CH375读写数据。
当CH375工作在主机方式时MCU通过RD,wR,片选CS、中断INT和地址线AO的综合控制,完成与CFl375的通讯,通过USB接口实现从U盘读写数据的功能。INT引脚和MCU的外部中断输入引脚相连,当有U盘插入时1NT变为低电平触发外部中断,当CS,RD和AO都为低电平时,CH375中的数据可以通过D7~DO输出;当CS,wR和AO都为低电平时,D7~DO上的数据被写入CH375芯片中;当CS和wR都为低电平AO为高电平时,D7一DO中的数据可作为命令码写入CH375芯片中。
2.2 MP3解码芯片与MCU的连接
VSl003通过同步串行总线SPI与ATmega64L进行命令和数据的传输。由于ATmega64L内部集成有SPI总线模块,只要正确写SPI相关寄存器就能轻松控制SPL这种硬件SPI总线减小了软件设计的困难。VSl003的SPI接口具有2种工作模式:新模式和兼容模式。设置寄存器SM_SDI。NEW为1使‘VSl003处于新模式,此时设置SMSDISFIARED为O,控制信号和数据信号的传送将分别采用xCS和xDCS作为同步信号。
系统启动后,由MCU控制将存储于U盘中歌曲的码流信息送入到VSl003芯片中,通过VSl003芯片解码以及其内含的高质量的立体声DAC和耳机驱动电路,实现MP3歌曲的播放功能,在按键的控制下,实现对歌曲播放模式以及歌曲选择等功能。
VSl003的所有数据和控制命令均通过SPI总线接口实现,因此与MCU接口实现比较简单,包括3条SPI数据线和4条与PB4~PB7引脚相连的控制线,接口框图如图2所示。
3软件编程
3.1 U盘文件管理系统
U盘采用的文件系统一般都为FAT文件系统他将存储空间分为5部分:主引导扇区(MBR)、DOS引导区(DBR)、文件分配表(FAT)、文件目录表(FDT)和数据。Ctt375提供了U盘文件级子程序库,单片机可以直接调用子程序读写U盘中的文件数据。
应用中的单片机读写U盘的程序可分成2大部分:应用程序和固件程序。应用程序完成系统的数据处理任务、外围控制等功能;固件程序处理底层的USB通讯协议、文件系统,数据在USB总线上的可靠传输和在U盘上的存取操作。CH375内置了处理海量存储设备的专用通信协议的固件,所以嵌入式系统的单片机可以通过CH375将U盘作为可移动的大容量存储器。数据读写只需要几条指令,而不需要详细了解USB通信协议。
U盘文件的读写方式采取扇区模式以扇区(每个扇区通常是512字节)为基本单位进行读写操作,从而将USB存储设备简化为一种外部数据存储器,单片机可以自由读写USB存储设备中的数据,也可以自由定义其数据结构。本文中单片机与U盘的通讯采用查询中断响应的方式进行,具体流程图如图3所示。
使用AVR编程工具软件ICCAVR编写系统C程序,CH375提供了已封装好的库函数CH375HF6.LIB,包含大量宏定义方便了编程。
下面列举一些CH375关键操作函数:CH375的初始化函数CH375Liblnit();查询U盘是否准备就绪函数CH375DiskReady();查询磁盘信息函数CH375DiskQuery();打开指定名称的文件或者目录CH375FileOpen();CH375FileCreate()为新建文件并打开,如果文件已经存在则先删除后再新建;CH375FileClose()为关闭当前文件;CH375FileReadX()以扇区为单位从当前文件读取数据,CH375FileWriteX()以扇区为单位向当前文件写入数据。
3.3 VSl003控制协议
VSl003通过一个工作于从模式的SPI串行总线与主机进行数据和控制信息的交流,控制信号和数据信号的传送分别采用xCS和xDCS作为同步信号。数据信号xDCS为低时通过串行接口传送音频数据,当控制信号xCS为低时通过串行接口传送控制命令,控制命令总是为16位,通过读/写不同的寄存器来实现对VSl003的控制。作为从机工作模式,VSl003通过一个信号线DREQ指示是否允许主机传送数据,当DREQ为高时,VSl003至少可以接受32 kB的数据或者控制命令。
下面介绍新模式下且SM-SDISHARE设置为O时VSl003通信协议的实现。图4描述了传送数据的工作时序,他以xDCS为同步信号,随着时钟信号的变化,数据根据控制命令的设置依次从高位或低位送出。控制命令协议包括1个控制指令字节、1个地址字节和1个16位数据字,每次读写控制可以操作1个寄存器。读命令和写命令分别为Ox03和Ox02,这2种控制命令的工作时序分别如图5,图6所示。
3.4播放MP3文件
首先完成对VSl003和SPI总线的初始化,然后等待系统从U盘存储介质中打开MP3文件,从中读取的一个扇区的数据放入Atmeag64L的512 B缓冲区中,然后将数据发往VSl003,解码芯片就会自动播放出流畅的音乐。由于VSl003有32 B的数据缓存区,一次可向其发32 B数据然后检查DREQ引脚,当DREQ为高时送下一个32 B数据,发完一个扇区的内容后再继续从U盘中读取下一个扇区内容,重复操作直到文件播放完为止。
4 结 语
将系统C程序通过ICCAVR编译成功后生成HEX可执行文件,再在AVRStudio编译器中用JTAG接口将编译好的可执行文件下载到目标板中,将U盘插入系统就会播放U盘中的MP3音乐,音质效果和播放的连贯性都很不错。此方案很好地实现了对U盘的识别和读取,突破了MP3播放器中解码器与存储器一体化的限制,只需使用更大容量的U盘就可以在原有硬件基础上增加存储容量,在音响和汽车电子及数据采集存储方面具有良好的应用前景。