版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式mp3播放器的設(shè)計1 系統(tǒng)概述本文采用stm32系列微控制器, 結(jié)合解碼芯片vs1003、sd卡、lcd等外圍設(shè)備設(shè)計并實(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è)計方案本系統(tǒng)在硬件上分為6個模塊: 微控制器stm32f103、解碼模塊vs1003、存儲模塊sd卡、觸摸屏、usb接口和顯示屏lcd。系統(tǒng)硬件框架如圖5所示。圖5 系統(tǒng)硬件框架圖2.1 存儲模塊設(shè)計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è)計中,音頻數(shù)據(jù)mp3文件是以sd卡為載體。所以在電路設(shè)計中必須含有讀取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è)計音頻解碼模塊完成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è)計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è)計方案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_response_
14、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ū)號。data
15、startsec :獲取數(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 寄存器。mp3re
17、set :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(0xff
18、);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ī)交互界面之前,還需要一層應(yīng)用程序庫封裝系統(tǒng)對底層觸摸屏驅(qū)動的操作,將觸摸控制以一個統(tǒng)一的接口提供給上層gui應(yīng)用程序使用。該設(shè)計使用了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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冀少版八年級生物上冊第五單元第二節(jié)食品保存技術(shù)課件
- 探險賓館安全活動規(guī)則
- 電子產(chǎn)品賣場租賃聯(lián)營協(xié)議
- 住宅小區(qū)物業(yè)管理租賃合同
- 離婚協(xié)議書中退休金處理
- 電子電器印刷質(zhì)量評估準(zhǔn)則
- 烘焙店設(shè)備安裝合同
- 汽車銷售廣告施工合同文本格式
- 人力資源項(xiàng)目薪資激勵策略
- 保險業(yè)用電合同管理規(guī)定
- Linux網(wǎng)絡(luò)管理
- 混凝土結(jié)構(gòu)連接化學(xué)螺栓錨栓計算表
- 華為AC6005配置清單
- 第五章預(yù)應(yīng)力混凝土工程
- 15噸每小時垃圾滲濾液管式超濾技術(shù)方案
- 危大工程臺賬
- 旺角城廣場商鋪招商代理協(xié)議書
- 自己編制的表格-兩孔箱涵(結(jié)構(gòu)、配筋、裂縫、基底應(yīng)力)箱涵結(jié)構(gòu)計算(恒載+活載)
- 小流量多頭泵中文說明書C
- 管理經(jīng)濟(jì)學(xué)計算題及參考答案(已分類整理)
- 產(chǎn)萬噸高密度聚乙烯聚合工段工藝設(shè)計
評論
0/150
提交評論