數(shù)字FM電臺設(shè)計開發(fā) 課程設(shè)計_第1頁
數(shù)字FM電臺設(shè)計開發(fā) 課程設(shè)計_第2頁
數(shù)字FM電臺設(shè)計開發(fā) 課程設(shè)計_第3頁
數(shù)字FM電臺設(shè)計開發(fā) 課程設(shè)計_第4頁
數(shù)字FM電臺設(shè)計開發(fā) 課程設(shè)計_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)字fm電臺設(shè)計開發(fā)昆明理工大學(xué)津橋?qū)W院arm實作課程報告實作設(shè)計題目: 數(shù)字fm電臺設(shè)計開發(fā) 專業(yè): 電子信息科學(xué)與技術(shù) 年級: 2011級 姓名: 學(xué)號: 指導(dǎo)教師: 王劍平 日期: 2013.11.20津橋?qū)W院arm實際應(yīng)用系統(tǒng)開發(fā)選題報告指導(dǎo)教師王劍平 職稱 副教授 學(xué)生年級11級學(xué)生專業(yè)電 信 開發(fā)題目數(shù)字fm電臺設(shè)計開發(fā)選題的依據(jù)、目的、要求、工作量大?。?數(shù)字fm電臺在日常生活中有廣泛應(yīng)用,本題目旨在幫助學(xué)生掌握數(shù)字電臺的開發(fā)和應(yīng)用。選題的主要內(nèi)容和意義: 設(shè)計數(shù)字fm電臺,任務(wù): (1)了解數(shù)字fm電臺的基本工作原理。進行芯片選型、電路設(shè)計。(2)實現(xiàn)電臺發(fā)射頻率可調(diào)。要求:

2、(1)實現(xiàn)68mhz107mhz范圍可調(diào)。 (2)實現(xiàn)音頻信號發(fā)射。 (3)實時顯示發(fā)射頻率。 課程所需材料清單及材料費預(yù)算: (1)stm32開發(fā)板700元(2)數(shù)字fm電臺模塊50元; (3)液晶顯示模塊100元(4)其它輔料200 元共計 1050元擬采用方法及預(yù)期成果: 采用stm32 主控芯片實現(xiàn)功能,液晶顯示結(jié)果。采用無線耳機接受fm信號并進行測試。教師意見: 同意選題摘 要 數(shù)字fm電臺在日常生活中有廣泛應(yīng)用,戰(zhàn)艦stm32開發(fā)板上載了一顆 fm 收發(fā)芯片: rda5820。該芯片不但可以用來做用來做 fm 接收,實現(xiàn)音機功能;還可以用來做 fm 發(fā)射,實現(xiàn)電臺的功能。在接下來的

3、實作中本文將就如何利用rda5820的發(fā)射功能在一定的頻率上實現(xiàn)發(fā)射sd卡中的音樂和通過麥克風(fēng)傳音作出詳細(xì)的闡述?!娟P(guān)鍵詞】: fm rda5820 發(fā)射電臺abstractdigital fm radio is widely applied in daily life, the battleship stm32 development board to upload a fm transceiver chip: rda5820 the chip not only can be used to do to do fm receiver, achieve sound machine functi

4、on; fm emission can also be used to do, to realize the function of the radio in the next implementation in this article will discuss how to use the launch rda5820 function implemented in certain frequency launch the music in sd card and pass through a microphone sound to make a detail 【keyword】: fm

5、rda5820 launch radio目 錄津橋?qū)W院arm實際應(yīng)用系統(tǒng)開發(fā)選題報告i摘 要iiabstractii第1章 緒論11.1 課題背景11.2 主要芯片介紹11.2.1 rda5820介紹11.2.2 vs1053簡介31.2.3 74hc4052 簡介51.2.4 sd卡簡介61.2.5 tftlcd簡介9第2章 硬件設(shè)計及模塊功能實現(xiàn)102.1 fm電臺設(shè)計框圖102.2硬件設(shè)計102.2.1 rda5820與stm32的連接電路102.2.2 vs1053解碼芯片電路原理112.2.3 sd卡接口和stm32的連接122.2.4 tftlcd顯示模塊142.3 模塊功能實現(xiàn)1

6、52.3.1 sd卡模塊指令152.3.2 tftlcd模塊控制162.3.3 vs1053的spi數(shù)據(jù)傳送和sci寄存器18第3章 軟件設(shè)計233.1 fm電臺軟件設(shè)計流程圖233.2 軟件設(shè)計結(jié)構(gòu)框圖243.3 主函數(shù)介紹243.3.1 系統(tǒng)初始化243.3.2 fm信號發(fā)射設(shè)置253.3.3 tftlcd顯示基本信息253.3.4 音頻源的選擇253.4 iic驅(qū)動rda5820 fm收發(fā)芯片253.5 spi驅(qū)動vs1053音頻解碼器273.6 sd卡讀寫驅(qū)動283.7 74hc4052音頻選擇283.8 tft-lcd顯示驅(qū)動29第4章 下載調(diào)試314.1 調(diào)試環(huán)境314.2下載驗證

7、31結(jié) 論34主要工作34心得體會34參考文獻35ii第1章 緒論1.1 課題背景自20世紀(jì)90年代以來,無線通信在全球范圍內(nèi)取得了突飛猛進的發(fā)展。無論是軍用或民用通信,在各種頻段上出現(xiàn)了許多新的系統(tǒng)和模式,滿足了社會上各種各樣的需求。發(fā)射機作為無線通信設(shè)備的重要組成部分,其發(fā)展極大的促進了無線通信技術(shù)的發(fā)展。無線電技術(shù)誕生以來,信息傳輸和信息處理始終是其主要任務(wù)。為了有效地進行傳輸,必須將攜帶信息的低頻電信號調(diào)制到幾十mhz幾百mhz以上的高頻振蕩信號上,再經(jīng)天線發(fā)送出去。為減小各種因素引起的系統(tǒng)不穩(wěn)定,增強系統(tǒng)的可靠性,系統(tǒng)必須包括自動增益控制、自動頻率控制和自動相位控制在內(nèi)的反饋控制電路

8、。本文所討論的就是一個利用鎖相環(huán)組成的直接調(diào)頻信號發(fā)射器。fm發(fā)射電臺具有使接收機接收靈敏度高,抗干擾力強、音質(zhì)清晰等特點,但往往在制作、調(diào)試過程中易出現(xiàn)電路易停振、抗干擾力差、失真等故障。該fm發(fā)射機電路工作頻率穩(wěn)定,抗干擾力強,制作調(diào)試簡單。本設(shè)計是一個調(diào)頻發(fā)射電臺,調(diào)頻就是頻率調(diào)制,所謂頻率調(diào)制就是原來等幅恒頻的高頻信號的頻率,隨著調(diào)制信號的幅度變化而變化,調(diào)頻發(fā)射電臺就是發(fā)送這些頻率調(diào)制的無線電信號,經(jīng)過解調(diào)變換成無限信號并發(fā)送信號的電子設(shè)備。本設(shè)計就是利用stm32開發(fā)板,設(shè)計一個數(shù)字fm發(fā)射電臺系統(tǒng)。通過教師的悉心指導(dǎo)和自己的不斷努力,最終完成了畢業(yè)設(shè)計的各項任務(wù),成功設(shè)計一小功率

9、調(diào)頻發(fā)射電臺,基本完成其各項功能。隨著消費類電子的興起和繁榮以及數(shù)字電子技術(shù)的發(fā)展,收音機逐漸數(shù)字化,集成化,而且成本越來越低,這使得在各種設(shè)備中嵌入收音機的現(xiàn)象更加普遍。廣大從事消費類電子設(shè)計的廠商都不忘在諸如mp3、智慧手機、便攜式video播放器等產(chǎn)品中嵌入fm接收部分。這樣電臺的建設(shè)就更加有意義了。高頻電子線路本是一門較為復(fù)雜的電路。其中更有精髓的知識值的我們?nèi)W(xué)習(xí)。同時隨著計算機技術(shù)與高頻電子技術(shù)的發(fā)展,模擬電子技術(shù),得到廣泛應(yīng)用,在模擬電子電路中尤其得到廣泛應(yīng)用,成為現(xiàn)代電子電器必不可少的電子技術(shù)。在高頻電子線路中,lc振蕩電路是無孔不入,無所不在。應(yīng)用于發(fā)射機中,加上簡單的電路及

10、連線,就可以組成各種形式的、任意信號,廣泛應(yīng)用。小功率調(diào)頻發(fā)射電臺在使用中,控制方法科學(xué)、簡單、明了,控制電路及連線簡單、易行,工作穩(wěn)定性好,從而得到廣泛應(yīng)用。在此,我們就調(diào)頻發(fā)射電臺的應(yīng)用作較完整和系統(tǒng)的研究,促進小功率調(diào)頻發(fā)射電臺的正確使用。1.2 主要芯片介紹1.2.1 rda5820介紹 rda5820是北京銳迪科推出的一款集成度非常高的立體聲fm收發(fā)芯片。該芯片具有以下特點:l fm發(fā)射和接收一體l 支持65mhz115mhz的全球fm接收頻段,收發(fā)天線共用l 支持iic/spi接口l 支持32.768k晶振l 數(shù)字音量及自動agc控制l 支持立體聲/單聲道切換,帶軟件靜音功能 支持

11、i2s接口(輸入/輸出) 內(nèi)置ldo,使用電壓范圍寬(2.75.5v) 高功率32歐負(fù)載音頻輸出、可以直接驅(qū)動耳機l 集成度高、功耗低、尺寸?。?mm*4mm qfn封裝)、應(yīng)用簡單rda5820應(yīng)用范圍很寬,在很多手機、mp3、mp4甚至平板電腦上都有應(yīng)用。rda5820的引腳圖如圖1.1所示:l rda5820支持2種通信模式,spi和iic,在戰(zhàn)艦stm32開發(fā)板上面,使用的是rda5820的iic模式。通過將圖1.1 的mode腳接gnd,rda5820即進入iic模式,此時sclk充當(dāng)iic的scl,sdio充當(dāng)iic的sda。rda5820的iic地址為0x11(不包含最低位),對

12、應(yīng)讀為0x23,寫為0x20。 模式設(shè)置rda5820的模式設(shè)置通過40h(寄存器地址0x40)寄存器的chip_func3:0位來設(shè)置,rda5820可以工作在rx模式、tx模式、pa模式和dac模式等,本章我們只介紹rx模式和tx模式。圖 1.1 rda5820引腳圖通過設(shè)置chip_func3:0=0即可定義當(dāng)前工作模式為fm接收模式。在該模式下,我們即可實現(xiàn)fm收音機功能。通過設(shè)置chip_func3:0=1即可定義當(dāng)前工作模式為fm發(fā)送模式。在該模式下,我們即可實現(xiàn)fm電臺的功能。頻點設(shè)置軟件可以通過配置03h(寄存器地址0x30)寄存器來選擇fm頻道。搜臺(seek)的步進長度(1

13、00khz、200khz或50khz)由space1:0 來選擇,頻道由chan9:0來選擇,頻率范圍(76mhz91mhz、87mhz108mhz或76mhz108mhz 或用戶自定義65mhz115mhz 范圍內(nèi)頻段)由band1:0來選擇。自定義的頻段由寄存器53h(chan_bottom)和54h(chan_top)來設(shè)置,單位為100khz,即定義65mhz76mhz,可設(shè)置band1:0=3(用戶自定義頻段),并且設(shè)置chan_bottom=0x028a,chan_top=0x02f8。頻點計算方法如下(該公式也適用于fm頻點的讀?。篺mfreq=space*chan+fmbtm

14、其中fmfreq即我們需要的fm頻率(mhz),space為我們設(shè)置的步進長度(khz),chan是我們設(shè)置的頻點值,fmbtm則是我們在band里面所選頻段的最低頻率,當(dāng)band=0的實惠,fmbtm=87mhz;band=1的時候,fmbtm=76mhz;band=2的時候,fmbtm=chan_bottom*0.1mhz。例如,我們要設(shè)置fm頻率為93.0mhz,假設(shè)band=0,space=100khz。那么我們只需要設(shè)置chan=60即可。頻點設(shè)置部分,fm接收和fm發(fā)送是共用的,對兩者都適用。1.2.2 vs1053簡介vs1053是繼vs1003后荷蘭vlsi公司出品的又一款高性

15、能解碼芯片。該芯片可以實現(xiàn)對mp3/ogg/wma/flac/wav/aac/midi等音頻格式的解碼,同時還可以支持adpcm/ogg等格式的編碼,性能相對以往的vs1003提升不少。vs1053擁有一個高性能的dsp處理器核vs_dsp,16k的指令ram,0.5k的數(shù)據(jù)ram,通過spi控制,具有8個可用的通用io口和一個串口,芯片內(nèi)部還帶了一個可變采樣率的立體聲adc(支持咪頭/咪頭+線路/2線路)、一個高性能立體聲dac及音頻耳機放大器。vs1053的特性如下: 支持眾多音頻格式解碼,包括ogg/mp3/wma/wav/flac(需要加載patch)/midi/aac等。 對話筒輸入

16、或線路輸入的音頻信號進行ogg(需要加載patch)/ima adpcm編碼 高低音控制 帶有earspeaker空間效果(用耳機虛擬現(xiàn)場空間效果) 單時鐘操作12.13mhz 內(nèi)部pll鎖相環(huán)時鐘倍頻器 低功耗 內(nèi)含高性能片上立體聲dac,兩聲道間無相位差 過零交差偵測和平滑的音量調(diào)整 內(nèi)含能驅(qū)動30 歐負(fù)載的耳機驅(qū)動器 模擬,數(shù)字,i/o 單獨供電 為用戶代碼和數(shù)據(jù)準(zhǔn)備的16kb片上ram 可擴展外部dac的i2s接口用于控制和數(shù)據(jù)的串行接口(spi) 可被用作微處理器的從機 特殊應(yīng)用的spi flash引導(dǎo) 供調(diào)試用途的uart接口 新功能可以通過軟件和8 gpio 添加vs1053相對

17、于它的前輩vs1003,增加了編解碼格式的支持(比如支持ogg/flac,還支持ogg編碼,vs1003不支持)、增加了gpio數(shù)量到8個(vs1003只有4個)、增加了內(nèi)部指令ram容量到16kib(vs1003只有5.5kib)、增加了i2s接口(vs1003沒有)、支持earspeaker空間效果(vs1003不支持)等。同時vs1053的dac相對于vs1003有不少提高,同樣的歌曲,用vs1053播放,聽起來比1003效果好很多。 vs1053的封裝引腳和vs1003完全兼容,所以如果你以前用的是vs1003,則只需要把vs1003換成vs1053,就可以實現(xiàn)硬件更新,電路板完全不用

18、修改。不過需要注意的是vs1003的cvdd是2.5v,而vs1053的cvdd是1.8v,所以你還需要把穩(wěn)壓芯片也變一下,其他都可以照舊了。vs1053通過spi接口來接受輸入的音頻數(shù)據(jù)流,它可以是一個系統(tǒng)的從機,也可以作為獨立的主機。這里我們只把它當(dāng)成從機使用。我們通過spi口向vs1053不停的輸入音頻數(shù)據(jù),它就會自動幫我們解碼了,然后從輸出通道輸出音樂,這時我們接上耳機就能聽到所播放的歌曲了。 圖 1.2 vs1053封裝圖 1.2.3 74hc4052 簡介74hc4052是一款高速cmos器件,74hc4052引腳兼容hef4052b。74hc4052遵循jedec標(biāo)準(zhǔn)no.7a。

19、74hc4052是雙路4通道模擬多路選擇器/多路分配器,帶有公共選擇邏輯。每個多路選擇器包含4個獨立輸入/輸出端(ny0至ny3)和1個公共輸入/輸出端(nz)。公用通道選擇邏輯包含2個數(shù)字選擇端(s0和s1)和1個低有效使能端(e)。e為低時,4個開關(guān)的其中之一將被s0和s1選中(低阻態(tài))。e為高時,所有開關(guān)都進入高阻態(tài),直接無視s0和s1。vcc和gnd是數(shù)字控制端(s0和s1,e)的供電引腳,74hc4052的vcc至gnd范圍為2.0 v10.0 v。74hc4052的模擬輸入/輸出端(ny0至ny3,nz)在上限vcc和下限vee之間擺動,vcc-vee應(yīng)當(dāng)不超過10.0 v。作為一

20、個數(shù)字多路選擇器/多路分配器,vee將被連接到gnd上(一般是接地)寬模擬輸入電壓范圍:-5 v+5 v低導(dǎo)通阻抗vcc - vee = 4.5 v時,80 歐姆(典型)vcc - vee = 6.0 v時,70 歐姆(典型)vcc - vee = 9.0 v時,60 歐姆(典型)邏輯電平轉(zhuǎn)換:溝通5 v邏輯和+- 5 v模擬信號典型的內(nèi)置“先斷后合”遵循jedec標(biāo)準(zhǔn)no.7aesd保護人體模式(hbm) eia/jesd22-a114e超過2000 v機械模式(mm) eia/jesd22-a115-a超過200 v溫度范圍:-40+85 和-40+125 74hc4052 基本參數(shù)電壓

21、2.010.0v傳輸延遲 4 ns5v74hc4052 其他特性導(dǎo)通阻抗 60 ohms邏輯電平 cmos功耗考量 低功耗或電池供電應(yīng)用74hc4052 封裝與引腳so16, ssop16, dip16, tssop16表1.1 74hc4052 基本參數(shù) 1.2.4 sd卡簡介sd卡(secure digital memory card)中文翻譯為安全數(shù)碼卡,它是在mmc的基礎(chǔ)上發(fā)展而來,是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機、個人數(shù)碼助理(pda)和多媒體播放器等。sd卡由日本松下、東芝及美國sandisk公司于1999年8月共同開發(fā)研制。大

22、小猶如一張郵票的sd記憶卡,重量只有2克,但卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以及很好的安全性。按容量分類,可以將sd卡分為3類:sd卡、sdhc卡、sdxc卡。如下表1.2所示:容量 命名 簡稱 02g standard capacity sd memory card sdsc或sd 2g32g high capacity sd memory card sdhc 32g2t extended capacity sd memory card sdxc 表1.2 sd卡按容量分類sd卡和sdhc卡協(xié)議基本兼容,但是sdxc卡,同這兩者區(qū)別就比較大了,本章我們討論的主要是sd/sd

23、hc卡(簡稱sd卡)。sd卡一般支持2種操作模式:1,sd卡模式(通過sdio通信);2,spi模式;主機可以選擇以上任意一種模式同sd卡通信,sd卡模式允許4線的高速數(shù)據(jù)傳輸。spi模式允許簡單的通過spi接口來和sd卡通信,這種模式同sd卡模式相比就是喪失了速度。sd卡的引腳排序如下圖1.4所示:圖1.4 sd卡引腳排序圖sd卡引腳功能描述如表1.3所示:表1.3sd卡引腳功能表sd卡只能使用3.3v的io電平,所以,mcu一定要能夠支持3.3v的io端口輸出。注意:在spi模式下,cs/mosi/miso/clk都需要加10100k左右的上拉電阻。sd卡有5個寄存器,如表1.4所示:名稱

24、寬度描述cid128卡標(biāo)識寄存器rca16相對卡地址(relative card address)寄存器:本地系統(tǒng)中卡的地址,動態(tài)變化,在主機初始化的時候確定*spi模式中沒有csd128卡描述數(shù)據(jù):卡操作條件相關(guān)的信息數(shù)據(jù)scr64sd配置寄存器:sd卡特定信息數(shù)據(jù)ocr32操作條件寄存器表1.4 sd卡相關(guān)寄存器sd卡初始化過程因為我們使用的是spi模式,所以先得讓sd卡進入spi模式。方法如下:在sd卡收到復(fù)位命令(cmd0)時,cs為有效電平(低電平)則spi模式被啟用。不過在發(fā)送cmd0之前,要發(fā)送74個時鐘,這是因為sd卡內(nèi)部有個供電電壓上升時間,大概為64個clk,剩下的10個c

25、lk用于sd卡同步,之后才能開始cmd0的操作,在卡初始化的時候,clk時鐘最大不能超過400khz!。接著我們看看sd卡的初始化,sd卡的典型初始化過程如下:1、初始化與sd卡連接的硬件條件(mcu的spi配置,io口配置);2、上電延時(74個clk);3、復(fù)位卡(cmd0),進入idle狀態(tài);4、發(fā)送cmd8,檢查是否支持2.0協(xié)議;5、根據(jù)不同協(xié)議檢查sd卡(命令包括:cmd55、cmd41、cmd58和cmd1等);6、取消片選,發(fā)多8個clk,結(jié)束初始化這樣我們就完成了對sd卡的初始化,注意末尾發(fā)送的8個clk是提供sd卡額外的時鐘,完成某些操作。通過sd卡初始化,我們可以知道sd

26、卡的類型(v1、v2、v2hc或者mmc),在完成了初始化之后,就可以開始讀寫數(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ù)過程,sd卡的寫于讀數(shù)據(jù)差不多,寫數(shù)據(jù)通過cmd24來實現(xiàn),具體過程如下:1、發(fā)送cmd24;2、接收卡響應(yīng)r1;3、發(fā)送寫數(shù)據(jù)起始令牌0xfe;4、發(fā)送數(shù)據(jù);5、發(fā)送2字節(jié)的偽crc;6、禁止片選之后,發(fā)多8個clk;以上就是一個典型的

27、寫sd卡過程。1.2.5 tftlcd簡介tft-lcd即薄膜晶體管液晶顯示器。其英文全稱為:thin film transistor-liquid crystal display。tft-lcd與無源tn-lcd、stn-lcd的簡單矩陣不同,它在液晶顯示屏的每一個象素上都設(shè)置有一個薄膜晶體管(tft),可有效地克服非選通時的串?dāng)_,使顯示液晶屏的靜態(tài)特性與掃描線數(shù)無關(guān),因此大大提高了圖像質(zhì)量。tft-lcd也被叫做真彩液晶顯示器。上一章介紹了oled模塊,本章,我們給大家介紹alientek tftlcd模塊,該模塊有如下特點:1,2.4/2.8/3.53種大小的屏幕可選。2,320240的

28、分辨率(3.5分辨率為:320*480)。3,16位真彩顯示。4,自帶觸摸屏,可以用來作為控制輸入。本章,我們以2.8寸的alientek tftlcd模塊為例介紹,該模塊支持65k色顯示,顯示分辨率為320240,接口為16位的80并口,自帶觸摸屏。圖1.5 alientek 2.8寸tftlcd外觀圖第2章 硬件設(shè)計及模塊功能實現(xiàn)2.1 fm電臺設(shè)計框圖 本文設(shè)計sd卡音源和mic音源兩種音源輸入,經(jīng)音頻選擇,cpu處理之后輸出2.2硬件設(shè)計實驗設(shè)計為fm發(fā)射模式,設(shè)計發(fā)射頻率為92.2mhz,開機顯示發(fā)射頻率,key_up鍵選擇音源輸入等信息。按一下key_up鍵即進入sd卡音源輸入模式

29、,這時key0:m+(下一曲) key2:m-(上一曲)起效,再按第二下進入mic音源模式,這時key_down鍵起效,可以用它來選擇直接播放或者錄音儲存后播放模式。同時用ds0提示程序正在運行。所要用到的部分硬件資源如下:1) 指示燈ds02) key0、key1、key2和wk_up等四個按鍵3) tftlcd模塊4) sd卡5) rda58206) 74hc40527) vs1053b 2.2.1 rda5820與stm32的連接電路這里rda5820用iic總線,接在stm32的pb10和pb11兩個腳上,下圖中outl和outr接在rda5820的lin和rin,outr和outl是

30、來自音頻選擇器(74hc4052)的輸出端,作為fm發(fā)送時的音源輸入。圖2.1 rda5820與stm32的連接圖2.2.2 vs1053解碼芯片電路原理vs1053通過7根線同stm32連接,他們是:vs_miso、vs_mosi、vs_sck、vs_xcs、vs_xdcs、vs_dreq和vs_rst。這7根線同stm32的連接關(guān)系如表2.1所示: 表2.1 vs1053各信號線與stm32連接關(guān)系其中vs_rst是vs1053的復(fù)位信號線,低電平有效。vs_dreq是一個數(shù)據(jù)請求信號,用來通知主機,vs1053可以接收數(shù)據(jù)與否。vs_miso、vs_mosi和vs_sck則是vs1053

31、的spi接口他們在vs_xcs和vs_xdcs下面來執(zhí)行不同的操作。從上表可以看出,vs1053的spi是接在stm32的spi1上面的。 1) 復(fù)位vs1053 這里包括了硬復(fù)位和軟復(fù)位,是為了讓vs1053的狀態(tài)回到原始狀態(tài),準(zhǔn)備解碼下一首歌曲。2) 配置vs1053的相關(guān)寄存器這里我們配置的寄存器包括vs1053的模式寄存器(mode)、時鐘寄存器(clockf)、音調(diào)寄存器(bass)、音量寄存器(vol)等。圖2.2 vs1053b音頻解碼模塊原理圖 3) 發(fā)送音頻數(shù)據(jù) 當(dāng)經(jīng)過以上兩步配置以后,我們剩下來要做的事情,就是往vs1053里面扔音頻數(shù)據(jù)了,只要是vs1053支持的音頻格式

32、,直接往里面丟就可以了,vs1053會自動識別,并進行播放。不過發(fā)送數(shù)據(jù)要在dreq信號的控制下有序的進行,不能亂發(fā)。這個規(guī)則很簡單:只要dreq變高,就向vs1053發(fā)送32個字節(jié)。然后繼續(xù)等待dreq變高,直到音頻數(shù)據(jù)發(fā)送完。經(jīng)過以上三步,我們就可以播放音樂了。2.2.3 sd卡接口和stm32的連接 我們用跳線帽將p10的sd_dt3、sd_cmd、sd_sck、sd_dt0分別同p12的sd_cs、spi2_mosi、spi2_sck、spi2_miso連接起來,即實現(xiàn)sd卡的spi模式連接。硬件連接示意圖如圖2.4所示: 圖2.3 sd卡接口與stm32連接原理圖 圖2.4 sd卡s

33、pi方式硬件連接示意圖 將圖中所示的4處,用跳線帽短接,接口實現(xiàn)sd卡與stm32的spi連接。最后,你還得自備一個sd卡,將其插入板子下面的sd卡接口。2.2.4 tftlcd顯示模塊 模塊原理圖如圖2.5所示:圖 2.5 alientek 2.8寸tftlcd模塊原理圖tftlcd模塊采用2*17的2.54公排針與外部連接,接口定義如圖2.6所示:圖2.6 alientek 2.8寸tftlcd模塊接口圖從圖2.6可以看出,alientek tftlcd模塊采用16位的并方式與外部連接,之所以不采用8位的方式,是因為彩屏的數(shù)據(jù)量比較大,尤其在顯示圖片的時候,如果用8位數(shù)據(jù)線,就會比16位方

34、式慢一倍以上,我們當(dāng)然希望速度越快越好,所以我們選擇16位的接口。圖18.1.3還列出了觸摸屏芯片的接口,關(guān)于觸摸屏本章我們不多介紹,后面的章節(jié)會有詳細(xì)的介紹。該模塊的80并口有如下一些信號線:cs:tftlcd片選信號。wr:向tftlcd寫入數(shù)據(jù)。rd:從tftlcd讀取數(shù)據(jù)。d15:0:16位雙向數(shù)據(jù)線。rst:硬復(fù)位tftlcd。rs:命令/數(shù)據(jù)標(biāo)志(0,讀寫命令;1,讀寫數(shù)據(jù))。80并口在上一節(jié)我們已經(jīng)有詳細(xì)的介紹了,這里我們就不再介紹,需要說明的是,tftlcd模塊的rst信號線是直接接到stm32的復(fù)位腳上,并不由軟件控制,這樣可以省下來一個io口。另外我們還需要一個背光控制線來

35、控制tftlcd的背光。所以,我們總共需要的io口數(shù)目為21個。這里還需要注意,我們標(biāo)注的db1db8,db10db17,是相對于lcd控制ic標(biāo)注的,實際上大家可以把他們就等同于d0d15,這樣理解起來就比較簡單一點。tftlcd顯示需要的相關(guān)設(shè)置步驟如下:1)設(shè)置stm32與tftlcd模塊相連接的io。這一步,先將我們與tftlcd模塊相連的io口進行初始化,以便驅(qū)動lcd。這里我們用到的是fsmc,fsmc將在18.1.2節(jié)向大家詳細(xì)介紹。2)初始化tftlcd模塊。其實這里就是上和上面oled模塊的初始化過程差不多。通過向tftlcd寫入一系列的設(shè)置,來啟動tftlcd的顯示。為后續(xù)

36、顯示字符和數(shù)字做準(zhǔn)備。3) 通過函數(shù)將字符和數(shù)字顯示到tftlcd模塊上。2.3 模塊功能實現(xiàn)2.3.1 sd卡模塊指令sd卡的命令格式,如表2.2所示:字節(jié)1 字節(jié)2-5 字節(jié)6 7 6 5 0 31 0 7 1 0 0 1 command 命令參數(shù) crc 1 表2.2 sd卡命令格式sd卡的指令由6個字節(jié)組成,字節(jié)1的最高2位固定為01,低6位為命令號(比如cmd16,為10000即16進制的0x10,完整的cmd16,第一個字節(jié)為01010000,即0x10+0x40)。字節(jié)25為命令參數(shù),有些命令是沒有參數(shù)的。字節(jié)6的高七位為crc值,最低位恒定為1。sd卡的命令總共有12類,分為c

37、lass0class11,下面幾個比較重要的命令,如表2.3所示:命令 參數(shù) 回應(yīng) 描述 cmd0(0x00) none r1 復(fù)位sd卡 cmd8(0x08) vhs+check pattern r7 發(fā)送接口狀態(tài)命令 cmd9(0x09) none r1 讀取卡特定數(shù)據(jù)寄存器 cmd10(0x0a) none r1 讀取卡標(biāo)志數(shù)據(jù)寄存器 cmd16(0x10) 塊大小 r1 設(shè)置塊大?。ㄗ止?jié)數(shù)) cmd17(0x11) 地址 r1 讀取一個塊的數(shù)據(jù) cmd24(0x18) 地址 r1 寫入一個塊的數(shù)據(jù) cmd41(0x29) none r3 發(fā)送給主機容量支持信息和激活 卡初始化過程 cm

38、d55(0x37) none r1 告訴sd卡,下一個是特定應(yīng)用命令 cmd58(0x3a) none r3 讀取ocr寄存器 表 2.3 sd卡部分命令上表中,大部分的命令是初始化的時候用的。表中的r1、r3和r7等是sd卡的回應(yīng),sd卡和單片機的通信采用發(fā)送應(yīng)答機制,如圖2.7所示:圖2.7 sd卡命令傳輸過程每發(fā)送一個命令,sd卡都會給出一個應(yīng)答,以告知主機該命令的執(zhí)行情況,或者返回主機需要獲取的數(shù)據(jù)。spi模式下,sd卡針對不同的命令,應(yīng)答可以使r1r7,r1的應(yīng)答,各位描述如表2.4所示:r1響應(yīng)格式 位 7 6 5 4 3 2 1 0 含義 開始位 始終為0 參數(shù) 錯誤 地址 錯誤

39、 擦除序列 錯誤 crc錯誤 非法 命令 擦除 復(fù)位 閑置 狀態(tài) 表2.4 r1響應(yīng)各位描述2.3.2 tftlcd模塊控制我們僅以ili9320控制器為例進行介紹,其他的控制基本都類似。ili9320液晶控制器自帶顯存,其顯存總大小為172820(240*320*18/8),即18位模式(26萬色)下的顯存量。模塊的16位數(shù)據(jù)線與顯寸的對應(yīng)關(guān)系為565方式,如圖2.8所示:圖2.8 16位數(shù)據(jù)與顯存對應(yīng)關(guān)系圖最低5位代表藍色,中間6位為綠色,最高5位為紅色。數(shù)值越大,表示該顏色越深。接下來,我們介紹一下ili9320的幾個重要命令,因為ili9320的命令很多,我們這里不可能一一介紹,有興趣

40、的大家可以找到ili9320的datasheet看看。里面對這些命令有詳細(xì)的介紹。這里我們要介紹的命令列表如表2.5所示:表2.5 ili9320常用命令表r0,這個命令,有兩個功能,如果對它寫,則最低位為osc,用于開啟或關(guān)閉振蕩器。而如果對它讀操作,則返回的是控制器的型號。這個命令最大的功能就是通過讀它可以得到控制器的型號,而我們代碼在知道了控制器的型號之后,可以針對不同型號的控制器,進行不同的初始化。因為93xx系列的初始化,其實都比較類似,我們完全可以用一個代碼兼容好幾個控制器。r3,入口模式命令。我們重點關(guān)注的是i/d0、i/d1、am這3個位,因為這3個位控制了屏幕的顯示方向。am

41、:控制gram更新方向。當(dāng)am=0的時候,地址以行方向更新。當(dāng)am=1的時候,地址以列方向更新。i/d1:0:當(dāng)更新了一個數(shù)據(jù)之后,根據(jù)這兩個位的設(shè)置來控制地址計數(shù)器自動增加/減少1,其關(guān)系如圖2.9所示:圖2.9 gram顯示方向設(shè)置圖通過這幾個位的設(shè)置,我們就可以控制屏幕的顯示方向了,這種方法雖然簡單,但是不是很通用,比如不同的液晶,可能這里差別就比較大,有的甚至無法通用!比如9341和9320就完全不通用。r7,顯示控制命令。該命令cl位用來控制是8位彩色,還是26萬色。為0時26萬色,為1時八位色。d1、d0、basee這三個位用來控制顯示開關(guān)與否的。當(dāng)全部設(shè)置為1的時候開啟顯示,全0

42、是關(guān)閉。我們一般通過該命令的設(shè)置來開啟或關(guān)閉顯示器,以降低功耗。r32,r33,設(shè)置gram的行地址和列地址。r32用于設(shè)置列地址(x坐標(biāo),0239),r33用于設(shè)置行地址(y坐標(biāo),0319)。當(dāng)我們要在某個指定點寫入一個顏色的時候,先通過這兩個命令設(shè)置到改點,然后寫入顏色值就可以了。r34,寫數(shù)據(jù)到gram命令,當(dāng)寫入了這個命令之后,地址計數(shù)器才會自動的增加和減少。該命令是我們要介紹的這一組命令里面唯一的單個操作的命令,只需要寫入該值就可以了,其他的都是要先寫入命令編號,然后寫入操作數(shù)。r80r83,行列g(shù)ram地址位置設(shè)置。這幾個命令用于設(shè)定你顯示區(qū)域的大小,我們整個屏的大小為240*32

43、0,但是有時候我們只需要在其中的一部分區(qū)域?qū)懭霐?shù)據(jù),如果用先寫坐標(biāo),后寫數(shù)據(jù)這樣的方式來實現(xiàn),則速度大打折扣。此時我們就可以通過這幾個命令,在其中開辟一個區(qū)域,然后不停的丟數(shù)據(jù),地址計數(shù)器就會根據(jù)r3的設(shè)置自動增加/減少,這樣就不需要頻繁的寫地址了,大大提高了刷新的速度。2.3.3 vs1053的spi數(shù)據(jù)傳送和sci寄存器vs1053的spi數(shù)據(jù)傳送vs1053的spi支持兩種模式:1,vs1002有效模式(即新模式)。2,vs1001兼容模式。這里我們僅介紹vs1002有效模式(此模式也是vs1053的默認(rèn)模式)。表2.6是在新模式下vs1053的spi信號線功能描述: 表2.6 vs10

44、53新模式下spi口信號線功能 vs1053的spi數(shù)據(jù)傳送,分為sdi和sci,分別用來傳輸數(shù)據(jù)/命令。sdi和前面介紹的spi協(xié)議一樣的,不過vs1053的數(shù)據(jù)傳輸是通過dreq控制的,主機在判斷dreq有效(高電平)之后,直接發(fā)送即可(一次可以發(fā)送32個字節(jié))。這里我們重點介紹一下sci。sci串行總線命令接口包含了一個指令字節(jié)、一個地址字節(jié)和一個16位的數(shù)據(jù)字。讀寫操作可以讀寫單個寄存器,在sck的上升沿讀出數(shù)據(jù)位,所以主機必須在下降沿刷新數(shù)據(jù)。sci的字節(jié)數(shù)據(jù)總是高位在前低位在后的。第一個字節(jié)指令字節(jié),只有2個指令,也就是讀和寫,讀為0x03,寫為0x02。一個典型的sci讀時序如圖

45、2.10所示: 圖2.10 sci讀時序從圖2.10可以看出,向vs1053讀取數(shù)據(jù),通過先拉低xcs(vs_xcs),然后發(fā)送讀指令(0x03),再發(fā)送一個地址,最后,我們在so線(vs_miso)上就可以讀到輸出的數(shù)據(jù)了。而同時si(vs_mosi)上的數(shù)據(jù)將被忽略。看完了sci的讀,我們再來看看sci的寫時序,如圖2.11 所示: 圖2.11 sci寫時序圖2.11中,其時序和圖2.10基本類似,都是先發(fā)指令,再發(fā)地址。不過寫時序中,我們的指令是寫指令(0x02),并且數(shù)據(jù)是通過si寫入vs1053的, so則一直維持低電平。細(xì)心的讀者可能發(fā)現(xiàn)了,在這兩個圖中,dreq信號上都產(chǎn)生了一個

46、短暫的低脈沖,也就是執(zhí)行時間。這個不難理解,我們在寫入和讀出vs1053的數(shù)據(jù)之后,它需要一些時間來處理內(nèi)部的事情,這段時間,是不允許外部打斷的,所以,我們在sci操作之前,最好判斷一下dreq是否為高電平,如果不是,則等待dreq變?yōu)楦?。vs1053的sci寄存器vs1053的所有sci寄存器如表2.7所示: sci寄存器 寄存器 類型 復(fù)位值 縮寫 描述 0x00 rw 0x0800 mode 模式控制 0x01 rw 0x000c status vs0153狀態(tài) 0x02 rw 0x0000 bass 內(nèi)置低音/高音控制 0x03 rw 0x0000 clockf 時鐘頻率+倍頻數(shù) 0x

47、04 rw 0x0000 decode_time 解碼時間長度(秒) 0x05 rw 0x0000 audata 各種音頻數(shù)據(jù) 0x06 rw 0x0000 wram ram 寫/讀 0x07 rw 0x0000 wramaddr ram 寫/讀的基址 0x08 r 0x0000 hdat0 流的數(shù)據(jù)標(biāo)頭0 0x09 r 0x0000 hdat1 流的數(shù)據(jù)標(biāo)頭1 0x0a rw 0x0000 aiaddr 應(yīng)用程序起始地址 0x0b rw 0x0000 vol 音量控制 0x0c rw 0x0000 aictrl0 應(yīng)用控制寄存器0 0x0d rw 0x0000 aictrl1 應(yīng)用控制寄存器

48、1 0x0e rw 0x0000 aictrl2 應(yīng)用控制寄存器2 0x0f rw 0x0000 aictrl3 應(yīng)用控制寄存器3 表2.7 sci寄存器 首先,我們介紹一下clockf寄存器,這個寄存器用來設(shè)置時鐘頻率、倍頻等相關(guān)信息,該寄存器的各位描述如表2.8所示: 表2.8 clockf寄存器各位描述此寄存器,重點說明sc_freq,sc_freq是以4khz為步進的一個時鐘寄存器,當(dāng)外部時鐘不是12.288m的時候,其計算公式為: sc_freq=(xtali-8000000)/4000式中為xtali的單位為hz。表2.8中clki是內(nèi)部時鐘頻率,xtali是外部晶振的時鐘頻率。由

49、于我們使用的是12.288m的晶振,在這里設(shè)置此寄存器的值為0x9800,也就是設(shè)置內(nèi)部時鐘頻率為輸入時鐘頻率的3倍,倍頻增量為1.0倍。接下來是mode寄存器,該寄存器用于控制vs1053的操作,是最關(guān)鍵的寄存器之一,該寄存器的復(fù)位值為0x0800,其實就是默認(rèn)設(shè)置為新模式。表2.9是mode寄存器的各位描述: 表2.9 mode寄存器各位描述這個寄存器,我們這里只介紹一下第2和第11位,也就是sm_reset和sm_sdinew。其他位,我們用默認(rèn)的即可。這里sm_reset,可以提供一次軟復(fù)位,建議在每播放一首歌曲之后,軟復(fù)位一次。sm_sdinew為模式設(shè)置位,這里我們選擇的是vs10

50、02新模式(本地模式), 所以設(shè)置該位為1(默認(rèn)的設(shè)置)。接著我們看看bass寄存器,該寄存器可以用于設(shè)置vs1053的高低音效。該寄存器的各位描述如表2.10所示: 表2.10 bass寄存器各位描述通過這個寄存器以上位的一些設(shè)置,我們可以隨意配置自己喜歡的音效(其實就是高低音的調(diào)節(jié))。vs1053的earspeaker效果則由mode寄存器控制,請參考表2.9。接下來,我們看看decode_time這個寄存器。該寄存器是一個存放解碼時間的寄存器,以秒鐘為單位,我們通過讀取該寄存器的值,就可以得到解碼時間了。不過它是一個累計時間,所以我們需要在每首歌播放之前把它清空一下,以得到這首歌的準(zhǔn)確解

51、碼時間。 hdat0和hdta1是兩個數(shù)據(jù)流頭寄存器,不同的音頻文件,讀出來的值意義不一樣,我們可以通過這兩個寄存器來獲取音頻文件的碼率,從而可以計算音頻文件的總長度。最后我們介紹一下vol這個寄存器,該寄存器用于控制vs1053的輸出音量,該寄存器可以分別控制左右聲道的音量,每個聲道的控制范圍為0254,每個增量代表0.5db的衰減,所以該值越小,代表音量越大。比如設(shè)置為0x0000則音量最大,而設(shè)置為0xfefe則音量最小。注意:如果設(shè)置vol的值為0xffff,將使芯片進入掉電模式!第3章 軟件設(shè)計3.1 fm電臺軟件設(shè)計流程圖3.2 軟件設(shè)計結(jié)構(gòu)框圖3.3 主函數(shù)介紹3.3.1 系統(tǒng)初

52、始化該模塊實現(xiàn)對系統(tǒng)各模塊的初始化工作,以便后面程序使用這些模塊時正常工作。以下是所有初始化函數(shù):delay_init(); /延時函數(shù)初始化 nvic_configuration(); /設(shè)置nvic中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級uart_init(9600); /串口初始化為9600lcd_init(); /顯示屏初始化key_init(); /按鍵初始化font_init(); /初始化字庫audiosel_init(); /初始化音源選擇usmart_dev.init(72); /usmart初始化mem_init(sramin); /初始化內(nèi)部內(nèi)存池vs_init(); /初始化vs1053 exfuns_init();/為fatfs相關(guān)變量申請內(nèi)存 f_mount(0,fs0); /掛載sd卡 f_mount(1,fs1); /掛載flash.usmart_dev.init(72); /初始化usmartrda5820_init(); /初始化fm收發(fā)3.3.2 fm信號發(fā)射設(shè)置該模塊實現(xiàn)對rda5820配置,根據(jù)需要這里將模式設(shè)置為發(fā)射,頻率配置為93.6,發(fā)射功率設(shè)置為最大。以下是所有相關(guān)配置函數(shù)的調(diào)用:rda5820_band_set(0); /設(shè)置頻段為87108

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論