嵌入式系統(tǒng)課程設(shè)計匯本報告_第1頁
嵌入式系統(tǒng)課程設(shè)計匯本報告_第2頁
嵌入式系統(tǒng)課程設(shè)計匯本報告_第3頁
嵌入式系統(tǒng)課程設(shè)計匯本報告_第4頁
嵌入式系統(tǒng)課程設(shè)計匯本報告_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...嵌入式系統(tǒng)課程設(shè)計報告課程名稱:嵌入式系統(tǒng)課程設(shè)計工程名稱:基于ARM實現(xiàn)MP3音樂盒專業(yè):電子科學(xué)與技術(shù)設(shè)計內(nèi)容根本功能:預(yù)存四首歌曲,實現(xiàn)循環(huán)播放;每個按鍵對應(yīng)一首歌曲。拓展功能:通過按鍵簡單演奏音樂,類似鋼琴;實現(xiàn)兩個模式的切換,切歌模式和音量加減模式。設(shè)計思路根基功能:將音頻數(shù)據(jù)存儲在SD卡中,使用FATFS文件系統(tǒng)進(jìn)展數(shù)據(jù)的讀寫,通過SPI2總線將數(shù)據(jù)傳到內(nèi)核。內(nèi)核再將數(shù)據(jù)通過SPI1總線傳送到音頻解碼模塊VS1053,輸入的數(shù)據(jù)〔即比特流數(shù)據(jù)〕被解碼后送到DAC發(fā)出聲音。將音樂存儲在SD卡內(nèi),通過文件的地址來判別將要播放哪一首音樂,通過地址的遞增和循環(huán)來實現(xiàn)音樂的自動循環(huán)播放。按鍵對曲目的控制,可通過鍵盤掃描函數(shù),判斷哪一個鍵被按下,使鍵盤掃描函數(shù)返回不同的返回值,實現(xiàn)對文件地址的控制。將此返回值設(shè)置為全局變量,可實現(xiàn)在音樂播放中曲目的切換。另外,我們還利用解碼模塊實現(xiàn)對音量的控制,使用按鍵控制音量的提高或降低。使用SPI1總線將TFT顯示屏連接到內(nèi)核,顯示按鍵功能、當(dāng)前曲目、當(dāng)前模式等信息。由于開發(fā)板只有5個按鍵,按鍵數(shù)量有限,需要對按鍵實現(xiàn)曲目切換和音量功能的復(fù)用。我們小組設(shè)置了兩種模式,切歌模式和音量模式,并定義左鍵為模式切換鍵,實現(xiàn)不同模式的選擇和按鍵的復(fù)用。拓展功能:根本思路是通過定時器中斷來產(chǎn)生一定頻率的50%空占比的脈寬調(diào)制波,用此脈寬調(diào)制波鼓勵揚(yáng)聲器,從而使揚(yáng)聲器發(fā)出一定頻率的聲音。所以只要將不同按鍵的中斷子程序設(shè)置為對定時器進(jìn)展不同數(shù)據(jù)的配置,即可實現(xiàn)不同按鍵與不同揚(yáng)聲器發(fā)生頻率的對應(yīng)。然后使一個按鍵的按下與松開均進(jìn)入中斷,且分別實現(xiàn)開啟〔揚(yáng)聲器發(fā)聲〕與關(guān)閉〔揚(yáng)聲器不發(fā)聲〕定時器的功能,從而使課題的附加功能表現(xiàn)地更自然。硬件配置根基功能:〔1〕SD卡:存儲音頻數(shù)據(jù)配置方法:根據(jù)開發(fā)板原理圖,配置方法如以以下圖所示〔2〕VS1053解碼芯片:將輸入的比特流解碼后送入DAC配置方法:音頻解碼模塊與開發(fā)板接線方式://5V---5V//GND--GND//XRST--PG8//MISO--PA6//MOSI--PA7//SCLK--PA5//DREQ--PG7//XCS--PE6//XDCS--PG6〔3〕TFT顯示屏外放音響拓展功能:PC機(jī)一臺;P42.06CPU/40GHD/512MRAM以上配置,STM32F103開發(fā)板一套;外接揚(yáng)聲器一個設(shè)計步驟或流程圖根基功能:1.初始化

包括單片機(jī)本身的初始化和VS1053的初始化〔1〕初始化STM32的IO口和SPI;

〔2〕VS1053進(jìn)展存儲器測試;

〔3〕初始化設(shè)置音頻輸出,設(shè)置音頻輸入要設(shè)置成VS1053;〔4〕VS1053進(jìn)展正弦波測試;

〔5〕VS1053進(jìn)展一些根本設(shè)置,包括音效模式等。2.輸入音頻文件數(shù)據(jù)〔1〕通過FATFS翻開音頻文件;〔2〕VS1053進(jìn)展軟件復(fù)位;〔3〕使用FATFS讀取音頻文件數(shù)據(jù);〔4〕發(fā)送文件件,每次發(fā)送32個字節(jié),直到音頻文件發(fā)送完成。3.對TFT顯示屏進(jìn)展根基設(shè)置拓展功能:1.按鍵初始配置:對所用到的按鍵進(jìn)展相應(yīng)的IO口配置,且完成按鍵中斷的中斷通道配置。2.中斷通道的中斷子程序:由于會不只一個鍵配置在同一個中斷通道中,所以中斷通道的中斷子程序首先進(jìn)展對按下按鍵的識別。然后讀取與按鍵相對應(yīng)的IO口電平,假設(shè)為低電平〔=下降沿=按下鍵〕,則對定時器進(jìn)展數(shù)據(jù)配置,并翻開定時器;假設(shè)為高電平〔=上升沿=松開鍵〕,則關(guān)閉定時器。3.定時器的中斷子程序:定時器產(chǎn)生中斷時,定時器繼續(xù)工作,且翻轉(zhuǎn)與揚(yáng)聲器相連的IO口的輸出電平。采用的技術(shù)、技巧、功能模塊介紹根基功能:〔1〕技術(shù)和技巧音樂播放模塊的過程中,我們分為兩個功能,其中有切歌功能,即四個按鍵對應(yīng)于四首歌,另外一個就是可以實現(xiàn)模式切換的功能,該功能包括兩種模式,即切歌模式和音量加減模式,其中有一個按鍵來實現(xiàn)兩個功能之間的切換,在切歌模式中,另外的三個按鍵對應(yīng)三首歌曲,音量加減模式中,兩個鍵分別對應(yīng)于音量加和音量減。播放歌曲的主要步驟為,首先對模塊進(jìn)展一系列的初始化,并在顯示屏上顯示每個按鍵對應(yīng)的歌曲或音量加減的功能,設(shè)置初始音量為230,然后對SD卡進(jìn)展讀取數(shù)據(jù)的操作,并找到對應(yīng)的存放歌曲的文件夾MUSIC,對文件中MP3文件名稱讀取并存儲,同時記錄文件的地址,然后跳轉(zhuǎn)到音樂播放的函數(shù),該函數(shù)中對按鍵進(jìn)展掃描并跳轉(zhuǎn)到所按下按鍵對應(yīng)的功能,從而實現(xiàn)音樂的播放和音量的加減。在切歌功能中,我們通過對所掃描的歌曲文件進(jìn)展排序,并將四個按鍵對應(yīng)到所排的序號中,所以當(dāng)我們掃描到哪個按鍵按下的時候,就在其后面賦予一個返回值,返回該按鍵對應(yīng)音樂的序號,通過返回值我們可以在主函數(shù)中得到該序號所對應(yīng)歌曲的地址,通過該地址我們可以實現(xiàn)對音樂文件名稱的讀取,以及音樂數(shù)據(jù)的解碼,從而實現(xiàn)在LCD顯示屏上顯示音樂的名稱和播放音樂這些功能?!?〕功能模塊1〕解碼模塊本次實驗音樂的播放主要是通過讀取SD卡的中的mp3文件,再將其輸送至VS1053解碼器中進(jìn)展解碼,從而實現(xiàn)音樂的播放。其中VS1053通過串行數(shù)據(jù)接口SDI和串行控制接口SCI進(jìn)展通信。VS1053引腳分配圖VS1053封裝圖VS1053中重要的幾個引腳如下:1)VS_MISO:SPI輸入線2)VS_MOSI:SPI輸出線3)VS_SCK:SPI時鐘線4)VS_XCS:器件片選5)VS_XDCS:數(shù)據(jù)片選和字節(jié)同步6)VS_DREQ:數(shù)據(jù)請求,輸入總線。7)VS_RST:復(fù)位端實驗中VS1053主要實現(xiàn)播放一個完整的音樂文件和取消播放這兩個功能〔一〕播放一個完整文件1、發(fā)送音頻文件到VS1053;2、讀取附加參數(shù)endFillByte的值;3、發(fā)送endFillByte[7:0]中的值最少2052個字節(jié);4、設(shè)置SCI_MODE的SM_CANCEL位;5、發(fā)送endFillByte[7:0]中的值最少32個字節(jié);6、讀取SCI_MODE,如果SM_CANCEL位依然是設(shè)置的,則跳到步驟5;如果SM_CANCEL始終沒有被去除,在發(fā)送2048個字節(jié)之后,執(zhí)行軟件復(fù)位;7、這首歌曲現(xiàn)在已經(jīng)成功被發(fā)送了。HDAT0和HDAT1都應(yīng)該包含0來說明現(xiàn)在已經(jīng)沒有正在解碼的格式了。現(xiàn)在返回步驟1?!捕橙∠シ旁诓シ乓魳窌r,當(dāng)用戶想跳到下一首,可通過取消當(dāng)前的歌曲播放來實現(xiàn),它用以下步驟來實現(xiàn):1、發(fā)送一個音頻文件的局部到VS1053;2、設(shè)置SCI_MODE的SM_CANCEL位;3、繼續(xù)發(fā)送音頻文件,但要在發(fā)送32字節(jié)的數(shù)據(jù)之后檢查SM_CANCEL,如果它還是被設(shè)置,則重新進(jìn)展步驟3。如果SM_CANCEL始終沒有被除,在發(fā)送2048個字節(jié)之后,執(zhí)行軟件復(fù)位;4、當(dāng)SM_CANCEL被去除,讀取附加的參數(shù)值endFillByte;5、發(fā)送endFillByte[7:0]中的值,共計2052個字節(jié);6、HDATO和HDAT1都應(yīng)該包含0來說明現(xiàn)在已經(jīng)沒有正在解碼的格式了,你現(xiàn)在可以開場發(fā)送下一個音頻文件了。2〕SD卡SD卡中用于存放我們需要播放的mp3文件,音樂文件放在一個叫MUSIC的文件夾,在播放時通過對SD卡中的文件夾進(jìn)展掃描匹配,來得到播放音樂的正確路徑。本次實驗SD卡的操作模式為SD卡模式,即通過SDIO進(jìn)展通信,允許4線的高速數(shù)據(jù)傳輸。SD卡的引腳排序如下:SD卡模塊引腳圖以下為SD卡在正常工作時的三個過程,包括初始化和讀寫數(shù)據(jù)?!惨弧砈D卡初始化過程:1、初始化與SD卡連接的硬件條件〔MCU的SPI配置,I0口配置〕;2、上電延時(大于74個CLK);3、復(fù)位卡〔CMD0〕,進(jìn)入IDLE狀態(tài);4、發(fā)送CMD8,檢查是否支持2.0協(xié)議;5、根據(jù)不同協(xié)議檢查SD卡〔命令包括:CMD55、CMD41、CMD58和CMD1等〕;6、取消片選,發(fā)送8個CLK,完畢初始化在完成了初始化之后,就可以開場讀寫數(shù)據(jù)了〔二〕從SD卡中讀取數(shù)據(jù)SD卡讀取數(shù)據(jù),這里通過CMD17來實現(xiàn),具體過程如下:1、發(fā)送CMD17;2、接收卡響應(yīng)R1;3、接收數(shù)據(jù)起始令牌0XFE;4、接收數(shù)據(jù);5、接收2個字節(jié)的CRC,如果不使用CRC,這兩個字節(jié)在讀取后可以丟掉;6、制止片選之后,發(fā)多8個CLK;〔三〕向SD卡中寫數(shù)據(jù)1、發(fā)送CMD24;2、接收卡響應(yīng)R1;3、發(fā)送寫數(shù)據(jù)起始令牌OXFE;4、發(fā)送數(shù)據(jù);5、發(fā)送2字節(jié)的偽CRC;6、制止片選之后,發(fā)多8個CLK3〕LCD顯示屏本次實驗中我們用的是TFTLCD顯示屏,該模塊主要用來顯示當(dāng)前播放的歌曲,切歌時每個按鍵對應(yīng)的歌曲,以及音量增減時加減音量所對應(yīng)的按鍵。LCD模塊原理圖實驗中對TFTLCD模塊的使用主要有以下幾個過程〔一〕設(shè)置STM32F103與TFTLCD模塊相連接的I0口要讓TFTLCD模塊顯示,首先得初始化TFTLCD模塊與STM32F103相連的I0以便控制TFTLCD,這里我們用使用的是STM32F103的FSMC〔二〕初始化TFTLCD模塊初始化I0口,接著就是對TFTLCD進(jìn)展配置,首先就是要對LCD復(fù)位,由于模塊的復(fù)位引腳是接在SI32F103復(fù)位上的,所以直接按下開發(fā)板復(fù)位鍵即可,然后就是初始化序列,即向LCD控制器寫入一系列的設(shè)置值,初始化完成之后,LCD即可正常使用?!踩硨⒁@示的內(nèi)容寫到TFTLCD模塊內(nèi)這一步需要對照:設(shè)置坐標(biāo)→寫GRAM指令→寫GRA來實現(xiàn),但是這個步驟,只是一個點的處理,如果我們想要顯示字符或數(shù)字,就必須要屢次使用這個步驟,從而到達(dá)顯示字符或數(shù)字的目的,因此我們設(shè)計一個函數(shù)來封裝這些過程(實現(xiàn)字符或數(shù)字的顯示),之后只調(diào)用該函數(shù),就可以實現(xiàn)字符或數(shù)字的顯示。4〕按鍵模塊本次實驗通過按鍵來實現(xiàn)切歌和音量的加減拓展功能:〔1〕技術(shù)和技巧通過讀取與按鍵相對應(yīng)的IO口電平,來判別按鍵是按下還是松開?!?〕功能模塊1.按鍵初始配置:第一局部,對IOC8口〔8號按鍵〕初始化;第二局部,將中斷分配在8號中斷通道,且是下降沿與上升沿均觸發(fā)中斷;第三局部,將5至9號中斷通道優(yōu)先級均設(shè)為0。類似的還有IOC9口,IOC10口,IOC11口,10至15號中斷通道。2.中斷通道的中斷子程序:if(EXTI_GetITStatus(EXTI_Line8)==1),判別是否是8號鍵觸發(fā)中斷。if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)==0),判別8號鍵是否是按下觸發(fā)中斷。TIM_TimeBaseStructure.TIM_Period=1915;TIM_TimeBaseStructure.TIM_Prescaler=71;,對定時器進(jìn)展數(shù)據(jù)配置,數(shù)字根據(jù)所需揚(yáng)聲器發(fā)聲頻率來定。TIM_Cmd(TIM2,ENABLE);,開啟定時器。{TIM_Cmd(TIM2,DISABLE);},關(guān)閉定時器。9號按鍵,10號按鍵,11號按鍵類似。3.定時器的中斷子程序IOE2口是與揚(yáng)聲器相連的口,定時器中斷時,翻轉(zhuǎn)此口的輸出電平。心得體會本次的課程實踐是培養(yǎng)我們綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題、鍛煉實踐能力的重要環(huán)節(jié),是對我們實際工作能力的具體訓(xùn)練和考察過程。在經(jīng)過了長達(dá)五個星期的摸索與實驗,我們終于完成了課程設(shè)計所要求的內(nèi)容并且還實現(xiàn)了拓展功能,有了一個圓滿的結(jié)果,但這其中的過程卻是很曲折的。雖然在做課程設(shè)計以前我們已經(jīng)系統(tǒng)地學(xué)習(xí)了課本上是內(nèi)容,但是理論與實踐往往會有一些差距,在一開場拿到課題我們還是沒有頭緒。經(jīng)過上網(wǎng)查詢并學(xué)習(xí),我們首先有了系統(tǒng)地思路及整體的設(shè)計方向,但是在做的過程中還是遇到了很多問題。我們原本使用的是實驗室開發(fā)板,音頻解碼模塊需要三個額外的引腳,數(shù)據(jù)請求選引腳DREQ,數(shù)據(jù)片選引腳DXCS,器件片選引腳XCS,實驗室的開發(fā)板有SPI可以完成與模塊的通信,但是沒有與上面三個端口直接相連的引腳,在我們嘗試自己按照數(shù)據(jù)傳輸?shù)姆绞脚渲糜X察成功率較低后,我們決定更換開發(fā)板,這樣也方便我們課后進(jìn)展調(diào)試。在選擇發(fā)聲器件時,我們一開場想使用蜂鳴器來發(fā)聲,后來在實現(xiàn)的過程中發(fā)現(xiàn)蜂鳴器的音調(diào)變識度很差,很難發(fā)出一個準(zhǔn)確的音調(diào),因此我們選擇更換為揚(yáng)聲器,但是因為輸入揚(yáng)聲器的信號很小,使得揚(yáng)聲器發(fā)出的聲音也很小,我們決定使用放大器來放大聲音。一開場我們選擇用三級管放大,但是電路連接好后發(fā)現(xiàn)信號容易失真,并且使用一個放大器放大倍數(shù)也不夠,我們就嘗試用多個三級管,但是它們不僅電路非常復(fù)雜,要考慮到整流、濾波等等問題,經(jīng)過上網(wǎng)查詢我們發(fā)現(xiàn)可以直接使用一個音頻放大模塊來放大,tda2822m這個放大模塊

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論