添加到收藏夹 | 设为首页    首页 | 会员登录 | 我的电子助手 | 电子网站地图 | PD资料站 | 联系我们  
51电子网LOGO
 
  首 页  | 供应信息   |  求购信息  |  非IC专区   
   电子资讯   |  电子论坛
 
 
 
位置:首页 > 技术文章 > 存 储 器 > 详细内容  

基于ISP1362的U盘MP3播放器设计来源:电子设计应用

发布时间:2008-5-27   访问次数:
        

    

    

    来源:电子设计应用 作者:李国峰 董海坤 张勇 邵巍 高平 高丕涛

    

    摘 要:本文使用at89c51snd1作为主控制器和mp3***,isp1362作为usb主机,将u盘中的mp3文件读取出来并进行播放,实现了mp3播放器中解码单元与存储单元的分离。

    关键词:at89c51snd1c;isp1362;u盘;mp3播放器

    

    播放器与存储器的一体化设计对mp3播放器的便携性起了关键性的作用,但与此同时,它又带来了很多新的问题。比如存储容量固定,如果想装下更多的歌曲只能去购买新的产品,造成了巨大的浪费。另一方面,一体化又限制了mp3播放器在其它领域的应用,比如汽车电子等。于是,将存储器与播放器分离,成为mp3的另一发展方向,也是开发这款u盘mp3播放器的意义所在。

    

    主要芯片简介

    at89c51snd1是atmel推出的基于8位c51 mcu内核的mp3***芯片。它内置mp3硬件***,支持48khz、44.1khz、32khz、24khz、22.05khz及16khz采样频率,具有重低音、中音、高音均衡控制和重低环绕声效果。它可以适应市场上不同dac的可编程音频输出接口,兼容pcm和i2s格式。内置2304b ram和64kb flash程序空间,方便用户增加复杂的功能。并通过内置锁相环提供mp3和音频时钟以及usb时钟。

    

    要想读取u盘,usb主机控制器必不可少。为了将来进一步升级系统,本文选用了功能强大的usb-otg芯片isp1362isp1362在单芯片上集成了otg控制器、高级主机控制器和外设控制器。isp1362的otg控制器完全兼容usb2.0以及on-the-go

    supplement 1. 0协议,主机和设备控制器兼容usb 2. 0协议,并支持12mbps的全速传输和1.5mbps的低速传输。

    

    

    

    图1 系统框架图

    

    系统硬件结构

    整个系统的搭建围绕at89c51snd1进行,如图1所示。由于其内部具有硬件***,因此电路构成并不复杂。首先由单片机控制isp1362,将u盘中的mp3文件读取出来,送到硬件***进行解码。解码之后由数字音频接口将数字信号传送至音频dac cs4330,转换之后产生音频信号。由于dac输出的信号功率有限,在后端又加入了运算放大器,经过放大之后的信号就可以直接输出给音箱或耳机等设备了。

    

    at89c51snd1是基于51内核的单片机,因此,最小系统结构非常简单。除了传统单片机的晶振和复位电路之外,还有pll滤波电路和usb接口电路,如图2所示。

    

    

    

    图2 pll滤波电路及usb接口电路

    

    isp1362是16位总线结构,不能直接和8位单片机接口。因此,将单片机的p0和p2口一同作为数据总线接至isp1362的16位总线上,将、、分别接到单片机的p3.4、p3.7和p3.6,通过仿真读写时序控制它的数据读取等操作。

    

    除了这些基本的总线连接,isp1362还需要连接一些特殊的控制引脚:

    a0:用于决定控制器处于命令状态还是数据状态:0表示数据状态,1表示命令状态;

    

    a1:用于决定控制器工作于主机还是设备控制模式:0表示处于主机控制(hc) 模式;1表示处于设备控制(dc) 模式。

    

    接至mcu的p1.5。p1.5=0时表示处于otg工作状态,p1.5=1则表示处于非otg状态。

    

    int1_usb、int2_usb分别接至mcu的int0和int1引脚,用以产生中断。

    

    isp1362有两个usb端口,分别是otg端口和主机端口。因为otg端口包含了主机功能,所以系统中使用otg端口来连接u盘。根据usb2.0协议,usb主机需要2个15k降tg端口同时又可作为设备端口使用,而设备是没有下拉电阻的。因此isp1362提供了“软连接”机制,通过内部的寄存器来控制电阻的连接与否。所以在硬件设计时并不需要在外部加下拉电阻。而 为开漏输出,因此加入了一个10kw的上拉电阻r14_usb。如图3所示。

    

    

    

    图3 otg端口电路图

    

    at89c51snd1c及isp1362的初始化

    在开始播放mp3文件之前,需要一系列初始化操作。这些操作是通过设置at89c51snd1c及isp1362内部的相关寄存器来完成的。

    

    at89c51snd1c的初始化

    为了正常播放mp3文件,首先要对主控制器at89c51snd1c进行以下几方面的设置。

    

    锁相环初始化

    mp3***和音频输出接口使用的都是内部锁相环提供的时钟。锁相环的初始化是通过设置pllcon、pllndiv和pllndiv来完成的。其输出频率的计算公式为:pllclk=oscclk×(r+1)/(n+1)。

    

    mp3***初始化

    mp3***的初始化需要对mp3con和mp3clk进行设置。mp3***分缺少数据中断和校验中断两类中断,在mp3con中可以对其进行设置。简单处理可以采用查询标志位方式,避免使用中断。mp3***对时钟有一定的要求,mpeg i格式的mp3数据要求最低时钟为21mhz,mpeg ii格式为10.5mhz。该时钟计算公式为:mp3clk=pllclk/(mpsd4:0+1)。

    

    音频输出接口初始化

    得到两个声道串行数据前需先对音频输出接口的audcon0和audcon1中的相关部分进行正确的设置。配合dac芯片cs4330,其设置如下:输出32位数据格式(dsiz=1),声道选择信号中的高电平为左声道(pol=1),选择256·fs的数据速率(hlr=0),选择mp3***的输出为数据源(src=0),18位数据右对齐(just4:0=14)。为了听到正常的声音,还需根据mp3的采样率设置mp3clk来得到正确的音频输出接口的时钟,该时钟的计算公式为:audclk=pllclk/(aucd4:0+1)。

    

    按键初始化

    要实现播放mp3的人机交互功能,就需要键盘的支持,at89c51snd1c专门提供了4个中断的按键接口,当这些中断被使能后就可以简单地通过读取kbsta得到按键的状态。按键初始化的时候只需要在kbcon开启相应接口的中断,再开启总中断的ea即可。

    

    isp1362的设置

    为了能正确地从u盘中读取mp3文件,首先要对usb控制芯片isp1362进行以下几方面的设置。

    

    数据缓冲区的划分

    isp1362内部有4kb的数据缓冲区,可划分为4部分以供usb的四种传输方式使用。其中同步传输为双缓冲,占用istl0和istl1,一般二者大小是一样的。中断传输占用intl。控制传输和块传输共用atl。分别通过hcistlbuffersize 、hcintlbuffersize和hcatlbuffersize 来设置istl、intl和atl的大小。

    

    中断的设定

    这里的中断并不是指usb中的中断传输,而是传统意义上的硬件中断。如果不使用中断,则应该将其关闭,具体操作为将hcupinterruptenable置0,而 hcinterruptdisable中所有位都置1。

    

    atl 缓冲的设定

    控制传输是任何usb设备都有的数据传输类型,而在isp1362中,它占用的是atl缓冲区,因此对atl 缓冲的设定是必不可少的。具体的操作是设置以下几个寄存器:hcatlptdskipmap、hcatllastptd、hcatlblksize、hcatlptddonethresholdcount和hcatlptddonethresholdtimeout。

    

    其它相关寄存器

    isp1362还有一些关于硬件的设置,比如端口设定以及过流保护等。除此之外,还需要确定一个帧所发送的最大数据量等信息,这些操作通过设定hchardwareconfiguration和hcfminterval两个寄存器完成。

    

    读取u盘

    u盘在使用usb传输时使用的是块传输方式,操作相对比较复杂。除了最基本的usb协议之外,还需要实现许多其它相关协议,比如mass storage、bulk-only、scsi-2、ufi等。但对usb接口芯片isp1362而言,需要完成的仅是按照协议规定进行数据的传送。

    

    相关描述符和设置

    u盘一般使用mass storage协议进行通信。然而在使用mass storage协议通信之前,应首先关注传输协议和u盘的端点描述符。

    

    mass storage中的传输协议常用bulk_only,然而在这种传输方式下又可分多种指令集,而u盘常用scsi指令集。 bulk_only的传输方式在通信时应首先读取端点描述符来获取bulk_in和bulk_out这两个端点号,之后才能进行usb的正常通信。

    

    fat文件系统

    由于现在u盘的容量普遍较大,对u盘的操作往往都是按块来进行的,其大小一般均为512b。但实际u盘上的数据是以文件系统的方式来存储的,目前u盘常用的文件系统有fat16和fat32。而这两种文件系统在很多内容方面都是相同的,因此,在实际访问中可以对其简单的区分,然后分别进行不同的操作,就能实现对不同文件系统的u盘进行访问,提高通用性。

    

    播放mp3文件

    播放一个mp3文件需要经过以下几个环节:解析u盘的文件系统,获取mp3文件的信息,从u盘中读取指定的mp3文件,将文件中的数据送至at89c51snd1c内嵌的mp3***,解码后的数据经音频输出接口调整格式后输出两个声道的串行数据,再经过dac芯片cs4330将数字信号转换为模拟信号,最后经集成运放mc33202将信号放大输出。

    

    初始化相关芯片

    对主控器at89c51snd1c和usb接口芯片isp1362的初始化是至关重要的,除了上述一些需要初始化设置的地方,还应注意单片机和isp1362复位要同步。另外还应对mp3***音量控制的相关寄存器进行初始化,默认情况下它们都是0,即处于静音状态。

    

    获取mp3文件中的数据

    从u盘中获取mp3文件是一个相对烦琐的过程,首先应能按照usb的相关协议读取u盘上指定块的数据,之后还要根据得到的数据解析文件系统,从而得到指定mp3文件的起始块地址,然后通过查fat表的方法得到后继的数据。并且还应将得到的数据存储在at89c51snd1c内部开设的数据缓存中,等待mp3***缺少数据时使用。由于mp3***内部的数据缓存较小,因而就要求获取mp3文件数据的时间要尽可能的少,这就需要该部分的代码要尽量精简。

    

    mp3***解码

    启动mp3***之前应先对读取来的mp3数据的帧头进行解析,根据解析得到的采样率设置音频输出接口的时钟。从u盘中读取的数据也应先暂存在at89c51snd1c内部开设的数据缓存中,开始播放之前需要先通过mp3dat向mp3***的数据缓存中送满1kb的数据,之后待mp3***出现缺少数据的状态(mp3sta1寄存器中的mpfreq=1),再将at89c51snd1c内部数据缓存中的数据写入mp3***中。当数据缓存中的数据全部用完后,就应立即再次读取u盘,如此往复直到整个mp3文件都播放完毕为止。

      

    结语

    本系统很好地实现了对u盘的识别和读取,突破了传统mp3播放器中***与存储器一体化的限制,只需使用更大容量的u盘就可以在原有硬件基础上增加存储容量,在音响和汽车电子方面具有良好的应用前景。

    

    参考文献

    1. atmel corporation. single-chip flash microcontroller with mp3 decoder and human interface, 2003

    2. philips electronics. isp1362 single-chip universal serial bus on-the-go controller, 2004

    3. usb implementers forum, inc. on-the-go supplement to the usb 2.0 specification revision 1.0a, 2003

    

    

 
 关闭窗口  打印本页
精密I号装配机器人新型控制系统研制 [2008-6-3]
  此篇文章推荐型号 DCP022415DP  的供应信息
基于Sugeno型模糊推理算法的模糊控制器及其应用  [2008-6-3]
  此篇文章推荐型号 DM74S240N  的供应信息
遥操作机器为系统中6自由度输入设备的设计  [2008-6-3]
  此篇文章推荐型号 X25128P  的供应信息
基于神经网络模块SN9701开发多变量系统解耦控制器  [2008-6-3]
  此篇文章推荐型号 TLC393CPS  的供应信息
模糊控制在基于CAN总线的数据采集与控制系统中的应用  [2008-6-3]
  此篇文章推荐型号 VT8363E  的供应信息
BP神经网络用于三相电弧炉弧流控制  [2008-6-3]
  此篇文章推荐型号 LTC1798CS8-4.1  的供应信息
带RTC的I2C总线铁电存储器FM31256的设计  [2008-5-27]
  此篇文章推荐型号 LMV931MG  的供应信息
基于ISP1362的U盘MP3播放器设计来源:电子设计应用  [2008-5-27]
  此篇文章推荐型号 AT49F040-12TI  的供应信息
铁电在电力参数监测中的应用  [2008-5-27]
  此篇文章推荐型号 GM71VS65163CLT5  的供应信息
AM30L V0064D在单片机系统中的典型应用  [2008-5-27]
  此篇文章推荐型号 DTC114YK  的供应信息
赛普拉斯非易失性静态随机存取存取器(NVSRAM) [2008-6-3]
  此篇文章推荐型号 MSP3410B-PP-F7  的供应信息
基于OrCAD/Pspice 9平台的电子电路设计 [2008-6-3]
  此篇文章推荐型号 MB3776APNF-G-BND-EF  的供应信息
基于USB的数据采集系统设计及实现 [2008-6-3]
  此篇文章推荐型号 M64084AGP  的供应信息
用Visual C++实现工控设备多线程控制程序  [2008-6-3]
  此篇文章推荐型号 MIC4426BN  的供应信息
汽车变截面板簧轧机计算机控制系统的研究  [2008-6-3]
  此篇文章推荐型号 SG3526BN  的供应信息
 
 
 

 
版权所有:51电子网-中国最专业的电子元件交易平台 2000-2005 → 给本站留言 粤ICP备06016101
服务热线 深圳:0755-83754112、83754219 传真:0755-83752517 
库存上载:51dzw_stock@163.com  在线MSN咨询:service_51dzw@hotmail.com  OICQ:点击这里给我发消息  点击这里给我发消息