<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DSP的觸摸式MP3播放器的設(shè)計

          基于DSP的觸摸式MP3播放器的設(shè)計

          作者: 時間:2010-09-18 來源:網(wǎng)絡(luò) 收藏

          是美國TI公司推出的高性能16 bit定點數(shù)字信號處理器,它采用了高性能靜態(tài)CMOS技術(shù),使得供電電壓降為3.3 V,減小了控制器的功耗;40 MIPS的執(zhí)行速度使指令周期縮短到25 ns(40 MHz),從而提高了控制器的實時控制能力。它專門為數(shù)字控制設(shè)計,集DSP的高速信號處理能力及適用于控制的優(yōu)化外圍電路于一體,在數(shù)字控制系統(tǒng)中得以廣泛應(yīng)用;是指MPEG國際標(biāo)準音頻第三層編/解碼[1],本文采用硬件解碼方式(軟件解碼代價高,速度慢),利用實現(xiàn)播放器的設(shè)計。

          1 系統(tǒng)硬件組成

          1.1 微控制器

          系統(tǒng)硬件結(jié)構(gòu)如圖1所示,TMS320LF2407A作為主控芯片,內(nèi)部資源十分豐富,具有40個可編程/復(fù)用的GPIO腳,具有事件管理器EV模塊、CAN總線模塊、SCI模塊以SPI模塊等。其中,同步串行SPI模塊具有4個通信引腳:主出從入SPIMOSI、主入從出SPIMISO、同步時鐘SPICLK、總線片選SPISTE。本系統(tǒng)中,SD卡、以及TM7843都是SPI總線接口設(shè)備,DSP采用SPI總線擴展了SD卡與音頻解碼芯片,而并未將控制器TM7843也擴展到SPI總線上,采用了IO口模擬SPI的方案,原因是在對SD卡操作的同時(數(shù)據(jù)還未讀入RAM),是不可能向傳送數(shù)據(jù)的,SPI處在間歇的切換狀態(tài)中,不會導(dǎo)致爭用、沖突,但是對屏幕的觸碰是難免的,所以共用總線不可靠。

          1.2 VS1003B解碼芯片

          VS1003B是由荷蘭VLSI公司出品的一款單芯片的/WMA/MIDI音頻解碼和ADPCM編碼芯片,其擁有一個高性能低功耗的DSP處理器核VS_DSP,5 KB的指令RAM,0.5 KB的數(shù)據(jù)RAM,串行的控制和數(shù)據(jù)輸入接口,4個通用IO口,一個UART口;同時片內(nèi)帶有一個可變采樣率的ADC、一個立體聲DAC以及音頻耳機放大器。

          如圖2所示,VS1003B各部分的供電電壓不同,AVDD(模擬電路電壓)與IOVDD(IO電壓)須用3.3 V供電,CVDD(數(shù)字電路電壓)必須用2.5 V供電;VS1003與DSP連接的引腳主要有7個,分別為DREQ、SO、SI、SCLK、XRESET、XCS、XDCS。只有保證它們與DSP正確可靠的連接,才能對VS1003進行有效的操作與控制;操作時,只有當(dāng)DREQ為高(準備好)時才能讀寫VS1003B,它具有2個讀寫端口,即命令端口和數(shù)據(jù)端口,分別由XCS(命令片選)與XDCS(數(shù)據(jù)片選)決定,由DSP的IO口控制。SO、SI、SCLK是SPI接口,與DSP的SPI總線對接。圖2的左側(cè)與右側(cè)原理圖分別為MIC音頻模擬信號輸入電路與音頻輸出電路,由于內(nèi)部具有耳機驅(qū)動器,VS1003B輸出信號不需經(jīng)過任何功放電路,簡化了硬件電路。

          1.3 SD卡電路

          SD卡有9個引腳,支持2種可選的通信協(xié)議:SD模式和SPI模式[2]。如前所述,本設(shè)計采用SPI模式。圖3中,DI、DO、SCLK分別對應(yīng)微控器SPI模塊的3個引腳;CS腳是SD卡SPI模式的片選引腳,與DSP的IO口連接,DSP的SPISTE腳并未使用(因為需要擴展多個SPI芯片,需要多個片選腳),對SD卡操作時,CS腳才拉低有效,避免了與VS1003B沖突。SENS與WP分別為SD卡的插入檢測與寫保護腳。

          1.4 彩屏與驅(qū)動電路

          是手機上常用的彩屏控制器,采用16 bit并行總線方式,端口被映射到DSP的IO空間,彩屏具有4個背光LED燈(控制端為LED1~LED4),采用三極管9012連接共陽極LEDA,使背光受控于DSP的PE3腳,若一段時間內(nèi)未幕,控制PE3腳為高,使背光熄滅,降低系統(tǒng)功耗。彩屏與4線電阻式觸摸屏緊貼一起,2塊屏是一個整體,輸出軟排線中的XR、YD、XL、YU(參見圖4中的U3)即為4線電阻采樣端,與TM7843(芯片U4)對應(yīng)腳連接,TM7843的DCLK、DIN、DOUT、/CS腳與TMS320LF2407A的IO腳連接,模擬SPI總線。PENIRQ是筆落下信號,程序中判斷此腳為低電平時(或采用中斷方式),則有觸摸屏幕事件發(fā)生,再進一步做區(qū)域識別處理。

          2 軟件設(shè)計

          軟件主要分為3個任務(wù):顯示任務(wù)、觸摸識別任務(wù)、MP3播放任務(wù),由?滋C/OS操作系統(tǒng)負責(zé)調(diào)度。MP3播放任務(wù)完成了最主要的功能,即從SD卡FAT32文件系統(tǒng)中讀取數(shù)據(jù)再送入VS1003B解碼。然而μC/OS系統(tǒng)只是完成了基本的任務(wù)調(diào)度及相關(guān)機制,并無其他內(nèi)嵌實用模塊,所以基于SD卡的FAT32文件系統(tǒng)的實現(xiàn)必須設(shè)計完成。

          FAT32文件系統(tǒng)如圖5所示,物理扇區(qū)0可以引導(dǎo)程序定位到正確的文件系統(tǒng)邏輯扇區(qū)0的位置。引導(dǎo)區(qū)DBR的第一扇區(qū)包括一個引導(dǎo)程序和BPB參數(shù)塊[3]。啟動區(qū)BPB是文件系統(tǒng)最重要的部分,它記錄了每扇區(qū)字節(jié)數(shù)、根目錄簇號、FAT表號等重要信息,依據(jù)它可以找到每個文件的簇號,依據(jù)文件的鏈式存儲結(jié)構(gòu),可以依次找到文件的所有存儲簇號。

          軟件中設(shè)計了對應(yīng)的結(jié)構(gòu)體,描述了BPB塊結(jié)構(gòu)、目錄結(jié)構(gòu)、文件記錄體結(jié)構(gòu)等。其中,BPB結(jié)構(gòu)如下:

          struct FAT32_BPB
          {
          unsigned char BS_jmpBoot[3]; //跳轉(zhuǎn)指令 offset:0
          unsigned char BS_OEMName[8]; //系統(tǒng)字符串 offset:3
          unsigned char BPB_BytesPerSec[2]; //每扇區(qū)字節(jié)數(shù)offset:11
          unsigned char BPB_SecPerClus[1]; //每簇扇區(qū)數(shù) offset:13
          ……
          unsigned char BS_FilSysType[11]; // offset:71
          unsigned char BS_FilSysType1[8]; //串″FAT32″ offset:82
          };

          再利用SD卡硬件層API接口函數(shù)FAT32_ReadSector將BPB所在扇區(qū)讀入RAM緩沖區(qū),利用指針指向內(nèi)部成員即可獲得以上信息,從而可以定位到文件位置并讀取數(shù)據(jù)。MP3通常只是讀取文件,并不會進行刪除、保存等操作,所以為了提高效率、精簡代碼,本FAT32系統(tǒng)只實現(xiàn)了文件定位及讀取功能。圖6為主流程圖與播放任務(wù)流程圖。

          TMS320LF2407A具有較高的性能,資源豐富,將其應(yīng)用到MP3播放器中,提高了整體性能;采用觸摸屏可以隨意點選歌曲以及拖動播放進度等,使系統(tǒng)可控性提高;彩屏使系統(tǒng)展現(xiàn)能力提高,系統(tǒng)不僅可以播放音頻,而且能夠顯示全彩BMP圖片、文檔文件等,類似于小型PDA。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();