




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式MP3播放器的設(shè)計(jì)1 系統(tǒng)概述本文采用STM32系列微控制器, 結(jié)合解碼芯片VS1003、SD卡、LCD等外圍設(shè)備設(shè)計(jì)并實(shí)現(xiàn)了MP3播放器。其主要功能有:播放VS1003支持的所有音頻文件,如MP3、WMA、WAV文件,且音質(zhì)非常好;通過觸摸屏實(shí)現(xiàn)按鍵功能,控制播放上一首/下一首、音量增減等;通過LCD顯示歌曲名字和播放狀態(tài);本系統(tǒng)還實(shí)現(xiàn)了讀卡器功能,PC機(jī)可通過USB接口直接對開發(fā)板上的SD卡進(jìn)行讀寫操作, 以方便拷貝音頻文件。MP3播放過程是STM32通過SPI1接口將數(shù)據(jù)從SD卡中取出,然后通過SPI2接口送至解碼芯VS1003解碼播放。這里解碼模塊單獨(dú)使用一個SPI接口,以減小干
2、擾和噪聲、提高音質(zhì)。2 系統(tǒng)硬件設(shè)計(jì)方案本系統(tǒng)在硬件上分為6個模塊: 微控制器STM32F103、解碼模塊VS1003、存儲模塊SD卡、觸摸屏、USB接口和顯示屏LCD。系統(tǒng)硬件框架如圖5所示。圖5 系統(tǒng)硬件框架圖2.1 存儲模塊設(shè)計(jì)SD卡在現(xiàn)在的日常生活與工作中使用非常廣泛,時下已經(jīng)成為最為通用的數(shù)據(jù)存儲卡。在諸如MP3、數(shù)碼相機(jī)等設(shè)備上也都采用SD卡作為其存儲設(shè)備。SD卡之所以得到如此廣泛的使用,是因?yàn)樗鼉r格低廉、存儲容量大、使用方便、通用性與安全性強(qiáng)等優(yōu)點(diǎn)。SD卡支持兩種總線方式: SD方式與SPI方式。其中SD方式采用6線制,而SPI方式采用4線制,采用單片機(jī)對SD卡進(jìn)行讀寫時一般都采
3、用SPI模式??捎貌煌某跏蓟绞绞筍D卡工作于SD方式或SPI方式。在本設(shè)計(jì)中,音頻數(shù)據(jù)MP3文件是以SD卡為載體。所以在電路設(shè)計(jì)中必須含有讀取SD卡模塊。該系統(tǒng)使用STM32內(nèi)部接口SPI1與SD卡進(jìn)行通信,下面介紹其引腳連接情況。PE3:低電平有效,連接到SD卡的片選引腳CD/DAT3。SPI在和SD卡進(jìn)行通信時,需要將PE3拉低才能對SD卡進(jìn)行操作。PA7:映射為STM32內(nèi)部接口SPI1的主輸出從輸入(MOSI)信號線。這里STM32是主設(shè)備,SD卡是設(shè)備。數(shù)據(jù)流的傳輸方向是從STM32傳輸給SD卡。該信號線用于傳輸一些控制命令來完成SD卡的操作,如讀、寫等。PA5: 已連接到STM
4、32內(nèi)部接口SPI1的時鐘(SCL K)信號線??稍O(shè)置SPI的時鐘頻率來調(diào)整讀取SD卡數(shù)據(jù)的快慢。PA6 :已連接到STM32內(nèi)部接口SPI1的主輸入從輸出(MISO)信號線。數(shù)據(jù)的傳輸方向是從SD卡傳輸給STM32 ,主要返回SD卡的一些狀態(tài)、內(nèi)部寄存器值等。PC12 :用于檢測SD卡是否完全插入。當(dāng)SD卡完全插入時,PC12為低電平,否則為高電平。22 音頻解碼模塊設(shè)計(jì)音頻解碼模塊完成MCU從SD卡里讀取的數(shù)字MP3音頻數(shù)據(jù)流進(jìn)行解析、并轉(zhuǎn)化成模擬信號進(jìn)行輸出。在這里,系統(tǒng)使用VS1003音頻解碼芯片來實(shí)現(xiàn)音樂數(shù)據(jù)流的解析。VS1003是由芬蘭VLSI公司出品的一款單芯片的MP3/WMA音
5、頻解碼芯片,其擁有一個高性能低功耗的DSP處理器核VS_DSP, 5K的指令ROM, 0.5K的數(shù)據(jù)RAM,串行的控制和數(shù)據(jù)輸入接口, 4個通用I/O口,一個UART口,同時片內(nèi)帶有一個可變采樣速率的ADC、一個立體聲DAC以及音頻耳機(jī)放大器接口。VS1003與核心控制器MSP430F149的數(shù)據(jù)通信是通過SPI總線方式進(jìn)行的。VS1003主要通過串行命令接口(SCI)和串行數(shù)據(jù)接口(SDI)來接收MSP430F149控制器的控制命令和MP3的數(shù)據(jù)。通過XCS、XDCS引腳的置高、置低來確認(rèn)是哪一個接口處于傳送狀態(tài)。對于VS1003芯片的功能控制,如初始化、軟復(fù)位、暫停、音量控制、播放時間的讀
6、取等,均是通過SCI寫入到特定寄存器的內(nèi)容來實(shí)現(xiàn)的。兩條SCI指令之間要通過DREQ引腳信號判斷上次處理是否完成。該系統(tǒng)使用STM32 內(nèi)部接口SPI2 與VS1003 進(jìn)行通信,下面介紹其引腳連接情況。PA3 :VS1003 的中斷請求引腳。當(dāng)VS1003 內(nèi)部數(shù)據(jù)已處理完畢,需要新的數(shù)據(jù)時,將DREQ 拉高。STM32根據(jù)這個信號來給VS1003 發(fā)送新的數(shù)據(jù)流。PB13 : 已連接到STM32 內(nèi)部接口SPI2 的時鐘(SCL K) 信號線。PB14 :已連接到STM32 內(nèi)部接口SPI2 的主輸入從輸出(MISO) 信號線。這里STM32 是主設(shè)備,VS1003 是從設(shè)備。數(shù)據(jù)流的傳輸
7、方向是從VS1003 傳輸給STM32 。主要用于讀取VS1003 的一些狀態(tài)和內(nèi)部寄存器值,比如寄存器測試返回的內(nèi)部寄存器的值。PB15 :已連接到STM32 內(nèi)部接口SPI2 的主輸出從輸入(MOSI) 信號線。這里STM32 是主設(shè)備,VS1003 是從設(shè)備。數(shù)據(jù)流方向是從STM32 傳輸給VS1003 ,主要傳輸給VS1003 一些控制命令、MP3/ WMA 數(shù)據(jù)流等。PA1 :低電平有效,如果拉低該引腳,那么通過SPI 傳輸?shù)氖强刂菩盘???刂菩盘柊ㄗx寫VS1003 的內(nèi)部寄存器、對VS1003 進(jìn)行初始化、設(shè)置左右聲道音量等。PA2 :低電平有效,如果拉低該引腳,那么通過SPI 傳
8、輸?shù)氖菙?shù)據(jù)信號。比如在向VS1003 傳輸MP3/ WMA 的數(shù)據(jù)流時需要拉低該引腳。PA0 :低電平有效,拉低該引腳則硬件復(fù)位VS1003 。23 液晶顯示模塊設(shè)計(jì)LCD3310芯片是一個48行84列的液晶顯示器主要模塊。其內(nèi)存帶有低功耗PCD8544的CMOSLCD控制驅(qū)動器,串行輸入速度最高可達(dá)4. 0Mbits/S,而且所有必須的顯示功能集成在一塊芯片上,包括LCD電壓及偏置電壓發(fā)生器,所以LCD3310是一款低功耗的液晶顯示器。為了讓LCD3310液晶能夠顯示4行12* 12的漢字,系統(tǒng)開辟了一個6* 84字節(jié)的緩沖區(qū),要寫液晶時,就不用直接寫LCD3310的靜態(tài)DDRAM了,可以先
9、寫系統(tǒng)為它開辟的數(shù)據(jù)緩沖區(qū),最后再刷新修改的部分就可以顯示出要顯示的內(nèi)容,LCD3310與主控制器是SPI接口方式。3 系統(tǒng)軟件設(shè)計(jì)方案3.1 MP3播放器軟件系統(tǒng)流程原理系統(tǒng)啟動后,先初始化硬件模塊。由MCU通過FAT32文件系統(tǒng)接口讀取SD卡的一些基本信息,如容量、扇區(qū)大小、FAT表及根目錄所在的啟始扇區(qū)等。通過獲得這些信息后,就可以找出SD卡是否有我們可以播放的音樂文件。若有音樂文件,微處理器將通過SPI總線方式讀出該文件的音頻信息,并將歌曲的碼流信息送入到VS1003芯片中,通過VS1003芯片解碼以及其內(nèi)含的高質(zhì)量的立體DAC和耳機(jī)驅(qū)動電路,實(shí)現(xiàn)MP3歌曲的播放功能。在觸摸鍵的控制下
10、,通過LCD3310中菜單選項(xiàng)的選擇,實(shí)現(xiàn)對歌曲選擇及音量控制等功能;在播放的同時, LCD3310上顯示的信息除歌曲名稱信息外,還包括進(jìn)度和音量等信息。由于SPI1 讀取SD 卡文件的速度遠(yuǎn)超過VS1003 播放數(shù)據(jù)流的速度,因此VS1003 在播放來自SPI2 的數(shù)據(jù)流期間,SPI1 能從SD 卡中讀取下次播放所需的數(shù)據(jù),不會產(chǎn)生聲音不連續(xù)的情況。由于使用了2 個SPI 接口,相互之間無干擾,且提高了文件系統(tǒng)的效率,因此本系統(tǒng)能得到非常高品質(zhì)的音樂。如圖6是MP3播放器的軟件系統(tǒng)流程圖。下面介紹軟件的核心模塊。(1)SD 模塊SD 模塊主要提供SD 卡驅(qū)動以及對FAT 文件系統(tǒng)操作的函數(shù),
11、FAT 文件系統(tǒng)支持長文件名。該模塊主要含有2 個文件msd.c 和fat16.c 。下面分別介紹其主要函數(shù)的功能。(1) msd.c該文件用于提供SD 卡的驅(qū)動,主要包括以下函數(shù)。SPI_ Config : 配置與SD 卡相連接的SPI1 及相關(guān)GPIO。MSD_Init :初始化SD 卡通信。Get_Medium_Characteristics :獲取SD 卡的容量和塊大小等相關(guān)信息。MSD_GoIdleState :令SD 卡處于空閑態(tài)。MSD_SendCmd :向SD 卡發(fā)送命令。MSD_GetResponse :從SD 卡獲取響應(yīng)。MSD_GetStatus :獲取SD 卡的狀態(tài)。M
12、SD_WriteBlock :向SD 卡寫入1 個塊的數(shù)據(jù)。MSD_ReadBlock :從SD 卡讀取1 個塊的數(shù)據(jù)。以下是函數(shù)MSD_ReadBlock 的實(shí)現(xiàn):u8 MSD_ ReadBlock ( u8 * pBuffer , u32 ReadAddr , u16 NumByte ToRead) u32 i = 0 ;u8 rvalue = MSD_RESPONSE_FAILURE;MSD_CS_LOW() ; / / 拉低片選信號,選中SD 卡MSD_SendCmd (MSD_READ_ SIN GL E_BLOCK, ReadAddr ,0xFF) ; / / 發(fā)送讀取塊命令/ /
13、 檢測SD 卡是否有返回信息,若是則返回0x00if ( !MSD_GetResponse (MSD_RESPONSE_NO_ERROR) ) if ( !MSD_ GetResponse (MSD_ START_DA TA_ SIN GL E_BLOCK_READ) ) / / 等待數(shù)據(jù)令牌,標(biāo)志數(shù)據(jù)傳輸開始for (i = 0 ; i < NumByte ToRead ; i + + ) / / 讀取數(shù)據(jù)* pBuffer = MSD_ReadByte() ; / / 緩存收到的數(shù)據(jù)圖6 軟件系統(tǒng)流程圖pBuffer + + ; / / 緩存指針后移rvalue = MSD_RESP
14、ONSE_NO_ERROR ;/ / 修改rvalue 的值為成功MSD_CS_HIGH() ; / / 拉高片選信號,禁用SD 卡MSD_WriteByte(DUMMY) ; / / 寫無效字節(jié),傳輸結(jié)束return rvalue ; / / 返回(2)fat16. c該文件提供對FAT16 文件系統(tǒng)的支持,主要包含以下函數(shù)。ReadMBR :讀取MBR 數(shù)據(jù)結(jié)構(gòu)。ReadBPB :讀取BPB 數(shù)據(jù)結(jié)構(gòu)。ReadFAT :讀取文件分配表指定項(xiàng)。ReadBlock :讀取SD 卡的一個扇區(qū)。FAT_Init :獲取FAT16 文件系統(tǒng)的基本信息。DirStartSec :獲取根目錄的開始扇區(qū)號
15、。DataStartSec :獲取數(shù)據(jù)區(qū)的開始扇區(qū)號。ClusConvLBA :獲取一個簇的開始扇區(qū)號。LBAConvClus :轉(zhuǎn)換扇區(qū)號與簇號之間的關(guān)系。Get FileName :獲取指定文件的首扇區(qū)號。ListDate Time :列出文件或子目錄創(chuàng)建的時間日期。SearchFoler :在指定范圍內(nèi)查找文件或子目錄。ListDir :列出指定范圍內(nèi)的文件或子目錄及相關(guān)信息。FAT_FileOpen :打開指定文件。FAT_FileRead :讀取文件數(shù)據(jù)。(2)VS1003模塊VS1003 模塊主要提供對解碼芯片VS1003 的驅(qū)動,為應(yīng)用層播放音頻數(shù)據(jù)、控制音量聲道等提供基本接口。
16、該模塊主要含文件vs1003. c 。其主要函數(shù)的功能如下。vs1003. c 文件主要提供VS1003 芯片的驅(qū)動,包含以下幾個主要函數(shù)。VS1003_Config :配置STM32 與VS1003 連接的相關(guān)引腳,包括SPI2 、PA0 、PA1 、PA2 、PA3 。SPIGetChar :通過SPI 從VS1003 讀取1 個字節(jié)。SPIPutChar :通過SPI 向VS1003 寫入1 個字節(jié)。如果是MP3/ WMA 數(shù)據(jù)流,則VS1003 將開始解碼并播放。Mp3ReadRegister :讀取VS1003 寄存器的值。Mp3WriteRegister :寫VS1003 寄存器。
17、Mp3Reset :VS1003 復(fù)位,包括軟件復(fù)位和硬件復(fù)位。Mp3SoftReset :VS1003 軟件復(fù)位,設(shè)置時鐘、采樣率、重音、音量、立體聲等參數(shù),一般在2 首樂曲之間需要一次軟件復(fù)位。VsSine Test : 播放正弦聲波, 用于測試VS1003 和STM32 的連接是否完好。以下是VS1003音頻解碼芯片初始化的部分代碼:void init_vs1003()vs1003_dir|=0X2C;VS1003_xResetDIR |=BIT5;printfs(“n-hard_reset-n”);hard_reset; /硬件復(fù)位delay_ms(10);sotf_send_bit2
18、(0XFF);hard_set;sotf_send_bit2(0XFF);Wait_Vs1003_DREQ();printfs(“n-soft_reset_vs1003-n”);soft_reset_vs1003();printfs(“n -vs1003initok-n”);(3)圖形人機(jī)交互模塊(觸摸屏支持庫的安裝)網(wǎng)絡(luò)MP3播放器搭載了一塊觸摸屏作為系統(tǒng)硬件的控制模塊,有了觸摸屏的支持,用戶就可以通過點(diǎn)擊圖形人機(jī)交互界面中的窗體控件對播放器進(jìn)行管理。在設(shè)計(jì)播放器的圖形人機(jī)交互界面之前,還需要一層應(yīng)用程序庫封裝系統(tǒng)對底層觸摸屏驅(qū)動的操作,將觸摸控制以一個統(tǒng)一的接口提供給上層GUI應(yīng)用程序使用。該設(shè)計(jì)使用了tslib應(yīng)用程序庫來封裝圖形用戶界面對底層觸摸屏的操作。tslib是一個開源的觸摸屏支持庫,它作為觸摸屏驅(qū)動的適配層,為不同的觸摸屏提供了一個統(tǒng)一的接口。tslib
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能化衛(wèi)生間隔斷研發(fā)與市場推廣合同
- 黨建工作信息化建設(shè)合作協(xié)議書
- 籃球場地租賃與廣告合作合同
- 互聯(lián)網(wǎng)企業(yè)云端辦公用品租賃合同
- 餐飲運(yùn)營減虧方案
- 庭院果樹維護(hù)方案
- 智能倉儲工廠廢品回收押金合同模板
- 墻面拆除修補(bǔ)方案
- 月嫂培訓(xùn)考試題及答案
- 電商培訓(xùn)課程大綱
- 課外古詩詞誦讀-七年級上冊語文教案
- 國際貨物運(yùn)輸服務(wù)費(fèi)合同
- 文創(chuàng)產(chǎn)品銷售合同
- 小學(xué)安全工作臺帳范本
- 碳中和技術(shù)概論全套教學(xué)課件
- 廣西保險銷售從業(yè)人員銷售資質(zhì)分級測試題庫(含答案)
- 【人教版】八年級化學(xué)上冊期末測試卷(含答案)
- 基礎(chǔ)護(hù)理學(xué)第七版題附有答案
- 2024中汽中心校園招聘筆試參考題庫含答案解析
- 監(jiān)理業(yè)務(wù)手冊范本
- 精神活性物質(zhì)所致精神障礙病人的護(hù)理查房
評論
0/150
提交評論