嵌入式系統課程設計總結報告

2022-10-19 02:57:15 字數 6670 閱讀 4997

課程名稱: 嵌入式系統課程設計

專案名稱: 基於arm實現*****盒

專業一、 設計內容

基本功能:預存四首歌曲,實現迴圈**;

每個按鍵對應一首歌曲。

拓展功能:通過按鍵簡單演奏**,類似鋼琴;

實現兩個模式的切換,切歌模式和音量加減模式。

二、 設計思路

基礎功能:

將音訊資料儲存在sd卡中,使用fatfs檔案系統進行資料的讀寫,通過spi2匯流排將資料傳到核心。核心再將資料通過spi1匯流排傳送到音訊解碼模組vs1053,輸入的資料(即位元流資料)被解碼後送到dac發出聲音。

將**儲存在sd卡內,通過檔案的位址來判別將要**哪一首**,通過位址的遞增和迴圈來實現**的自動迴圈**。按鍵對曲目的控制,可通過鍵盤掃瞄函式,判斷哪乙個鍵被按下,使鍵盤掃瞄函式返回不同的返回值,實現對檔案位址的控制。將此返回值設定為全域性變數,可實現在****中曲目的切換。

另外,我們還利用解碼模組實現對音量的控制,使用按鍵控制音量的提高或降低。使用spi1匯流排將tft顯示屏連線到核心,顯示按鍵功能、當前曲目、當前模式等資訊。

由於開發板只有5個按鍵,按鍵數量有限,需要對按鍵實現曲目切換和音量功能的復用。我們小組設定了兩種模式,切歌模式和音量模式,並定義左鍵為模式切換鍵,實現不同模式的選擇和按鍵的復用。

拓展功能:

基本思路是通過定時器中斷來產生一定頻率的50% 空佔比的脈寬調變波,用此脈寬調變波激勵揚聲器,從而使揚聲器發出一定頻率的聲音。

所以只要將不同按鍵的中斷子程式設定為對定時器進行不同資料的配置,即可實現不同按鍵與不同揚聲器發生頻率的對應。

然後使乙個按鍵的按下與鬆開均進入中斷,且分別實現開啟(揚聲器發聲)與關閉(揚聲器不發聲)定時器的功能,從而使課題的附加功能表現地更自然。

三、 硬體配置

基礎功能:

(1)sd卡:儲存音訊資料

配置方法:

根據開發板原理圖,配置方法如下圖所示

(2)vs1053解碼晶元:將輸入的位元流解碼後送入dac

配置方法:

音訊解碼模組與開發板接線方式:

//5v---5v

//gnd--gnd

//xrst--pg8

//miso--pa6

//mosi--pa7

//sclk--pa5

//dreq--pg7

//xcs--pe6

//xdcs--pg6

(3)tft顯示屏

(4)外放音響

拓展功能:

pc機一台;

p4 2.06cpu/40ghd/512m ram以上配置,stm32f103 開發板一套;

外接揚聲器乙個

四、 設計步驟或流程圖

基礎功能:

1.初始化

包括微控制器本身的初始化和 vs1053的初始化

(1)初始化 stm32 的 io 口和 spi;

(2)vs1053 進行儲存器測試;

(3)初始化設定音訊輸出,設定音訊輸入要設定成 vs1053;

(4)vs1053 進行正弦波測試;

(5)vs1053 進行一些基本設定,包括音效模式等。

2.輸入音訊檔案資料

(1)通過 fatfs 開啟音訊檔案;

(2)vs1053 進行軟體復位;

(3)使用 fatfs 讀取音訊檔案資料;

(4)傳送檔案件,每次傳送 32 個位元組,直到音訊檔案傳送完成。

3.對tft顯示屏進行基礎設定

拓展功能:

1. 按鍵初始配置:對所用到的按鍵進行相應的io口配置,且完成按鍵中斷的中斷通道配置。

2. 中斷通道的中斷子程式:由於會不只乙個鍵配置在同乙個中斷通道中,所以中斷通道的中斷子程式首先進行對按下按鍵的識別。

然後讀取與按鍵相對應的io口電平,若為低電平(=下降沿=按下鍵),則對定時器進行資料配置,並開啟定時器;若為高電平(=上公升沿=鬆開鍵),則關閉定時器。

3. 定時器的中斷子程式:定時器產生中斷時,定時器繼續工作,且翻轉與揚聲器相連的io口的輸出電平。

五、 採用的技術、技巧、功能模組介紹

基礎功能:

(1)技術和技巧

****模組的過程中,我們分為兩個功能,其中有切歌功能,即四個按鍵對應於四首歌,另外乙個就是可以實現模式切換的功能,該功能包括兩種模式,即切歌模式和音量加減模式,其中有乙個按鍵來實現兩個功能之間的切換,在切歌模式中,另外的三個按鍵對應三首歌曲,音量加減模式中,兩個鍵分別對應於音量加和音量減。

**歌曲的主要步驟為,首先對模組進行一系列的初始化,並在顯示屏上顯示每個按鍵對應的歌曲或音量加減的功能,設定初始音量為230,然後對sd卡進行讀取資料的操作,並找到對應的存放歌曲的資料夾music,對檔案中***檔名稱讀取並儲存,同時記錄檔案的位址,然後跳轉到****的函式,該函式中對按鍵進行掃瞄並跳轉到所按下按鍵對應的功能,從而實現**的**和音量的加減。

在切歌功能中,我們通過對所掃瞄的歌曲檔案進行排序,並將四個按鍵對應到所排的序號中,所以當我們掃瞄到哪個按鍵按下的時候,就在其後面賦予乙個返回值,返回該按鍵對應**的序號,通過返回值我們可以在主函式中得到該序號所對應歌曲的位址,通過該位址我們可以實現對**檔名稱的讀取,以及**資料的解碼,從而實現在lcd顯示屏上顯示**的名稱和****這些功能。

(2)功能模組

1)解碼模組

本次實驗**的**主要是通過讀取sd卡的中的***檔案,再將其輸送至vs1053解碼器中進行解碼,從而實現**的**。其中vs1053通過序列資料介面sdi和序列控制介面sci進行通訊。

vs1053引腳分配圖vs1053封裝圖

vs1053中重要的幾個引腳如下:

1)vs_miso:spi 輸入線

2) vs_mosi:spi 輸出線

3) vs_sck:spi 時鐘線

4) vs_xcs:器件片選

5) vs_xdcs:資料片選和位元組同步

6) vs_dreq:資料請求,輸入匯流排。

7) vs_rst:復位端

實驗中vs1053主要實現**乙個完整的**檔案和取消**這兩個功能

(一)**乙個完整檔案

1、傳送音訊檔案到vs1053;

2、讀取附加引數endfillbyte的值;

3、傳送endfillbyte[7:0]中的值最少2052個位元組;

4、設定sci_mode的sm_cancel位;

5、傳送endfillbyte[7:0]中的值最少32個位元組;

6、讀取sci_mode,如果sm_cancel位依然是設定的,則跳到步驟5;如果sm_cancel始終沒有被清除,在傳送2048個位元組之後,執行軟體復位;

7、這首歌曲現在已經成功被傳送了。hdat0和hdat1都應該包含0來表明現在已經沒有正在解碼的格式了。現在返回步驟1。

(二)取消**

在****時,當使用者想跳到下一首,可通過取消當前的歌曲**來實現,它用下列步驟來實現:

1、傳送乙個音訊檔案的部分到vs1053;

2、設定sci_mode的sm_cancel位;

3、繼續傳送音訊檔案,但要在傳送32位元組的資料之後檢查sm_cancel,如果它還是被設定,則重新進行步驟3。如果sm_cancel始終沒有被除,在傳送2048個位元組之後,執行軟體復位;

4、當sm_cancel被清除,讀取附加的引數值endfillbyte;

5、傳送 endfillbyte[7:0]中的值,共計2052個位元組;

6、hdato和hdat1都應該包含0來表明現在已經沒有正在解碼的格式了,你現在可以開始傳送下乙個音訊檔案了。

2)sd卡

sd卡中用於存放我們需要**的***檔案,**檔案放在乙個叫music的資料夾,在**時通過對sd卡中的資料夾進行掃瞄匹配,來得到****的正確路徑。本次實驗sd卡的操作模式為sd卡模式,即通過sdio進行通訊,允許4線的高速資料傳輸。

sd卡的引腳排序如下:

sd卡模組引腳圖

以下為sd卡在正常工作時的三個過程,包括初始化和讀寫資料。

(一)sd卡初始化過程:

1、初始化與sd卡連線的硬體條件(mcu的spi配置,i0口配置);

2、上電延時(大於74個clk);

3、復位卡(cmd0),進入idle狀態;

4、傳送cmd8,檢查是否支援2.0協議;

5、根據不同協議檢查sd卡(命令包括:cmd55、cmd41、cmd58和cmd1等);

6、取消片選,傳送8個clk,結束初始化

在完成了初始化之後,就可以開始讀寫資料了

(二)從sd卡中讀取資料

sd卡讀取資料,這裡通過cmd17來實現,具體過程如下:

1、傳送cmd17;

2、接收卡響應r1;

3、接收資料起始令牌0xfe;

4、接收資料;

5、接收2個位元組的crc,如果不使用crc,這兩個位元組在讀取後可以丟掉;

6、禁止片選之後,發多8個clk;

(三)向sd卡中寫資料

1、傳送cmd24;

2、接收卡響應r1;

3、傳送寫資料起始令牌oxfe;

4、傳送資料;

5、傳送2位元組的偽crc;

6、禁止片選之後,發多8個clk

3)lcd顯示屏

本次實驗中我們用的是tftlcd顯示屏,該模組主要用來顯示當前**的歌曲,切歌時每個按鍵對應的歌曲,以及音量增減時加減音量所對應的按鍵。

lcd模組原理圖

實驗中對tftlcd模組的使用主要有以下幾個過程

(一)設定stm32f103與tftlcd模組相連線的i0口

要讓tftlcd模組顯示,首先得初始化tftlcd模組與stm32f103相連的i0以便控制tftlcd,這裡我們用使用的是stm32f103的fsmc

(二)初始化 tftlcd模組

初始化i0口,接著就是對 tftlcd進行配置,首先就是要對lcd復位,由於模組的復位引腳是接在si32f103復位上的,所以直接按下開發板復位鍵即可,然後就是初始化序列,即向lcd控制器寫入一系列的設定值,初始化完成之後,lcd即可正常使用。

(三)將要顯示的內容寫到tftlcd模組內

這一步需要對照:設定座標→寫gram指令→寫gra來實現,但是這個步驟,只是乙個點的處理,如果我們想要顯示字元或數字,就必須要多次使用這個步驟,從而達到顯示字元或數字的目的,因此我們設計乙個函式來封裝這些過程(實現字元或數字的顯示),之後只呼叫該函式,就可以實現字元或數字的顯示。

4)按鍵模組

本次實驗通過按鍵來實現切歌和音量的加減

拓展功能:

(1)技術和技巧

通過讀取與按鍵相對應的io口電平,來判別按鍵是按下還是鬆開。

(2)功能模組

1.按鍵初始配置:

第一部分,對ioc8口(8號按鍵)初始化;第二部分,將中斷分配在8號中斷通道,且是下降沿與上公升沿均觸發中斷;第三部分,將5至9號中斷通道優先順序均設為0。

類似的還有ioc9口,ioc10口,ioc11口,10至15號中斷通道。

2.中斷通道的中斷子程式:

if(exti_getitstatus(exti_line8)==1),判別是否是8號鍵觸發中斷。

if(gpio_readinputdatabit(gpioc, gpio_pin_8)==0),判別8號鍵是否是按下觸發中斷。

tim_對定時器進行資料配置,數字根據所需揚聲器發聲頻率來定。

tim_cmd(tim2, enable);,開啟定時器。

,關閉定時器。

9號按鍵,10號按鍵,11號按鍵類似。

3.定時器的中斷子程式

ioe2口是與揚聲器相連的口,定時器中斷時,翻轉此口的輸出電平。

六、 心得體會

本次的課程實踐是培養我們綜合運用所學知識,發現、提出、分析和解決實際問題、鍛鍊實踐能力的重要環節,是對我們實際工作能力的具體訓練和考察過程。在經過了長達五個星期的摸索與實驗,我們終於完成了課程設計所要求的內容並且還實現了拓展功能,有了乙個圓滿的結果,但這其中的過程卻是很曲折的。

雖然在做課程設計以前我們已經系統地學習了課本上是內容,但是理論與實踐往往會有一些差距,在一開始拿到課題我們還是沒有頭緒。經過上網查詢並學習,我們首先有了系統地思路及整體的設計方向,但是在做的過程中還是遇到了很多問題。我們原本使用的是實驗室開發板,音訊解碼模組需要三個額外的引腳,資料請求選引腳dreq,資料片選引腳dxcs,器件片選引腳xcs,實驗室的開發板有spi可以完成與模組的通訊,但是沒有與上面三個埠直接相連的引腳,在我們嘗試自己按照資料傳輸的方式配置發覺成功率較低後,我們決定更換開發板,這樣也方便我們課後進行除錯。

在選擇發聲器件時,我們一開始想使用蜂鳴器來發聲,後來在實現的過程中發現蜂鳴器的音調制識度很差,很難發出乙個準確的音調,因此我們選擇更換為揚聲器,但是因為輸入揚聲器的訊號很小,使得揚聲器發出的聲音也很小,我們決定使用放大器來放大聲音。一開始我們選擇用**管放大,但是電路連線好後發現訊號容易失真,並且使用乙個放大器放大倍數也不夠,我們就嘗試用多個**管,但是它們不僅電路非常複雜,要考慮到整流、濾波等等問題,經過上網查詢我們發現可以直接使用乙個音訊放大模組來放大,tda2822m這個放大模組可接揚聲器的功率和電阻範圍正好符合我們所使用的揚聲器,在做了多次嘗試後成功放大了聲音,但比較可惜的是最終因為模組內部器件損壞原因沒有成功。而在這部分最大的缺陷是受於微控制器上按鍵的數目(四個)限制,而使揚聲器只能發出四個頻率的音。

這其實是乙個取捨問題,我們可以選擇外接乙個4*4的鍵盤,從而可以使揚聲器最多發出16個頻率的音。但由於鍵盤本身的電路設計原因,很難設計出讓按鍵鬆開時也能觸發中斷的程式,這樣揚聲器的發聲時長就不能人為的控制,而只能通過內建乙個設定好的延時程式來使揚聲器停止發聲,這樣功能的實現顯得很不自然。最後經過權衡,選擇了通過犧牲揚聲器的發聲頻率數,來使功能的實現顯得更自然一些。

嵌入式系統課程設計報告 模版

專業 班級 學院 二 一二年六月 目錄第一章 概述3 1.1研究動機3 1.2研究進度3 1.3專題成果概述3 第二章 實驗平台的構建3 2.1wince的燒寫3 2.2microsoft activesync的同步6第三章 系統設計9 3.1介面要求9 3.2功能要求9 第四章 實作完成9 4.1...

嵌入式課程設計報告

題目 觸控螢幕五子棋遊戲程式設計 基於mx1下的lcd觸控控制以及rs232串列埠通訊 學院自動化 專業自動化 年級 09級 姓名施紅星 2011 年 12月 9 日 根據選作實驗二觸控螢幕的控制提供的例程以及相關驅動,在c語言下適當修改了硬體驅動程式,並根據嵌入式的開發方式,利用相關介面實現在mx...

嵌入式系統課程設計題目

2016.5 共同要求 在lcd上顯示設計題目 設計者名字 主設計者在前 常用外設引腳 led led0 上邊 led3 下邊 分別接pf5 pf9引腳,低電平點亮 按鈕 k0 上邊 k3 下邊 分別接pa0 pc13 pa8 pd3引腳,另一端均接地,按下為低電平。蜂鳴器 蜂鳴器beep接pb10...