基于STM32音樂(lè)MP3鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于STM32音樂(lè)MP3鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于STM32音樂(lè)MP3鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于STM32音樂(lè)MP3鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于STM32音樂(lè)MP3鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 題 目:基于STM32音樂(lè)MP3鬧鐘的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名:學(xué)號(hào):所在系院:專業(yè):入學(xué)時(shí)間:年月導(dǎo)師姓名:職稱/學(xué)位 :導(dǎo)師所在單位:完成時(shí)間:年月基于STM32音樂(lè)MP3鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)摘要 :改革開放以來(lái),中國(guó)迅速崛起,各種電子產(chǎn)品層出不窮,人們對(duì)電子產(chǎn)品的要求也越來(lái)越高。本設(shè)計(jì)采用ARM Cortex-M3內(nèi)核的STM32F103ZE作為微控器,選用開發(fā)板的SRAM&Flash模塊,SD卡,LCD液晶顯示屏模塊,Codec音頻模塊等,以及移植FATFS文件系統(tǒng),目的是存儲(chǔ)SD卡中的大數(shù)據(jù)文件和管理SD卡中的文件。本設(shè)計(jì)還移植了UCOSII操作系統(tǒng),任務(wù)的實(shí)時(shí)調(diào)度使得程序變得更加簡(jiǎn)單,運(yùn)

2、行環(huán)境也更加的穩(wěn)定。另外,加入MP3軟解碼,使得系統(tǒng)能夠識(shí)別MP3格式,正確播放出音樂(lè)。本系統(tǒng)設(shè)計(jì)并實(shí)現(xiàn)了集音樂(lè)播放,時(shí)間顯示,時(shí)間設(shè)置為一體的音樂(lè)鬧鐘,解決了鬧鐘鈴聲單調(diào),重復(fù)的苦惱。關(guān)鍵詞:STM32;MP3;鬧鐘,UCOSII;FATFS;SD卡Design and implementation of STM32 MP3 based on the alarm clock musicAbstract:Since the reform and opening up, Chinas rapid rise, all kinds of electronic products emerge in e

3、ndlessly, people also more and more high to the requirement of electronic products.This design USES the ARM architecture (M3 kernel STM32F103ZE as a micro control unit, choose development board SRAM&Flash module, SD card, LCD liquid crystal display module, audio Codec module, etc, and transplanted F

4、ATFS file system, the purpose is to store large data files in SD card, and manage the files of SD card.This design also transplant UCOSII operating system, the task of real-time scheduling makes the program more simple and running environment is also more stable.In addition, add soft decode MP3, ena

5、bles the system to identify MP3 format, right plays music.This system was designed and implemented the collection of music playback, time display, time setting for the integration of music alarm clock, solved the alarm sound monotonous, repetitive.Keywords :STM32,MP3,UCOSII,F(xiàn)ATFS ,SD card 目錄第一章 緒論11

6、.1 設(shè)計(jì)背景1第二章 硬件介紹22.1 STM32F103ZE22.2 按鍵模塊32.3 I/O 模塊32.4 存儲(chǔ)模塊設(shè)計(jì)42.5 LCD液晶屏模塊52.6 Codec音頻模塊72.7 USART串口模塊8第三章 系統(tǒng)軟件設(shè)計(jì)93.1 文件系統(tǒng)FAT93.2 SPI驅(qū)動(dòng)103.2 SD卡的軟件設(shè)計(jì)113.2 MP3軟解碼123.2.1 方案選擇123.2.2 Helix MP3 解碼器123.3 時(shí) 鐘123.3.1 實(shí)現(xiàn)的基本功能123.4 固件庫(kù)的使用133.5 嵌入式操作系統(tǒng)UCOSII14第四章 系統(tǒng)測(cè)試與開發(fā)154.1 搭建開發(fā)環(huán)境154.1.1 安裝 JLINK 驅(qū)動(dòng)154.1

7、.2 安裝 MDK154.2 硬件測(cè)試154.2.1 按鍵中斷測(cè)試154.2.3 LCD測(cè)試174.3 軟件測(cè)試174.3.1 FATFS文件系統(tǒng)移植測(cè)試174.3.2. UCOSII 操作系統(tǒng)移植194.4 系統(tǒng)總體測(cè)試與調(diào)試21致謝22參考文獻(xiàn)23第一章緒論1.1 設(shè)計(jì)背景自單片機(jī)出現(xiàn)至今,電子技術(shù)和計(jì)算機(jī)技術(shù)迅猛發(fā)展,其應(yīng)用領(lǐng)域隨著人們的需求越來(lái)越大?,F(xiàn)今,單片機(jī)技術(shù)已經(jīng)遍滿人類生活的各個(gè)領(lǐng)域,定時(shí)控制是不可缺少的條件,未來(lái)的物聯(lián)網(wǎng)等對(duì)單片機(jī)的要求越來(lái)越高,智能化的道路定時(shí)必不可少。工業(yè)自動(dòng)化中的數(shù)據(jù)處理以及實(shí)時(shí)控制,電子玩具,智能手機(jī),游戲等等,定時(shí)的應(yīng)用領(lǐng)域非常廣泛。在以后物聯(lián)網(wǎng)的發(fā)

8、展中定時(shí)也是發(fā)揮著很大的作用,智能家居,智能交通系統(tǒng),智能儀表等領(lǐng)域,或許這一刻的研究正是下一個(gè)難題的突破。因此對(duì)于定時(shí)器的學(xué)習(xí)是非常重要的。但僅僅只有單片機(jī)的只是遠(yuǎn)遠(yuǎn)不夠,針對(duì)實(shí)際生活,軟硬件結(jié)合。1964年,我們的前輩承擔(dān)著東京奧運(yùn)會(huì)的計(jì)時(shí)工作,此后,電子鬧鐘給我們的生活帶來(lái)了意外的結(jié)果。隨著需求的增加,51單片機(jī)已經(jīng)不能滿足社會(huì)的發(fā)展,STM32系列專為低功耗、高性能、低成本的嵌入式設(shè)計(jì)的ARM Cortex-M內(nèi)核。本設(shè)計(jì)用的是STM32F103ZE是一款時(shí)鐘頻率能達(dá)到72MHz的增強(qiáng)型內(nèi)核。MP3是作為一種音樂(lè)文件的播放器。第一臺(tái)MP3播放器-MPMan F10是由Saehan公司于

9、1998年推出的,轟動(dòng)一時(shí)。MP3全稱叫MPEG Audio Layer3,是一種音頻壓縮技術(shù)。MP3是利用 MPEG Audio Layer 3 的技術(shù),將音樂(lè)以1:10 甚至 1:12 的壓縮率,壓縮成容量較小的file,也就是說(shuō),在非常好的保持了原來(lái)的音質(zhì)的同時(shí),把文件壓縮到非常小的程度在音質(zhì)丟失很小的情況下。由于MP3具有音質(zhì)高,體積小等優(yōu)點(diǎn),使得其格式在網(wǎng)上非常流行,每首歌大概3,4M字節(jié)。使用MP3播放器對(duì)MP3文件進(jìn)行實(shí)時(shí)的解壓縮(解碼),這樣,高品質(zhì)的MP3音樂(lè)就播放出來(lái)了。當(dāng)前,MP3播放器不計(jì)其數(shù),在各種手機(jī),電腦等各種電子產(chǎn)品中隨處可見,不少電子產(chǎn)品的MP3播放器音質(zhì)非常

10、好,手機(jī),電腦上都可以免費(fèi)下載播放器。 本次的設(shè)計(jì)音樂(lè)MP3鬧鐘,主要研究MP3播放和鬧鐘的實(shí)現(xiàn),MP3播放就是一個(gè)難點(diǎn),但這次畢業(yè)論文的設(shè)計(jì),不僅鞏固所學(xué)知識(shí),還鍛煉了自我學(xué)習(xí)的能力。 第二章硬件介紹本設(shè)計(jì)所用硬件為STM32F103ZE開發(fā)板,自帶SRAM & Flash模塊,SD卡模塊,LCD液晶屏模塊,Codec音頻模塊,USART串口模塊等。圖 2-1 STM32F103ZE開發(fā)板2.1 STM32F103ZE STM32 STM32代表ARM Cortex-M內(nèi)核的32位微控制器 F F代表芯片子系列。 103103代表增強(qiáng)型系列。 RR這一項(xiàng)代表引腳數(shù),其中T代表36腳,C代表4

11、8腳,R代表64腳,V代表100腳,Z代表144腳,I代表176腳。 B B這一項(xiàng)代表內(nèi)嵌Flash容量,其中6代表32K字節(jié)Flash,8代表64K字節(jié)Flash,B代表128K字節(jié)Flash,C代表256K字節(jié)Flash,D代表384K字節(jié)Flash,E代表512K字節(jié)Flash,G代表1M字節(jié)Flash。 T T這一項(xiàng)代表封裝,其中H代表BGA封裝,T代表LQFP封裝,U代表VFQFPN封裝。 66這一項(xiàng)代表工作溫度范圍,其中6代表-4085,7代表-40105。圖2-2 STM32F103ZE字母表 STM32F103ZE 增強(qiáng)型系列使用ARM公司的Cortex-M3 32位的RISC

12、內(nèi)核,工作頻率為72MHz。其功能非常強(qiáng)大。選擇STM32F103ZE作為此次設(shè)計(jì)的微處理器,主要因?yàn)槠渫鈬涌诙喾N多樣,在實(shí)現(xiàn)其他功能的時(shí)候更加方便,還有一點(diǎn)就是其足夠大的閃存和內(nèi)存。Cortex-M3是一個(gè)32位處理器內(nèi)核。內(nèi)部的寄存器、數(shù)據(jù)路徑、存儲(chǔ)器接口都是32位的。CM3采用了哈佛結(jié)構(gòu),擁有獨(dú)立的數(shù)據(jù)總線和指令總線,可以讓取指與數(shù)據(jù)訪問(wèn)并行不悖。這樣一來(lái)數(shù)據(jù)訪問(wèn)不再占用指令總線,從而提升了性能。為實(shí)現(xiàn)這個(gè)特性,CM3內(nèi)部含有好幾條總線接口,每條都為自己的應(yīng)用場(chǎng)合優(yōu)化過(guò),并且它們可以并行工作。但是另一方面,指令總線和數(shù)據(jù)總線共享同一個(gè)存儲(chǔ)器空間(一個(gè)統(tǒng)一的存儲(chǔ)器系統(tǒng))。換句話說(shuō),不是因

13、為有兩條總線,可尋址空間就變成8GB了。2.2 按鍵模塊本次設(shè)計(jì)需要用按鍵對(duì)鬧鐘進(jìn)行時(shí)間設(shè)置,共分為五個(gè)按鍵,上下左右中間,分別與STMF103ZE的PG15,PD3,PG14,PG13,PG7相連。在開始之前需要對(duì)按鍵,GPIO進(jìn)行配置,直接調(diào)用庫(kù)函數(shù)。2.3 I/O 模塊I/O具有通用和復(fù)用功能(GPIO和AFIO)。GPIO的每個(gè)位可以由軟件分別配置成8種模式:輸入上拉,輸入下拉,輸入浮空,模擬輸入,開漏輸出,推挽式輸出,推挽式復(fù)用功能,開漏復(fù)用功能。下圖是端口位配置表和輸出模式位表。端口位配置表:圖2-3 STM32端口位配置表輸出模式位表:圖2-4 STM32端口位配置表2.4 存儲(chǔ)

14、模塊設(shè)計(jì)SD卡(Secure Digital Memory Card),譯為安全數(shù)碼卡,是一張只有2克,看起來(lái)像一張郵票的SD記憶卡。SD卡是這個(gè)信息化社會(huì)最為通用的數(shù)據(jù)存儲(chǔ)卡,在我們的生活中起著重要作用。SD卡優(yōu)點(diǎn):存儲(chǔ)量大、價(jià)格低、安全性強(qiáng)、使用方便、安全性好。SD卡有6線制的SD方式和4線制的SPI方式,本設(shè)計(jì)采用SPI方式。在此過(guò)程中,以SD卡為存儲(chǔ)設(shè)備,必須對(duì)其內(nèi)容進(jìn)行讀取。該系統(tǒng)使用STM32內(nèi)部接口SPI1與SD卡進(jìn)行通信。在SPI模式下其命令由6個(gè)字節(jié)構(gòu)成。SD卡以命令形式來(lái)控制SD卡的讀寫操作,可根據(jù)命令對(duì)多塊或單塊進(jìn)行讀寫操作。 下圖是電路原理圖,SD卡有九個(gè)引腳,最特殊的

15、就是9號(hào)引腳。SD卡有兩種方式,如何進(jìn)入兩種不同的模式呢?SD卡模式:SD卡從中喚醒的時(shí)候默認(rèn)情況下是SD卡模式。當(dāng)CS(1號(hào)引腳)保持高電平則依然是SD卡模式,當(dāng)CS信號(hào)在復(fù)位命令被接收期間被拉低進(jìn)入SPI模式。 圖2-5 SD卡電路原理圖2.5 LCD液晶屏模塊液體 :分子的方向不能找到規(guī)律的液體?!耙簯B(tài)晶體”簡(jiǎn)稱“液晶”是指分子的方向能找到規(guī)律的液體。液晶產(chǎn)品在我們的生活中隨處可見,家里??吹碾娨?,現(xiàn)在幾乎人手一步的手機(jī)等等。LCD : Liquid Crystal Display翻譯為液晶顯示器,它一種是采用了液晶控制透光度技術(shù)來(lái)實(shí)現(xiàn)色彩的顯示器,倆片玻璃中有許多的細(xì)小的電線,有的垂直

16、有的水平,透過(guò)通電來(lái)控制水晶分子,從而達(dá)到改變分子方向的目的,并將光線折射出來(lái)產(chǎn)生畫面。在眾多LCD類型當(dāng)中,STN、TFT最為常見。STN的英文為Super Twisted Nematic,是我們?cè)谄匠I钪薪佑|最多的LCD了,還記得以前的老式手機(jī)嗎?它的屏幕就是STN的。相比于TFT,STN屬于被動(dòng)矩陣式LCD器件,它的優(yōu)點(diǎn)是功耗小,因此特別省電。STN有傳統(tǒng)單色和彩色,彩色是在單色的基礎(chǔ)上加了一彩色濾光片,同時(shí)把單色顯示矩陣中每一個(gè)像素分成三個(gè)子像素,通過(guò)彩色濾光片顯示出三原色紅綠藍(lán),因此顯示出彩色畫面。STN最多能顯示出65536中色彩,也因此亮度不高,色澤也不是特別好,因此在強(qiáng)光下,

17、圖像看起來(lái)有點(diǎn)吃力。TFT : Thin Film Transistor薄膜晶體管。也稱為主動(dòng)矩陣,因其背部設(shè)置特殊光管,能夠“主動(dòng)”對(duì)各個(gè)獨(dú)立像素進(jìn)行控制,故得到此名。一般TFT的反應(yīng)時(shí)間比較快,約為80ms,而STN為200ms,STN若要提高就會(huì)有閃爍現(xiàn)象發(fā)生。TFT則改善了STN閃爍現(xiàn)象,并且提高了播放播放動(dòng)態(tài)畫面的能力。兩者相比,TFT具有更好的還原能力、更高的對(duì)比度,以及更好的色彩飽和度,它的色彩更加的細(xì)膩,層次感也更強(qiáng),色彩也更加的逼真。TFT-LCD與無(wú)源TN-LCD、STN-LCD的簡(jiǎn)單矩陣不同,它在液晶顯示屏的每一個(gè)像素上都有設(shè)置一個(gè)薄膜晶體管TFT,可以有效的克服非選通時(shí)

18、的串?dāng)_,使顯示液晶屏的靜態(tài)屬性與掃描線數(shù)無(wú)關(guān),大大提高了圖像質(zhì)量。TFT-LCD 即薄膜晶體管液晶顯示器。電路原理圖如下: 圖2-6 LCD電路原理圖2.6 Codec音頻模塊Codec 是指在數(shù)字通信中具有編碼、譯碼功能的編譯碼器。支持視頻和音頻壓縮(CO)與解壓縮的編解碼器或軟件。Codec技術(shù)能有效減少數(shù)字存儲(chǔ)占用的空間,在計(jì)算機(jī)系統(tǒng)中,使用硬件完成CODEC可以節(jié)省CPU資源,提高系統(tǒng)的運(yùn)行效率。在聲卡上往往可以找到一顆或者2顆甚至3顆4面有引腳的正方形芯片,面積一般為0.5-1.0平方厘米。這就是CODEC。CODEC就是多媒體數(shù)字信號(hào)編解碼器,主要負(fù)責(zé)數(shù)字-模擬信號(hào)轉(zhuǎn)換(DAC)和

19、模擬-數(shù)字信號(hào)的轉(zhuǎn)換(ADC)。不管是音頻加速器好,還是I/O控制器好,他們輸入輸出的都是純數(shù)字信號(hào),我們要使用聲卡上的Line Out插孔輸出信號(hào)的話,信號(hào)就必須經(jīng)過(guò)聲卡上的CODEC的轉(zhuǎn)換處理??梢哉f(shuō),聲卡模擬輸入輸出的品質(zhì)和CODEC的轉(zhuǎn)換品質(zhì)有著重大的關(guān)系,音頻加速器或I/O控制器決定了聲卡內(nèi)部數(shù)字信號(hào)的質(zhì)量,而CODEC則決定了模擬輸入輸出的好壞。STM32F103VET微控制器內(nèi)置2個(gè)標(biāo)準(zhǔn)的I2S(IC-to-ICsound)接口(與SPI2和SPI3復(fù)用),可以工作于主或從模式,這2個(gè)接口可以配置為16位或32位傳輸,亦可配置為輸入或輸出支持音頻采樣頻率從8kHz到48kHz。當(dāng)

20、任一個(gè)或兩個(gè)I2S接口配置為主模式,它的主時(shí)鐘可以以256倍采樣頻率輸出給外部的DAC(解碼器)或CODEC(編解碼器)。I2S是一種數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸總線標(biāo)準(zhǔn),STM32芯片提供I2S這樣的接口,我們可以利用這個(gè)接口直接去接數(shù)模轉(zhuǎn)換的DAC芯片,這樣可以將數(shù)字音頻轉(zhuǎn)換成模擬音頻,最終將美麗的音樂(lè)傳入我們的耳朵。I2S有多種數(shù)據(jù)模式,右對(duì)齊音頻數(shù)據(jù)格式輸入(I2S Data Format),左對(duì)齊音頻數(shù)據(jù)格式輸入(left-justfied Data Format),I2S音頻數(shù)據(jù)格式輸入(I2S Data Format),還有就是標(biāo)準(zhǔn)數(shù)據(jù)格式輸入(Standard Data Fo

21、rmat)。下面是I2S Data Format的接口時(shí)序圖: 圖2-7 I2S 模式下PCM1770數(shù)字音頻接口時(shí)序2.7 USART串口模塊串口最基本的就是波特率的設(shè)置。在調(diào)用前要進(jìn)行相應(yīng)的設(shè)置 :第一步 :打開串口時(shí)鐘;第二步 :設(shè)置相應(yīng)的IO口模式;第三步 :配置波特率、數(shù)據(jù)位長(zhǎng)度、就校驗(yàn)位每個(gè)串口都有一個(gè)自己獨(dú)立的波特率寄存器USART_BRR。Tx/Rx波特率=fPCLKx/(16*USARTDIV)在這里需要注意的是:USART、GPIO是兩個(gè)不同的模塊,USART是臨時(shí)“借用”了GPIO設(shè)備作為自己的輸出通道,因此在進(jìn)行配置時(shí),USART時(shí)鐘,GPIO的時(shí)鐘都要打開,還要將對(duì)應(yīng)

22、GPIO引腳設(shè)置為第二功能模式。在嵌入式中串口一般都是用于調(diào)試,因?yàn)槠鋫魉蛿?shù)據(jù)相對(duì)來(lái)說(shuō)很慢,也不能進(jìn)行大量數(shù)據(jù)傳輸。一般用DMA。圖2-8 串口調(diào)試電路圖第三章 系統(tǒng)軟件設(shè)計(jì) 本設(shè)計(jì)所用軟件為Keil uVsion4, Source Insight3.5, 串口調(diào)試助手。Keil uVsion4是美國(guó)Keil Software公司推出的兼容C語(yǔ)言軟件開發(fā)系統(tǒng),對(duì)比于傳統(tǒng)的匯編,C語(yǔ)言在結(jié)構(gòu)上,可維護(hù)性上,結(jié)構(gòu)和功能上都具有明顯的優(yōu)勢(shì)。Keil主要包含實(shí)時(shí)操作系統(tǒng)的核心(這也是嵌入式開發(fā)工程師選擇此軟件的重要原因)、C編譯器、庫(kù)管理器、宏匯編程序、連接器和調(diào)試器、固件。Keil uVsion4

23、相對(duì)于前面幾個(gè)版本,提供一個(gè)高效,整潔的環(huán)境來(lái)開發(fā)應(yīng)用程序。同時(shí)能夠支持更多的ARM芯片。Source Insight3.5 實(shí)質(zhì)上是一個(gè)支持多種開發(fā)語(yǔ)言(java,c,c+等等)的編輯器。具有強(qiáng)大的查找、定位、彩色顯示等功能。是一個(gè)面向項(xiàng)目的源碼查看器,和編輯器。它能動(dòng)態(tài)的分析你的代碼并自動(dòng)維護(hù)它的符號(hào)信息數(shù)據(jù)庫(kù),然后把有用的上下文相關(guān)的信息提示給你。串口調(diào)試助手是串口調(diào)試的相關(guān)工具,支持幾種常用波特率,如4800,9600,19200等,能設(shè)置數(shù)據(jù)位和停止位,校驗(yàn),還能自動(dòng)識(shí)別串口,能以十六進(jìn)制或ASCII發(fā)送或接收任何數(shù)據(jù)或字符,發(fā)送的文件大小不限制,發(fā)送周期也可以自己設(shè)置。3.1 文件

24、系統(tǒng)FAT所謂文件系統(tǒng)就是負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱為文件管理系統(tǒng)。FAT文件系統(tǒng)(文件配置表 File Allocation Table)是由微軟開發(fā)的。目前有三種文件系統(tǒng):FAT121、FAT16、FAT32。在實(shí)際磁盤上FAT結(jié)構(gòu)每一表項(xiàng)的大小,也就是所占的位數(shù)。FAT文件分配表每一項(xiàng)為12位,F(xiàn)AT16為16位,F(xiàn)AT32為32位。FatFs介紹 :當(dāng)今社會(huì)大點(diǎn)信息量越來(lái)越大,文件系統(tǒng)成為今后單片機(jī)的一個(gè)方展方向。由于微軟Windows的廣泛應(yīng)用,F(xiàn)AT文件系統(tǒng)最為常用。FatFs是小型嵌入式系統(tǒng)中,實(shí)現(xiàn)FAT文件系統(tǒng)的一個(gè)通用的文件系統(tǒng)模塊。且完全獨(dú)立與I/O層。FatFs為

25、單片機(jī)的使用而設(shè)計(jì),具有很好的層次結(jié)果。從上到下依次為應(yīng)用層,我們不需要了解其協(xié)議和內(nèi)部結(jié)構(gòu),調(diào)用基本點(diǎn)接口函數(shù)就行,非常簡(jiǎn)單。中間層FatFs,實(shí)現(xiàn)FAT文件讀寫協(xié)議,一般不用修改,包含頭文件就行。需要編寫移植代碼的是FatFs提供的底層接口。圖 3-1 FATFS文件系統(tǒng)圖3.2 SPI驅(qū)動(dòng)時(shí)鐘信號(hào)的相位和極性SPI_CR寄存器的時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA),可以組合成四種可能的時(shí)序關(guān)系。CPOL位對(duì)主模式和從模式下的設(shè)備都有用,沒(méi)有數(shù)據(jù)傳輸時(shí)時(shí)鐘的空閑狀態(tài)電平由CPOL位控制。當(dāng)CPOL位置一,SCK引腳保持高電平在空閑狀態(tài)下,當(dāng)CPOL位清零,則SCK引腳則保持低電平。數(shù)

26、據(jù)在第一個(gè)時(shí)鐘邊沿被鎖存。若CPHA位為零,SCK時(shí)鐘的第一邊沿(CPOL位為一就是上升沿,為零時(shí)就是下降沿)進(jìn)行數(shù)據(jù)位采樣。若CPHA位為一,SCK時(shí)鐘的第二邊沿(CPOL位為一就是上升沿,為零時(shí)就是下降沿)。CPOL和CPHA的組合選擇數(shù)據(jù)捕捉的時(shí)鐘邊沿。注意:1、主模式和從模式必須配置成相同的時(shí)序模式。 2、在必須將SPI禁止,必須清除SPE位,在改變CPOL/CPHA位之前。 3、數(shù)據(jù)幀格式?jīng)Q定發(fā)送或接受的數(shù)據(jù)長(zhǎng)度,由SPI_CR1寄存器的DFF位選擇。 4、SCK的空閑狀態(tài)必須和SPI_CR1寄存器指定的極性一致(CPOL為零時(shí),空閑時(shí)應(yīng)下拉SCK為低電平,為一時(shí),SCK為高電平)。

27、3.2 SD卡的軟件設(shè)計(jì)SD卡的寄存器,主要用于存儲(chǔ)SD卡自身的一些信息。向SD卡發(fā)送相應(yīng)的命令就可以讀取SD卡的寄存器。SD卡指令,具有一定的格式在其發(fā)送的時(shí)候。有6字節(jié)組成。驅(qū)動(dòng)設(shè)計(jì) : 因?yàn)榇嗽O(shè)計(jì)中采用的是SD卡的SPI總線,所以SD卡的驅(qū)動(dòng)是基于SPI的驅(qū)動(dòng)是基礎(chǔ)上的。SPI最重要的函數(shù) : 寫函數(shù) void Spi_Write(uint8 chr) 和讀函數(shù) char Spi_Read()。下面是SD卡驅(qū)動(dòng)最重要的幾個(gè)函數(shù)的實(shí)現(xiàn):1. 復(fù)位函數(shù):功能描述:復(fù)位SD卡,用到SD卡,用到CMD0,使用SD卡切到SPI模式。成功則返回0x00,失敗則返回INIT_CMD0_ERROR ui

28、nt8 SD_Reset(),此函數(shù)是SD卡最開始調(diào)用的函數(shù),通過(guò)發(fā)送CMD0將SD卡轉(zhuǎn)到正確的工作模式下。2. 初始化函數(shù):功能描述:初始化SD卡,使用CMD1,成功則返回0x00,失敗則返回0x01Char SD_Init(),此函數(shù)在SD卡執(zhí)行完復(fù)位函數(shù)后開始執(zhí)行。目的就是向SD卡發(fā)送CMD1,然后檢測(cè)SD卡是否進(jìn)入工作狀態(tài)。3. 寫扇區(qū)函數(shù):功能描述:將buffer指向的512個(gè)字節(jié)的數(shù)據(jù)寫入到SD卡的addr扇區(qū)中,addr參數(shù)指扇區(qū)地址,buffer指向數(shù)據(jù)緩沖區(qū)的指針,成功則返回0x00,失敗返回0x01.4. 讀扇區(qū)函數(shù):功能描述:讀取addr扇區(qū)的512個(gè)字節(jié)到buffer指

29、向數(shù)據(jù)緩沖區(qū)。addr參數(shù)指扇區(qū)地址,buffer指向數(shù)據(jù)緩沖區(qū)的指針,成功則返回0x00,失敗返回0x01.3.2 MP3軟解碼3.2.1 方案選擇方案一: 此方案采用軟解MP3,直接用軟件解碼。節(jié)約了硬件成本,但代碼復(fù)雜,編程難度較高,工作量極大,而且對(duì)控制器的處理速度和資源要求都比較高。 方案二:此方案采用硬解MP3,直接用音頻解碼芯片解碼。它使用高性能的VS1003 MP3解碼芯片,功能強(qiáng)大而且價(jià)格便宜,VS1003支持MP3、WAV、WMA、MIDI等諸多音頻格式,音質(zhì)可與市場(chǎng)上中檔MP3播放器相媲美。由于PCM1770芯片僅僅只是進(jìn)行D/A轉(zhuǎn)換,并不支持硬件解碼,且為了挑戰(zhàn)自己加強(qiáng)

30、對(duì)MP3文件格式的理解,所以選擇了方案一作為本次設(shè)計(jì)的MP3解碼方案。3.2.2 Helix MP3 解碼器Helix MP3 解碼器可浮點(diǎn)和定點(diǎn)實(shí)現(xiàn)。將該算法移植到PIC32MX 單片機(jī)時(shí)可考慮定點(diǎn)實(shí)現(xiàn)。該算法可運(yùn)行在任意 32 位定點(diǎn)處理器上,并完全使用 C 語(yǔ)言編碼,可選擇用優(yōu)化的匯編指令替換某些代碼段。Helix MP3 解碼器提供對(duì) MPEG-1 、 MPEG-2 和 MPEG-2.5的第 3 層 ( Layer 3)支持。它支持可變位速率、恒定位速率,以及立體聲和單聲道音頻格式。有關(guān)實(shí)現(xiàn)和特性的詳細(xì)信息,訪問(wèn) Helix MP3 解碼器網(wǎng)站:https:/datatype.heli

31、/Mp3dec。3.3 時(shí) 鐘3.3.1 實(shí)現(xiàn)的基本功能1. 閏年的判斷。如果年份不能被四整除就是平年。不能同時(shí)被四和一百整除,則是閏年。既能被四整除,也能被一百整除,還能被四百整除的也是閏年,否則是平年。2. 判斷日期是否合法,年月日時(shí)分秒小于零不合法,月日時(shí)分秒都不能超過(guò)最大值,合法之后在判斷是否是閏年,若為閏年,則判斷二月是否滿足要求。3. 對(duì)時(shí)間進(jìn)行設(shè)置,可以很據(jù)自己的需求調(diào)節(jié)時(shí)間,鬧鐘的話就需要設(shè)置不同的時(shí)間,時(shí)間到了,就播放處一段音樂(lè)。下面是閏年算法的部分代碼:/*閏年算法*/if( (year_number % 4 = 0) &( year_numbe

32、r % 100 != 0) | (year_number % 400 = 0) )if(month_number = 1) | (month_number = 3) | (month_number = 5) | (month_number = 7) | (month_number = 8) | (month_number = 10) | (month_number = 12) ) if( month_number = 12) if( day_number 31 ) month_number = 1; /月份加一 day_number = 1; /天數(shù)為一 year_number+; 3.4 固

33、件庫(kù)的使用固件庫(kù)的使用很簡(jiǎn)單,先初步熟悉一下固件,通過(guò)里面提供的函數(shù)來(lái)配置微控制器并實(shí)現(xiàn)一些簡(jiǎn)單的分立功能。此函數(shù)庫(kù)包括了微控制器所有外設(shè)的性能特征,以及每個(gè)外設(shè)的應(yīng)用實(shí)例和驅(qū)動(dòng)描述,同時(shí)此函數(shù)庫(kù)是由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成的固件函數(shù)包。有了此固件庫(kù)后,用戶可以輕松應(yīng)用每一個(gè)外設(shè)還不需要深入掌握許多細(xì)節(jié),在一定程度上給用戶帶來(lái)了很大的方便,節(jié)省了大量的程序編寫時(shí)間,也因此大大降低了開發(fā)成本。3.5 嵌入式操作系統(tǒng)UCOSIIUcosii 是Micrium公司提供的,不是一個(gè)完整的實(shí)時(shí)操作系統(tǒng),只是一個(gè)具有可移植、可裁剪、可固化、搶占式多任務(wù)的實(shí)時(shí)內(nèi)核。其源碼開放,非常適合于系統(tǒng)開發(fā),從而適合于多

34、種微處理器、數(shù)字處理芯片及微控制器。它的絕大部分源碼都是ANSI_C編寫的,CPU硬件相關(guān)的部分都是用匯編編寫,并壓縮到最低限度以便于移植到其他的CPU上。Ucosii由核心、CPU的移植、任務(wù)處理、任務(wù)同步與通信、時(shí)間處理五部分組成。1、 核心部分(OSCore.c):這部分是操作系統(tǒng)的核心,包括系統(tǒng)初始化,如void OSInit (void);系統(tǒng)的運(yùn)行、中斷進(jìn)出的前導(dǎo)、任務(wù)調(diào)度、事件處理、時(shí)鐘節(jié)拍等。2、 CPU的移植:因?yàn)樗粡V泛使用,在一些問(wèn)題上還得根據(jù)cpu的具體情況作相應(yīng)的移植。這部分通常用匯編寫涉及SP等系統(tǒng)指針,難度比較大。3、 任務(wù)處理:主要在OSTask.c中。主要包括

35、任務(wù)的建立INT8U OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio);任務(wù)的刪除:INT8U OSTaskDel (INT8U prio);任務(wù)的掛起以及任務(wù)的恢復(fù)。4、 任務(wù)同步與通信:此部分主要包括信號(hào)量、郵箱、郵箱隊(duì)列,事件標(biāo)志等部分。5、 時(shí)鐘部分:在OSTime.c中,該系統(tǒng)中最小時(shí)鐘單位是時(shí)鐘節(jié)拍,也即timetick,任務(wù)延時(shí)等都在這里完成。第四章系統(tǒng)測(cè)試與開發(fā)4.1 搭建開發(fā)環(huán)境4.1.1 安裝 JLINK 驅(qū)動(dòng)JLINK 是SEGGER公司推出的,為了支持仿真ARM

36、內(nèi)核芯片的JTAG仿真器。是學(xué)習(xí)開發(fā)RAM最好的開發(fā)工具,同時(shí)與IAR,Keil等編譯環(huán)境完美連接,操作起來(lái)更加方便易學(xué)。本設(shè)計(jì)就需要用到JLINK下載和調(diào)試程序,在此之前應(yīng)該先安好JLINK的驅(qū)動(dòng)。下載JLINK驅(qū)動(dòng)后,直接雙擊驅(qū)動(dòng)文件Setup_JLINKRAM_V486B.exe,然后根據(jù)提示進(jìn)行安裝即可。安好后,需要檢查是否安裝成功。把JLINK(如下圖) 圖4-1 JLINK實(shí)物圖插到電腦上USB接口,然后在我的電腦管理設(shè)備管理器通用串行總線控制器中看到一個(gè) J-Link driver,表明驅(qū)動(dòng)安裝成功。4.1.2 安裝 MDKMDK指的是Keil MDK,也稱MDK-ARM、uVi

37、sion4等。Keil MDK軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個(gè)完整的開發(fā)環(huán)境。Keil MDK 簡(jiǎn)單易學(xué)而且功能非常強(qiáng)大,是學(xué)習(xí)嵌入式非常好的開發(fā)工具。前面有過(guò)介紹。4.2 硬件測(cè)試4.2.1 按鍵中斷測(cè)試此部分測(cè)試是通過(guò)四個(gè)按鍵分別控制四個(gè)LED燈,若每個(gè)按鍵對(duì)應(yīng)的每個(gè)燈都能亮則按鍵部分測(cè)試成功。/外部中斷設(shè)置voidEXTI_Configuration(void)EXTI_InitTypeDefEXTI_InitStruct;GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3

38、);GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource7);GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource13);GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource14); GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource15);EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStruct.

39、EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStruct.EXTI_Line=EXTI_Line3|EXTI_Line7|EXTI_Line13|EXTI_Line14|EXTI_Line15;EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStruct);/中斷優(yōu)先級(jí)設(shè)置voidNVIC_Configuration(void)NVIC_InitTypeDefNVIC_InitStruct;/三個(gè)通道三次配置,否則會(huì)被覆蓋NVIC_InitStruct.NVIC_IRQChannelCmd

40、=ENABLE;/*指定中斷源*/NVIC_InitStruct.NVIC_IRQChannel=EXTI3_IRQn;/*搶占優(yōu)先級(jí)設(shè)定*/NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;/*副優(yōu)先級(jí)設(shè)定*/NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStruct);/下面還有EXTI15_10_IRQn及 EXTI9_5_IRQn的配置,為了簡(jiǎn)便此處就省略。在stm32f10x_it.c中加入按鍵觸發(fā)后LED燈的狀態(tài)。如:/*中斷服務(wù)程序*/Void

41、 EXTI9_5_IRQHandle(void)EXTI_ClearITPendingBit(EXTI_Line5);GPIO_SetBits(GPIOD,GPIO_Pin_3);4.2.3 LCD測(cè)試LCD的測(cè)試,就是簡(jiǎn)單的在LCD上畫一個(gè)圓,若能顯示出來(lái)則測(cè)試通過(guò)。下面就是部分代碼:voidLCD_configuration(void)LCD_BL_Pin_Config();Delay(20);LCD_BL_Cmd(ENABLE);STM3210E_LCD_Init();LCD_SetTextColor(Red);voidLCD_BL_Pin_Config(void)GPIO_InitTy

42、peDefGPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);voidLCD_BL_Cmd(FunctionalStateNewState)if(NewState!=DISABLE)GPIO_SetB

43、its(GPIOA,GPIO_Pin_8);elseGPIO_ResetBits(GPIOA,GPIO_Pin_8);4.3 軟件測(cè)試4.3.1 FATFS文件系統(tǒng)移植測(cè)試FATFS源代碼的獲取,可以到官網(wǎng)下載。1、解壓文件會(huì)得到兩個(gè)文件夾,一個(gè)是doc文件夾,這里是FATFS的一些使用文檔和說(shuō)明,以后在文件編程的時(shí)候可以查看該文檔。另一個(gè)是src文件夾,里面就是我們所要的源文件。2、建立一個(gè)STM32的工程,為方便調(diào)試,我們應(yīng)重載printf()底層函數(shù)實(shí)現(xiàn)串口打印輸出。可以參考已經(jīng)建立好的printf()打印輸出工程:3、在已經(jīng)建立好的工程目錄User文件夾下新建兩個(gè)文件夾,F(xiàn)ATFS和S

44、PI_SD_Card,F(xiàn)ATFS用于存放FATFS源文件,SPI_SD_Card用于存放SPI的驅(qū)動(dòng)文件。4、將ff.c添加到工程文件夾中,并新建diskio.c文件,在diskio.c文件中實(shí)現(xiàn)五個(gè)函數(shù):DSTATUS disk_initialize (BYTE);/SD卡的初始化DSTATUS disk_status (BYTE);/獲取SD卡的狀態(tài),這里可以不用管DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);/從SD卡讀取數(shù)據(jù)DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);/將數(shù)據(jù)寫入SD

45、卡,若該文件系統(tǒng)為只讀文件系統(tǒng)則不用實(shí)現(xiàn)該函數(shù)DRESULT disk_ioctl (BYTE, BYTE, void*);/獲取SD卡文件系統(tǒng)相關(guān)信息5、 diskio.c函數(shù)都實(shí)現(xiàn)后接著實(shí)現(xiàn)SPI_MSDO_Driver.c文件中的相關(guān)函數(shù),此文件可上網(wǎng)下載。6、 測(cè)試/寫文件測(cè)試printf(writefiletest.nr);res=f_open(&fdst,0:/test.txt,FA_CREATE_ALWAYS|FA_WRITE);if(res!=FR_OK)printf(openfileerror:%dnr,res);elseres=f_write(&fdst,textFileB

46、uffer,sizeof(textFileBuffer),&bw);if(res=FR_OK)printf(writedataok!%dnr,bw);elseprintf(writedataerror:%dnr,res);f_close(&fdst);/*關(guān)閉文件,必須執(zhí)行,否則數(shù)據(jù)無(wú)法寫入SD卡中*/還有讀文件測(cè)試,這里就不一一寫出來(lái)啦。4.3.2. UCOSII 操作系統(tǒng)移植1、從micrium官方下載移植版本:下載地址:解壓縮后得到如下:圖4-2 UCOSII 操作系統(tǒng)移植文件夾UC/OS-II是操作系統(tǒng)源碼,移植時(shí)基本不需要改動(dòng)。Arch :與體系架構(gòu)相關(guān)的,不能用C代碼實(shí)現(xiàn),必須用匯編實(shí)現(xiàn)的代碼,比如:任務(wù)切換時(shí)的寄存器切換。BSP:與單板配置相關(guān)的代碼,主要是單板工作頻率的配置和獲取。App:應(yīng)用程序代碼示例。 2、文件目錄 :Libraries、MDK-Proj不變;uCOS新增加uCOS源碼;App改為uCOS的App源碼。MicriumSoftwareuCOS-IIPortsARM-Cortex-M3GenericIAR圖4-3 工程文件展示圖3、工程目錄結(jié)構(gòu):StartUp、Core、StdPheriph不變;Bsp、Source、Arch新增加uCOS源碼;App改為uCOS的App文件。4、 mC/OS-異常服務(wù)例程uC/OS

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論