基于STM32單片機(jī)的MP3播放器設(shè)計(jì)_第1頁(yè)
基于STM32單片機(jī)的MP3播放器設(shè)計(jì)_第2頁(yè)
基于STM32單片機(jī)的MP3播放器設(shè)計(jì)_第3頁(yè)
基于STM32單片機(jī)的MP3播放器設(shè)計(jì)_第4頁(yè)
基于STM32單片機(jī)的MP3播放器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于STM32單片機(jī)的MP3播放器設(shè)計(jì) 基于STM32的MP3播放器設(shè)計(jì)摘 要 隨著數(shù)字編解碼及壓縮技術(shù)的發(fā)展,語(yǔ)音文件也朝著高壓縮比、高保真的方向發(fā)展,從MP1、MP2到目前的MP3格式。因此高壓縮比、高保真MP3播放器設(shè)計(jì)研究有很好的應(yīng)用前景。 本論文詳細(xì)介紹了基于STM32的MP3播放器的設(shè)計(jì)的方法,系統(tǒng)實(shí)現(xiàn)了把SD卡中存儲(chǔ)的MP3格式的文件解碼播放,并在TFT觸摸屏上顯示播放歌曲的名稱(chēng)、歌曲播放剩余時(shí)間及顯示歌曲對(duì)應(yīng)的歌詞,通過(guò)TFT觸摸屏上的圖形交互用戶(hù)圖界,還可以實(shí)現(xiàn)歌曲的快進(jìn)、快退、暫停和更改循環(huán)模式等,基本上可以實(shí)現(xiàn)一個(gè)帶有觸摸屏功能的MP3播放器。關(guān)鍵詞:MP3播放器;STM

2、32F103VCT6;VS1003;SD卡ABSTRACT At the development of the digital coding and decoding and compression technology, Voice files are also moving in a high compression ratio, high-fidelity direction, from MP1, MP2 to MP3 format now. Therefore, high compression ratio, high-fidelity design of MP3 players ha

3、ve a good prospect. This paper introduces based STM32's MP3 player design methods, system implements the SD card stored in MP3 format decoding player, and TFT touch screen display playing a song title, song playback remaining time and display songs Corresponding to the lyrics, through the TFT to

4、uch screen graphic interactive graphical user community, Songs can also fast forward, rewind, pause and change the loop mode, basically can function with a touch screen MP3 playerKey words: MP3 player; STM32F103VCT6; VS1003; SD Card目 錄摘 要IABSTRACTII1緒論11.1選題背景11.2國(guó)內(nèi)外研究現(xiàn)狀及意義12系統(tǒng)硬件方案設(shè)計(jì)22.1設(shè)計(jì)目標(biāo)22.2設(shè)計(jì)方案

5、對(duì)比22.2.1控制器方案22.2.2MP3解碼方案32.2.3顯示模塊方案32.2.4MP3儲(chǔ)存介質(zhì)方案32.3系統(tǒng)設(shè)計(jì)原理42.3.1中央處理器工作原理42.3.2音頻解碼芯片52.3.3TFT電阻式觸摸屏72.3.4SD卡93系統(tǒng)軟件方案設(shè)計(jì)113.1系統(tǒng)軟件開(kāi)發(fā)平臺(tái)113.1.1程序設(shè)計(jì)流程圖123.2各模塊軟件系統(tǒng)設(shè)計(jì)123.2.1VS1003驅(qū)動(dòng)程序123.2.2TFT顯示屏驅(qū)動(dòng)程序133.2.3SD卡驅(qū)動(dòng)程序154系統(tǒng)測(cè)試、調(diào)試164.1運(yùn)行過(guò)程164.2設(shè)計(jì)過(guò)程遇到的困難和問(wèn)題174.2.1硬件方面174.2.2軟件方面185結(jié)論18參考文獻(xiàn)18致 謝緒論選題背景 隨著數(shù)字編解

6、碼及壓縮技術(shù)的發(fā)展,語(yǔ)音文件也朝著高壓縮比、高保真的方向發(fā)展,從MP1、MP2到目前的MP3格式。便攜式MP3播放器作為一種集音頻播放、數(shù)據(jù)存儲(chǔ)為一身的數(shù)碼產(chǎn)品,其功能結(jié)構(gòu)為電子設(shè)計(jì)人員所津津樂(lè)道。MP3是MPEG一1音頻III1ayerIII的簡(jiǎn)稱(chēng)。MPEG一1音頻ISO/IECll 172?3是目前普遍應(yīng)用的音頻壓縮標(biāo)準(zhǔn),其中層III的算法最為復(fù)雜,但壓縮比最大,效果也最好,在低碼率的條件下基本能達(dá)到CD的音質(zhì)效果。MP3標(biāo)準(zhǔn)用盡可能低的碼流實(shí)現(xiàn)CD音質(zhì)的聲音而不會(huì)產(chǎn)生數(shù)據(jù)損失。如果對(duì)于一段聲音不進(jìn)行壓縮的話,那么每存儲(chǔ)一秒鐘的立體聲CD音質(zhì)音樂(lè)必須用1.4Mbit,這是個(gè)十分大的開(kāi)銷(xiāo)。通

7、過(guò)運(yùn)用MPEG音頻標(biāo)準(zhǔn)的壓縮技術(shù),我們可以把存儲(chǔ)空間壓縮到原來(lái)的1/12而不會(huì)降低聲音的音質(zhì)。即使使用1/24的壓縮因子,仍然比單純降低采樣率的音質(zhì)要好。低數(shù)據(jù)量和高播放品質(zhì)的優(yōu)點(diǎn)使其成為音樂(lè)存儲(chǔ)、數(shù)字廣播、網(wǎng)上音樂(lè)傳輸?shù)闹饕绞?。人們不僅可以使用計(jì)算機(jī)軟件,還可以通過(guò)數(shù)字隨身聽(tīng)來(lái)欣賞音樂(lè)。 在這種數(shù)字化潮流下,嵌入式系統(tǒng)已成為當(dāng)前研究和應(yīng)用的熱點(diǎn)之一,嵌入式手持設(shè)備的視音頻多媒體應(yīng)用也越來(lái)越廣泛。由于嵌入式系統(tǒng)的應(yīng)用要求及成本因素決定了嵌入式系統(tǒng)在系統(tǒng)資源, 包括硬件資源和軟件資源方面都是非常精簡(jiǎn)和高效的國(guó)內(nèi)外研究現(xiàn)狀及意義 MP3全稱(chēng)是MPEG Layer 3,狹義的講就是以MPEG La

8、yer 3標(biāo)準(zhǔn)壓縮編碼的一種音頻文件格式。在INTERNET廣泛普及的今天, MP3音樂(lè)以其較小數(shù)據(jù)量和近似完美的播放效果已經(jīng)成為計(jì)算機(jī)上和INTERNET最流行的音樂(lè)格式了。將CD格式的音樂(lè)數(shù)據(jù)壓縮成MP3格式,音效相差無(wú)幾(除非你有很好的音響和鑒賞力),文件大小至少可以壓縮12倍(每首PCM格式的CD歌曲大約4050MB數(shù)據(jù)量)。自韓國(guó)世韓Seahan公司1998年推出世界上第一臺(tái)MP3隨身聽(tīng)以來(lái), MP3播放器以其小巧的外形,不錯(cuò)的近乎于CD的音質(zhì),前衛(wèi)的功能,越來(lái)越受到消費(fèi)者的青睞,也就成為業(yè)界甚至大眾媒體關(guān)注的一個(gè)熱門(mén)話題。它的記錄媒介是芯片或卡,無(wú)需轉(zhuǎn)動(dòng)部件,徹底擺脫了磁帶和光碟的

9、束縛,因而,抗震和節(jié)電性能更好。在市場(chǎng)消費(fèi)刺激下,各大公司紛紛推出了自己的mp3播放器產(chǎn)品,IC供應(yīng)商提供了眾多的MP3解碼芯片及其解決方案。除了Micronas方案MAS3507+DAC3550、ST方案ST92163+STA013/015、Crystal軟解壓?jiǎn)涡酒桨窫P7209,EP7212、TI軟解壓?jiǎn)涡酒桨窽MS320C5409,還有臺(tái)灣創(chuàng)品方案T33510,T33520、美國(guó)SigmaTel方案STMP3400和TI的DA-250解決方案。這使mp3播放器的研制與生產(chǎn)變得更加容易,成本也大大降低,市場(chǎng)更加廣闊 。系統(tǒng)硬件設(shè)計(jì)設(shè)計(jì)目標(biāo) 本論文是基于STM32的MP3播放器的設(shè)計(jì),

10、論文中將涉及到:STM32的學(xué)習(xí)和嵌入式原理的應(yīng)用,MP3解碼的實(shí)現(xiàn)原理及其解碼芯片的應(yīng)用指南,SD卡的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)及其各種文件系統(tǒng)的區(qū)別,TFT觸摸屏的操作及簡(jiǎn)單GUI在TFT上的實(shí)現(xiàn)。 預(yù)期將能實(shí)現(xiàn)在TFT液晶上對(duì)MP3播放的實(shí)時(shí)控制。設(shè)計(jì)方案對(duì)比控制器方案 方案一:此方案采用 89C51 單片機(jī)實(shí)現(xiàn),單片機(jī)軟件編程自由度大,可用編程實(shí)現(xiàn)各種控制算法和邏輯控制。但是 89C51 需外接模數(shù)轉(zhuǎn)換器來(lái)滿(mǎn)足數(shù)據(jù)采樣。如果系統(tǒng)增加語(yǔ)音播放功能,還需外接語(yǔ)音芯片,對(duì)外圍電路來(lái)說(shuō),比較復(fù)雜,且軟件實(shí)現(xiàn)也較麻煩。另外,51 單片機(jī)需要用仿真器來(lái)實(shí)現(xiàn)軟硬件調(diào)試,較為繁瑣。 方案二:此方案采用 SPCE06

11、1A 單片機(jī)實(shí)現(xiàn),此單片機(jī)內(nèi)置 8 路 ADC,2 路 DAC,且集成開(kāi)發(fā)環(huán)境中,配有很多語(yǔ)音播放函數(shù),用 SPCE061A 實(shí)現(xiàn)語(yǔ)音播放相對(duì)方便。但5V的工作電壓,16位的處理器芯片,較低的閃存,使得功耗比較大,處理速度比較慢,工作效率比較低,存儲(chǔ)量受到限制。 方案三:此方案采用STM32F103VCT6實(shí)現(xiàn),它使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置高速存儲(chǔ)器高達(dá)128K字節(jié)的閃存和20K字節(jié)的SRAM,豐富的增強(qiáng)型I/O端口以及包含2個(gè)12位的ADC、3個(gè)通用16位定時(shí)器和一個(gè)PWM定時(shí)器。使得處理速度大大提高,機(jī)器功耗大大降低,整體性能得

12、到很大提高。32位的處理器使得控制更加穩(wěn)定、迅速,窗口型看門(mén)狗,使得程序運(yùn)行更加高效。另外,比較方便的是該板支持硬件仿真,通過(guò)Ulink仿真器可以方便實(shí)現(xiàn)在線逐步調(diào)試,這大大方便了系統(tǒng)的開(kāi)發(fā)與調(diào)試工作。 基于STM32的高性能,低功耗,方便調(diào)試等特性,故選擇方案三。MP3解碼方案 方案一: 此方案采用軟解MP3,直接用軟件解碼。節(jié)約了硬件成本,但代碼復(fù)雜,編程難度較高,工作量極大,而且對(duì)控制器的處理速度和資源要求都比較高。 方案二:此方案采用硬解MP3,直接用音頻解碼芯片解碼。它使用高性能的VS1003 MP3解碼芯片,功能強(qiáng)大而且價(jià)格便宜,VS1003支持MP3、WAV、WMA、MIDI等諸

13、多音頻格式,音質(zhì)可與市場(chǎng)上中檔MP3播放器相媲美。 基于上述比較,故選擇方案二;顯示模塊方案 方案一:此方案采用LCD1602,完成數(shù)據(jù)顯示。LCD1602驅(qū)動(dòng)電路簡(jiǎn)單,它可以顯示簡(jiǎn)單的中英文字符,功能和設(shè)計(jì)的成本都比較低! 方案二:此方案采用LCD12864,它既可以顯示中英文字符,也可以顯示圖片。但其圖案分辨率較低,而且只能顯示單色字符。 方案三:此方案采用TFT液晶模塊,它既可以顯示彩色數(shù)字、中英文字符和圖案,還可以加上觸摸屏模塊,實(shí)現(xiàn)GUI用戶(hù)圖形交互實(shí)時(shí)控制! 基于TFT液晶的強(qiáng)大功能,故選擇方案三。MP3儲(chǔ)存介質(zhì)方案 方案一:此方案采用直接將MP3文件存放在控制器的內(nèi)部ROM儲(chǔ)存器

14、中,讀取速度快,操作簡(jiǎn)單方便。但是,相比于51,AVR, SPCE061A等單片機(jī),雖然STM32有著很大的內(nèi)部ROM容量,但還是不能完整的保存一首MP3歌曲。 方案二:此方案采用U盤(pán)來(lái)儲(chǔ)存MP3文件,極大的提高了儲(chǔ)存容量。 方案三:此方案采用SD卡來(lái)儲(chǔ)存MP3文件。采用SPI通訊方式的SD卡不僅讀取數(shù)據(jù)的速度快,而且具有小體積,大容量等特點(diǎn)。 根據(jù)本人的實(shí)際情況,故采用了方案三。 系統(tǒng)設(shè)計(jì)原理 本設(shè)計(jì)由STM32最小系統(tǒng),SD卡的讀取模塊,TFT控制模塊,外擴(kuò)FLASH模塊,觸摸屏模塊,串口通信模塊組成。將要解決SD卡的讀取及使用FATFS系統(tǒng)對(duì)SD卡的操作、TFT液晶的控制及觸摸屏原理、還

15、有圖形用戶(hù)界面GUI的實(shí)現(xiàn)等問(wèn)題。硬件系統(tǒng)方框圖如圖2-1所示。 基本設(shè)計(jì)流程是使用STM32系列微控制器,采用FATFS文件系統(tǒng)方式讀取SD卡中的MP3文件,并控制MP3解碼芯片對(duì)MP3文件進(jìn)行解碼播放,并在TFT液晶上顯示實(shí)時(shí)播放情況。 圖 2-1 硬件系統(tǒng)方框圖中央處理器工作原理 STM32系列是基于CortexM3核的微控制器,它在CortexM3內(nèi)核的基礎(chǔ)上擴(kuò)展了高性能的外圍設(shè)備。 CortexM3是ARM公司最新推出的基于ARMv7體系架構(gòu)的處理器核,具有高性能、低成本、低功耗的特點(diǎn),專(zhuān)門(mén)為嵌入式應(yīng)用領(lǐng)域設(shè)計(jì)。 ARMv7 架構(gòu)采用了Thumb2技術(shù),它是在ARM的Thumb代碼壓

16、縮技術(shù)的基礎(chǔ)上發(fā)展起來(lái)的,并且保持了對(duì)現(xiàn)存ARM解決方案完整的代碼兼容性。 Thumb2技術(shù)比純ARM代碼少使用31%的內(nèi)存,減小了系統(tǒng)開(kāi)銷(xiāo),同時(shí)能夠提供比Thumb技術(shù)高出38%的性能。 在中斷處理方面,CortexM3集成了嵌套向量中斷控制器NVICNested Vectored Interrupt Controller。NVIC是CortexM3處理器的一個(gè)緊耦合部分,可以配置1240個(gè)帶有256個(gè)優(yōu)先級(jí)、8級(jí)搶占優(yōu)先權(quán)的物理中斷,為處理器提供出色的異常處理能力。同時(shí),搶占(Pre?emption)、尾鏈(Tail?chaining)、遲到技術(shù)(Late?arriving)的使用,大大縮

17、短了異常事件的響應(yīng)時(shí)間。CortexM3異常處理過(guò)程中由硬件自動(dòng)保存和恢復(fù)處理器狀態(tài),進(jìn)一步縮短了中斷響應(yīng)時(shí)間,降低了軟件設(shè)計(jì)的復(fù)雜性。CortexM3體系架構(gòu)提出了新的單線調(diào)試技術(shù),CortexM3處理器的跟蹤調(diào)試是通過(guò)調(diào)試訪問(wèn)端口Debug Access Port,DAP來(lái)實(shí)現(xiàn)的。DAP端口可以作為串行線調(diào)試端口(SWDP)或串行JTAG調(diào)試端口(SWJDP,允許JTAG或SW協(xié)議)使用。其中SWDP只需要時(shí)鐘和數(shù)據(jù)2個(gè)引腳,實(shí)現(xiàn)低成本跟蹤調(diào)試,避免使用多引腳進(jìn)行JTAG調(diào)試,并全面支持RealView編譯器和 RealView調(diào)試產(chǎn)品。此外CortexM3還具備高度集成化的特點(diǎn),大大減小

18、了芯片面積,內(nèi)部集成了許多緊耦合系統(tǒng)外設(shè),合理利用了芯片空間,使系統(tǒng)滿(mǎn)足下一代產(chǎn)品的控制需求。其引腳分布如圖2-2所示: 圖2-2 STM32F103VCT6 微控制器引腳分布圖音頻解碼芯片 VS1003 是一個(gè)單片MP3/WMA/MIDI音頻解碼器和ADPCM編碼器。它包含一個(gè)高性能,自主產(chǎn)權(quán)的低功耗DSP 處理器核VS_DSP4,工作數(shù)據(jù)存儲(chǔ)器,為用戶(hù)應(yīng)用提供5KB 的指令RAM 和0.5KB 的數(shù)據(jù)RAM。串行的控制和數(shù)據(jù)接口,4 個(gè)常規(guī)用途的I/O 口,一個(gè)UART,也有一個(gè)高品質(zhì)可變采樣率的ADC和立體聲DAC,還有一個(gè)耳機(jī)放大器和地線緩沖器,芯片原理圖如圖2-3所示。其具體特性如下

19、: (1)能解碼 MPEG 1 和MPEG2 音頻層 III(CBR+VBR+ABR);WMA 4.0/4.1/7/8/9 5-384kbps 所有流文件;WAVPCM+IMAAD-PCM;產(chǎn)生MIDI/SP-MIDI 文件。 (2)對(duì)話筒輸入或線路輸入的音頻信號(hào)進(jìn)行IMAADPCM編碼。支持 MP3 和WAV 流。 (3)高低音控制,低功耗,單時(shí)鐘操作1213MHz,內(nèi)部PLL鎖相環(huán)時(shí)鐘倍頻器。 (4)內(nèi)含高性能片上立體聲數(shù)模轉(zhuǎn)換器,兩聲道間無(wú)相位差。內(nèi)含能驅(qū)動(dòng)30歐負(fù)載的耳機(jī)驅(qū)動(dòng)器,模擬,數(shù)字,I/O 單獨(dú)供電。 (5)為用戶(hù)代碼和數(shù)據(jù)準(zhǔn)備的5.5KB片上RAM,串行的控制,數(shù)據(jù)接口,可被

20、用作微處理器的從機(jī)。 (6)特殊應(yīng)用的SPI Flash引導(dǎo),供調(diào)試用途的UART接口,新功能可以通過(guò)軟件和4 GPIO 添加。圖2-3 VS1003芯片原理圖TFT電阻式觸摸屏 TFT電阻式觸摸屏由TFT顯示屏、驅(qū)動(dòng)IC(ILI9320控制TFT)、觸摸屏、觸摸屏控制器ads7843控制觸摸屏電壓的轉(zhuǎn)換等組成。 本設(shè)計(jì)采用的TFT顯示屏是3.2寸TFT240*32026萬(wàn)色彩屏模塊,支持SD卡,支持DATAFLASH,支持16位/8位模式,模塊可以180度任意旋轉(zhuǎn)使用。 ILI9320是一款包括一個(gè)720通道的源極驅(qū)動(dòng)器,一個(gè)320通道門(mén)驅(qū)動(dòng)器,172,800字節(jié)數(shù)據(jù)RAM,能驅(qū)動(dòng)240RG

21、Bx320TFT液晶顯示器的驅(qū)動(dòng)芯片。 電阻式觸摸屏工作原理如下:電阻式觸摸屏利用壓力感應(yīng)進(jìn)行控制,它的主要部分是一塊與顯示器表面配合的電阻薄膜屏,這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,表面圖有一層透明氧化金屬導(dǎo)電層,上面蓋有另外一層氧化金屬導(dǎo)電層,在他們之間有許多細(xì)小的(小于1/1000英寸)透明隔離點(diǎn)把兩層導(dǎo)電層隔開(kāi)絕緣。當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在觸摸點(diǎn)位置就有了接觸,控制器偵測(cè)到這一接觸并計(jì)算出(X,Y)的位置,再根據(jù)模擬鼠標(biāo)的方式運(yùn)作。圖2-4 電阻式觸摸屏的原理圖 觸摸屏控制芯片為ADS7843, ADS7843是一個(gè)內(nèi)置12位模數(shù)轉(zhuǎn)換、低導(dǎo)通電阻模擬開(kāi)關(guān)的串

22、行接口芯片。供電電壓2.75 V,參考電壓VREF為1 V+VCC,轉(zhuǎn)換電壓的輸入范圍為0 VREF,最高轉(zhuǎn)換速率為125 kHz,其引腳功能如表2-5所示。ADS7843典型應(yīng)用電路如圖圖2-6所示。表2-5 ADS7843的引腳功能表圖2-6 ADS7843典型應(yīng)用電路SD卡 SD卡(Secure Digital Memory Card)是一種為滿(mǎn)足安全性、容量、性能和使用環(huán)境等各方面的需求而設(shè)計(jì)的一種新型存儲(chǔ)器件,SD卡允許在兩種模式下工作,即SD模式和SPI模式,本系統(tǒng)采用SPI模式。本小節(jié)僅簡(jiǎn)要介紹在SPI模式下,STM32處理器如何讀寫(xiě)SD卡。 SD卡如果采用FAT16文件格式,按

23、照其不同的特點(diǎn)和作用大致可分為5 部分:MBR區(qū)、DBR區(qū)、FAT區(qū)、FDT區(qū)和DATA區(qū)。由于SD卡一般不做引導(dǎo)盤(pán),一般也不分區(qū),因此通常無(wú)MBR區(qū),直接從DBR區(qū)開(kāi)始。下面對(duì)后面四個(gè)區(qū)分別作簡(jiǎn)介: (1)DBR區(qū) 內(nèi)容為系統(tǒng)引導(dǎo)記錄,它包括一個(gè)引導(dǎo)程序和一個(gè)被稱(chēng)為BPB(Bios Parameter Block)的本分區(qū)參數(shù)記錄表。引導(dǎo)程序的主要任務(wù)是當(dāng)MBR將系統(tǒng)控制權(quán)交給它時(shí),判斷本分區(qū)根目錄是否有操作系統(tǒng)引導(dǎo)文件,如果有則將其讀入內(nèi)存,并把控制權(quán)交給該文件。BPB參數(shù)塊記錄著本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲(chǔ)格式、根目錄大小、FAT個(gè)數(shù),分配單元大小等重要參數(shù)。 (2)FAT區(qū) 該

24、區(qū)內(nèi)容為文件分配表,FAT16文件系統(tǒng)進(jìn)行空間分配的最基本單位是簇。文件分配表反映了SD卡所有簇的使用情況,通過(guò)查文件分配表可以得知任一簇的使用情況。對(duì)于FAT16來(lái)說(shuō),FAT表每項(xiàng)占用兩個(gè)字節(jié)。FAT表的第一項(xiàng)通常為FFF8H。對(duì)于其它項(xiàng),若其值為0000H表示可用;FFF7H表示為壞簇;FFF8H-FFFFH之間表示該簇為某文件或目錄的最后一個(gè)簇,FFF0H-FFF6H之間為保留值;其它值則指示下一個(gè)簇的簇號(hào)。 (3)FDT區(qū) 該區(qū)的內(nèi)容為文件目錄表,FAT文件系統(tǒng)的一個(gè)重要思想是把目錄(文件夾)當(dāng)作一個(gè)特殊的文件來(lái)處理,FAT32甚至將根目錄當(dāng)作文件處理。FAT分區(qū)中所有目錄文件,實(shí)際上

25、可以看作是一個(gè)存放其它文件(文件夾)入口參數(shù)的數(shù)據(jù)表。因此,目錄占用空間的大小并不等同于其下所有數(shù)據(jù)的大小,但也不等于0,通常是占很小的空間。其具體的存儲(chǔ)原理是:不管目錄文件所占空間為多少簇,一簇為多少扇區(qū)、多少字節(jié);系統(tǒng)都會(huì)以32個(gè)字節(jié)為單位,進(jìn)行目錄文件所占簇的分配。 (4)DATA區(qū) 該數(shù)據(jù)區(qū)存放文件的內(nèi)容,SD卡所占用的空間絕大部分為此部分。如果文件長(zhǎng)度大于一個(gè)簇的大小,需要多個(gè)簇存放該文件,這些放通過(guò)FAT鏈表串連起來(lái)。 SD卡內(nèi)部結(jié)構(gòu)及引腳如圖2-7 所示圖2-7 SD卡內(nèi)部結(jié)構(gòu)及引腳 SD卡主要引腳和功能為: CLK:時(shí)鐘信號(hào),每個(gè)時(shí)鐘周期傳輸一個(gè)命令或數(shù)據(jù)位,頻率可在025MH

26、z之間變化,SD卡的總線管理器可以不受任何限制的自由產(chǎn)生025MHz的頻率。 CMD:雙向命令和回復(fù)線,命令是一次主機(jī)到從卡操作的開(kāi)始,命令可以是從主機(jī)到單卡尋址,也可以是到所有卡;回復(fù)是對(duì)之前命令的回答,回復(fù)可以來(lái)自單卡或所有卡; DAT03:數(shù)據(jù)線,數(shù)據(jù)可以從卡傳向主機(jī)也可以從主機(jī)傳向卡。SD卡以命令形式來(lái)控制SD卡的讀寫(xiě)等操作。可根據(jù)命令對(duì)多塊或單塊進(jìn)行讀寫(xiě)操作。在SPI模式下其命令由6個(gè)字節(jié)構(gòu)成,其中高位在前。 SD卡共支持三種傳輸模式:SPI模式(獨(dú)立序列輸入和序列輸出),1位SD模式(獨(dú)立指令和數(shù)據(jù)通道,獨(dú)有的傳輸格式),4位SD模式(使用額外的針腳以及某些重新設(shè)置的針腳。支持四位

27、寬的并行傳輸)低速卡通常支持 0400 千比特/秒數(shù)據(jù)傳輸率,采用SPI 和1位SD傳輸模式。高速卡支持 0 100 兆比特/秒數(shù)據(jù)傳輸率,采用4位SD傳輸模式;支持0?25 兆比特/秒 ,采用SPI和 1位SD模式。系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件開(kāi)發(fā)平臺(tái) STM32系列微控制器采用ARM公司最新的CortexM3內(nèi)核。Cortex-M3是ARM公司推出的最新的針對(duì)微控制器應(yīng)用的內(nèi)核,提供業(yè)界領(lǐng)先的高性能和低成本的解決方案,將成為MCU應(yīng)用的熱點(diǎn)和主流。但是目前能夠支持Cortex-M3架構(gòu)的開(kāi)發(fā)工具很少,包括SDT、ADS1.2等開(kāi)發(fā)工具都不支持。MDK是目前性?xún)r(jià)比最高的支持Cortex-M3處理器的

28、開(kāi)發(fā)工具。故本次設(shè)計(jì)的軟件平臺(tái)是建立在軟件MDK Vision4.11之上的。程序設(shè)計(jì)流程圖 圖3-1 程序設(shè)計(jì)流程圖 本系統(tǒng)的程序設(shè)計(jì)流程圖如圖3-1所示,工作過(guò)程大致為:STM32通過(guò)從SD卡中讀取MP3文件,將所讀取的數(shù)據(jù)流發(fā)送到VSl003解碼器中解碼播放;TFT觸摸屏則用于顯示歌曲的實(shí)時(shí)播放狀態(tài)、歌詞的顯示、功能按扭和控制歌曲的快進(jìn),快退,停止等。各模塊軟件系統(tǒng)設(shè)計(jì)VS1003驅(qū)動(dòng)程序 1、VS1003 初始化的一般流程如下: (1)硬復(fù)位,xReset 0; (2)延時(shí),xDCS、xCS、xReset置1; (3)等待DREQ為高; (4)軟件復(fù)位:SPI_MODE 0x0804;

29、 (5)等待DREQ為高(軟件復(fù)位結(jié)束); (6)設(shè)置VS1003的采樣率:SPI_AUDATA 0xBB81,采樣率,立體聲; (7)設(shè)置重音:SPI_BASS 0x0055; (8)設(shè)置音量:SCI_VOL 0x2020; (9)向VS1003發(fā)送4個(gè)字節(jié)無(wú)效數(shù)據(jù),用以啟動(dòng)SPI發(fā)送; 2、VS1003播放MP3的一般流程如下: (1)打開(kāi)一個(gè)指定的MP3文件; (2)發(fā)32個(gè)字節(jié)的數(shù)據(jù)到VS1003; (3)檢測(cè)DREQ,當(dāng)DREQ為高時(shí)發(fā)下一個(gè)32字節(jié)的數(shù)據(jù); (4)是否發(fā)完32個(gè)字節(jié),否,則回到第3步; (5)是否發(fā)完打開(kāi)的MP3文件,否,則回到第2步; (6)關(guān)閉打開(kāi)的MP3的文件

30、; VS1003讀寫(xiě)函數(shù)如下: u16 Vs1003_REG_Readu8 address;/讀寄存器 void Vs1003_DATA_Writeunsigned char * buf;/寫(xiě)數(shù)據(jù) void Vs1003_CMD_Writeu8 address,u16 data;/寫(xiě)命令 void Vs1003_Initvoid;/初始化VS1003 void Mp3Resetvoid;/硬復(fù)位 void Vs1003SoftResetvoid; /軟復(fù)位 void set1003void;/設(shè)置VS1003的音量,播放模式等 void VsRamTestvoid; /RAM測(cè)試 void V

31、sSineTestvoid; /正弦測(cè)試 u16 GetDecodeTimevoid;/得到解碼時(shí)間 u16 GetHeadInfovoid; /得到比特率 void ResetDecodeTimevoid;/重設(shè)解碼時(shí)間 void LoadPatchvoid;/加載頻譜分析代碼 void GetSpecu8 *p; /得到分析數(shù)據(jù)TFT顯示屏驅(qū)動(dòng)程序 驅(qū)動(dòng)TFT顯示屏實(shí)際上就是對(duì)ILI9320驅(qū)動(dòng)IC的操作。對(duì)ILI9320的初始化操作如下: (1)向ILI9320控制器寫(xiě)入0x00. (2)如果返回的數(shù)據(jù)為不是0x9320,則驅(qū)動(dòng)IC不是ILI9320,停止初始化。 (3)如果返回的數(shù)據(jù)為

32、0x9320,則向相應(yīng)的寄存器寫(xiě)入默認(rèn)的數(shù)據(jù),啟動(dòng)驅(qū)動(dòng)IC。 (4)拉低片選信號(hào)CS,再寫(xiě)R22h寄存器,接著寫(xiě)入要寫(xiě)的數(shù)據(jù)。 (5)寫(xiě)結(jié)束后再將CS拉高。 TFT顯示屏的讀寫(xiě)函數(shù)如下: extern void TFT_Write_Startvoid; /寫(xiě)開(kāi)始 extern void TFT_Write_Endvoid; /寫(xiě)結(jié)束 extern void TFT_SetGRAMHVAu16 x0,u16 y0; /設(shè)置GRAM的最初地址 extern void TFT_SetGRAMAreau16 HSA,u16 HEA,u16 VSA,u16 VEA; /設(shè)置一個(gè)GRAM顯示區(qū)域 exte

33、rn void TFT_initvoid;/TFT顯示屏初始化 /extern void TFT_Test_Squareu16 x0,u16 x1,u16 y0,u16 y1,u16 Color; extern void TFT_Clearu16 x0,u16 x1,u16 y0,u16 y1,u16 Color; /清屏函數(shù) extern void DrawOnePixelu16 x, u16 y, u16 Color; /畫(huà)點(diǎn)函數(shù) extern void Write_Asc8x16Eu16 x,u16 y,u16 TextColor,u16 BackColor,u16 W_Char;/8*

34、16英文字符 extern void Write_Asc12x24Eu16 x,u16 y,u16 TextColor,u16 BackColor,u16 W_Char; extern void Write_Asc12x24E_Stringu16 x,u16 y,u16 TextColor,u16 BackColor,u8 *W_String; extern void Write_Asc20x40Eu16 x,u16 y,u16 TextColor,u16 BackColor,u16 W_Char; extern void Write_GB16u16 x,u16 y,u16 TextColor

35、,u16 BackColor,u8 *W_Char;/16*16中文字符 extern void Write_GB_16_And_Asc8x16Eu16 x,u16 y,u16 TextColor,u16 BackColor,u8 *W_String; extern void Write_GB_24_And_Asc12x24Eu16 x,u16 y,u16 TextColor,u16 BackColor,u8 *W_String; extern void Display_Pictureu16 x,u16 y,u16 Width,u16 Height ,u16 *Picture; /顯示圖片SD

36、卡驅(qū)動(dòng)程序 1、驅(qū)動(dòng)模選擇 SD卡上電時(shí),如果CS接地,SD將進(jìn)入SPI模式,CS接高電平,將進(jìn)入SD BUS模式。在SD BUS模式時(shí),發(fā)送CMDO SD卡不會(huì)回應(yīng),在SPI模式時(shí),發(fā)送CMD0,SD卡能回應(yīng)R1信息。 2、初始化SD卡 進(jìn)入SD BUS模式后,發(fā)送CMDO復(fù)位SD卡。由于處于SD BUS模式,SD卡此時(shí)不會(huì)回復(fù)信息。發(fā)送命令的時(shí)候需要注意SD卡命令狀態(tài),不同的狀態(tài)只能響應(yīng)待定的命令,下面為初始化命令發(fā)送流程: (1) CMDO 復(fù)位卡。 (2)CDM55 用戶(hù)命令。 (3)CMD41 SD卡工作電壓設(shè)置命令。 (4)CMD2 從默認(rèn)地址獲取SD卡ID。 (5)CMD3獲取一

37、個(gè)新地址。 (6)CMD9從新地址讀取SD卡ID。 (7)CMD7選擇新地址的SD卡為有效卡。 (8)CMD55 用戶(hù)命令。 (9)CMD6設(shè)置數(shù)據(jù)位寬。 (10)CMD16設(shè)置BLOCK長(zhǎng)度。 (11)CMD13讀取當(dāng)前SD卡狀態(tài)。 (12)初始化完成。 3、發(fā)送SD卡支持的操作命令 不同的SD卡所支持的命令稍有不同,但基本命令都是支持的。詳細(xì)支持哪類(lèi)命令要從SD卡的ID中獲得。這一步主要為讀,寫(xiě),擦這三個(gè)功能。讀CMD17,寫(xiě)CMD24,擦CMD38。 4、退出SD卡操作 如果總線上掛有多個(gè)SD卡,就需要用CMD7命令退出當(dāng)前SD卡,從面選擇其他的SD卡操作。CMD7命令為選擇卡或取消卡,

38、在初始化的時(shí)候發(fā)送CMD7命令,SD卡將進(jìn)入數(shù)據(jù)發(fā)送模式,在數(shù)據(jù)模式里發(fā)送CMD7則退出當(dāng)前卡的操作。需要注意的是,在數(shù)據(jù)模式里不同的狀態(tài)只支持特定命令。 SD卡讀寫(xiě)函數(shù)如下:u8 SPI_ReadWriteByteu8 TxData; /SPI總線讀寫(xiě)一個(gè)字節(jié)u8 SD_WaitReadyvoid; /等待SD卡就緒u8 SD_SendCommandu8 cmd, u32 arg, u8 crc; /SD卡發(fā)送一個(gè)命令u8 SD_SendCommand_NoDeassertu8 cmd, u32 arg, u8 crc;u8 SD_Initvoid; /SD卡初始化u8 SD_Receive

39、Datau8 *data, u16 len, u8 release;/SD卡讀數(shù)據(jù)u8 SD_GetCIDu8 *cid_data;/讀SD卡CIDu8 SD_GetCSDu8 *csd_data;/讀SD卡CSDu32 SD_GetCapacityvoid; /取SD卡容量u8 SD_ReadSingleBlocku32 sector, u8 *buffer; /讀一個(gè)sectoru8 SD_WriteSingleBlocku32 sector, const u8 *buffer; /寫(xiě)一個(gè)sectoru8 SD_ReadMultiBlocku32 sector, u8 *buffer, u

40、8 count; /讀多個(gè)sectoru8 SD_WriteMultiBlocku32 sector, const u8 *data, u8 count; /寫(xiě)多個(gè)sector系統(tǒng)調(diào)試運(yùn)行過(guò)程 (1)使用MDK uvision 4.11 編譯程序生成相應(yīng)的hex文件。 (2)使用串口線將板子的串口與PC機(jī)連接,設(shè)置啟動(dòng)方式,將Boot0接高電平,Boot1接低電平。 (3)打開(kāi) mcuisp V0.993?單片機(jī)在線編程專(zhuān)家,加載MDK生成的hex文件,將程序燒錄到控制器中。 (4)設(shè)置啟動(dòng)方式,將Boot0接低電平,Boot1接低電平。 (5)復(fù)位一下硬件,即可進(jìn)入MP3播放界面。 (6)插

41、上耳機(jī),即能聽(tīng)到美妙的音樂(lè)。設(shè)計(jì)過(guò)程遇到的困難和問(wèn)題硬件方面 在本次設(shè)計(jì)中,由于首次用到Altium Designer來(lái)設(shè)計(jì)PCB,遇到了各種各樣的困難和問(wèn)題。例如:由于設(shè)計(jì)的原理圖很大,如果把所有的元件都畫(huà)在同一張?jiān)韴D上,那么將會(huì)顯得非常的雜亂,煩瑣。在這里我使用了層次圖的設(shè)計(jì)方法,把子模塊各放到一個(gè)層中設(shè)計(jì),在頂層中再把子模塊連接起來(lái),不僅使設(shè)計(jì)顯得更加直觀,而且利于模塊之間的移植。還有,層之間的元件重疊,不顯示綠色報(bào)錯(cuò)。 在設(shè)計(jì)中第一次用到貼片元件,也是本次設(shè)計(jì)中的一次挑戰(zhàn)。經(jīng)過(guò)多次嘗試努力,終于找到了焊接貼片元件的訣竅: (1)首先將元件小心地放到PCB板上,使其與焊盤(pán)對(duì)齊,要保證芯

42、片的放置方向是正確的。 (2)將烙鐵頭尖沾上少量的焊錫,在兩個(gè)對(duì)角位置的引腳上加少量的焊錫,使芯片固定而不能移動(dòng)。 (3)在焊完對(duì)角后重新檢查芯片的位置是否對(duì)準(zhǔn),如有必要可進(jìn)行調(diào)整或拆除并重新在PCB板上對(duì)準(zhǔn)位置。 (4)在IC腳上加滿(mǎn)焊錫,為拖焊作準(zhǔn)備。 (5)把PCB板45度角斜放或立起來(lái),以保證焊接過(guò)程中,熔化的焊錫能順利流動(dòng)。 (6)從上到下,順勢(shì)來(lái)回拖動(dòng)烙鐵頭,使焊錫與貼片IC引腳分離。 (7)檢查無(wú)虛焊,無(wú)短路后,用硬毛刷浸上酒精沿引腳方向仔細(xì)擦拭,直到焊劑消失為止,即可完成焊接。 在完成焊接工作之后,上電調(diào)試時(shí),發(fā)現(xiàn)系統(tǒng)非常不穩(wěn)定。由于硬件系統(tǒng)上沒(méi)有接有JTAG仿真接口,不能在M

43、DK中仿真調(diào)試,所以只能在程序中的每一個(gè)子初始化函數(shù)中加入一個(gè)串口測(cè)試程序,結(jié)果發(fā)現(xiàn)程序死在VS1003的初始化中。在經(jīng)過(guò)幾個(gè)日日夜夜的努力之后,正當(dāng)我準(zhǔn)備要放棄,重新做板子的時(shí)候,無(wú)意之間手碰到了VS1003的晶振引腳,系統(tǒng)又恢復(fù)正常了。通過(guò)與主控制器的晶振接法作比較后,在VS1003的晶振引腳之間加上一個(gè)1M的電阻后,系統(tǒng)就可以正常工作了。軟件方面 在首次驅(qū)動(dòng)VS1003時(shí),聲音總是斷斷續(xù)續(xù)的。在逐步檢查,排除了晶振的頻率,SPI的速度,STM32控制器的處理速度之后,發(fā)現(xiàn)原來(lái)是在寫(xiě)入數(shù)據(jù)之后沒(méi)有等待VS1003的DREQ引腳為高電平,就繼續(xù)寫(xiě)入數(shù)據(jù)。在加入whileGPIOC-IDR & MP3_DREQ0; /等待DREQ為高 這一條語(yǔ)句之后,就能正常的播放音樂(lè)了??偨Y(jié) 通過(guò)這次畢業(yè)設(shè)計(jì)的研究與制作,讓我了解了MP3音樂(lè)文件的結(jié)構(gòu),以及在SD卡上以FAT16存儲(chǔ)方式的基礎(chǔ)上,針對(duì)MP3各模塊部分,包括主控制芯片及音頻解碼芯片、SD卡模塊

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論