基于STM32的FM收發(fā)器的設計_第1頁
基于STM32的FM收發(fā)器的設計_第2頁
基于STM32的FM收發(fā)器的設計_第3頁
基于STM32的FM收發(fā)器的設計_第4頁
基于STM32的FM收發(fā)器的設計_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設計說明書2023屆基于STM32的FM收發(fā)器的設計學生姓名xxxxxx學號xxxxxx院系數(shù)理信息學院專業(yè)電子信息工程指導教師xxxxxx完成日期201基于STM32的FM收發(fā)器的設計摘要現(xiàn)今多媒體技術和通信技術高速開展,無線收發(fā)技術在現(xiàn)代的通信技術占據(jù)了越來越重要的位置,而無線通信技術依賴的是有效可靠的調(diào)制解調(diào)方式和穩(wěn)定的收發(fā)系統(tǒng)。FM調(diào)制方式本錢不高,技術成熟,可靠性強,因此FM收發(fā)器在通訊技術中得到了廣泛的使用。本文提出了一種基于STM32微控制器的FM收發(fā)系統(tǒng),其中包括STM32F103C8T6單片機控制、NOKIA5110液晶顯示、4*4矩陣鍵盤、FM收發(fā)模塊、音頻輸入模塊、音頻濾波器、音頻功率放大器。本文對設計開發(fā)全數(shù)字式控制的FM收發(fā)器的各個模塊作了詳細的硬件原理分析,軟件控制以及調(diào)試分析,實現(xiàn)了全數(shù)字式控制FM接收和發(fā)射的頻道選擇、音量控制、信號強度檢測的功能。本文實現(xiàn)的基于STM32的FM收發(fā)器為簡易的音頻收發(fā)器,可實現(xiàn)收音機、小功率電臺以及半雙工對講機的功能。本系統(tǒng)實現(xiàn)的硬件功耗小,體積小,攜帶方便,穩(wěn)定性強,操作方便,是一個實用的多功能FM收發(fā)器。關鍵詞通信技術;FM收發(fā)器;STM32微控制器;音頻THEDESIGNOFFMTRANSCEIVERBASEDONSTM32ABSTRACTWiththerapidgrowthofmodernmultimediaandcommunicationtechnology,wirelesstransceivertechnologyplaysarisingsignificantroleinthemoderncommunicationtechnology,wirelesscommunicationstransceiversystemisdependentonamodulation,demodulationmeasureefficacious,credibleandstable.FMmodulationtechnologyismature,withlowcostandstrongreliability,thustheFMtransceiverhasbeenproverbiallyappliedinradiocommunicationtechnology.ThispaperpresentsaFMtransceiversystembasedonSTM32MCU,includingSTM32F103C8T6MCUcontrolmodule,NOKIA5110LCD,4*4matrixkeyboard,FMtransceivermodule,audioinputmodule,audiofilterandpoweramplifier.Inthispaper,designanddevelopmentofeachmoduleofthedigitalcontrolFMtransceiverisanalyzedwiththeprincipleofhardware,programdominationanddebug,actualizesthechannelselection,volumecontrolandsignalstrengthdetectionfunctionofdigitalcontrolFMreceivingandtransmitting.TheimplementationofFMtransceiverbasedonSTM32isasimpleaudiotransceiver,whichcanrealizeradiogram,smallpowerradiosetandhalfduplexintercomfunction.Thehardwareimplementationofthesystemisoflowpowerconsumption,tinybulk,handy,highsteadinessandeasymanipulation,whichKEYWORDSCommunicationTechnology;FMTransceiver;STM32MCU;Audio目錄TOC\t"摘要,1,一級標題,1,二級標題,2,三級標題,3,參考文獻,1,ABSTRACT,1,目錄,1,引言,1,結論,1,附錄,1,致謝,1"摘要IABSTRACT II目錄III引言11.基于STM32的FM收發(fā)器系統(tǒng)總體設計方案及論證21.1FM收發(fā)器的工作原理21.2基于STM32的FM收發(fā)器的總體結構圖21.2.1基于STM32的FM收發(fā)器硬件模塊劃分22.基于STM32的FM收發(fā)器硬件電路設計22.1電源模塊42.2STM32F103C8T6單片機控制模塊42.3液晶顯示模塊52.4矩陣鍵盤模塊62.5音頻輸入模塊72.6音頻功放、輸出模塊72.7FM收發(fā)模塊82.8音頻濾波模塊93.基于STM32的FM收發(fā)器軟件設計113.1LCD液晶顯示屏的軟件開發(fā)113.1.1FM接收模式下LCD的顯示模式113.1.2FM發(fā)射模式下LCD的顯示模式113.2矩陣薄膜鍵盤的軟件開發(fā)113.3FM收發(fā)模塊的軟件開發(fā)133.3.1I2C總線控制133.3.2RDA5820收發(fā)芯片的驅動143.4信號指示燈的軟件開發(fā)154.基于STM32的FM收發(fā)器系統(tǒng)調(diào)試及結果分析164.1FM收發(fā)器的接收模式調(diào)試及結果分析164.2FM收發(fā)器的發(fā)射模式調(diào)試及結果分析16結論17參考文獻18附錄1實物圖19附錄2系統(tǒng)原理圖20附錄3各模塊程序21致謝31引言隨著電子技術和通信技術的高速開展,無線電技術在如今的社會和工作中處于不可或缺的地位。FM調(diào)頻技術具有其他調(diào)幅播送所不能及的優(yōu)點:調(diào)頻播送方式的頻帶較寬,可做高保真播送,且抗干擾能力較強,系統(tǒng)的信噪比擬高[1]。調(diào)頻技術的投資和運行維護的本錢較低且容易實現(xiàn)立體聲的調(diào)頻播送,因此很多興旺國家很早就開始了調(diào)頻播送的效勞。目前調(diào)頻播送技術已開展到調(diào)頻多工播送,即除了傳輸立體聲節(jié)目外,還傳輸?shù)缆方煌ㄐ畔?、氣象信息、新聞等。FM播送技術為生活信息的傳輸和交換提供了極大便利。FM收發(fā)一體機縮小了FM系統(tǒng)的體積,提高了FM系統(tǒng)的便攜性,降低了FM系統(tǒng)的維護本錢,故需要利用電子技術設計一套功耗較低、穩(wěn)定性較強、功能較為完善的FM收發(fā)器系統(tǒng)。我國的FM播送起步于五十年代,當時調(diào)頻播送只作為節(jié)目傳輸手段使用。八十年代中期,播送電影電視部根據(jù)我國四化建設的需要,確定將調(diào)頻播送作為播送高質量節(jié)目的主要方式。這一決定立即有力推動了我國調(diào)頻技術的飛速進展。到1985年底許多廠家從國外引進了高端調(diào)頻技術和高效率生產(chǎn)線。這些發(fā)射機采用直接調(diào)頻數(shù)字頻率合成調(diào)制、動態(tài)瞬時響應濾波、自動導頻相位控制技術和頻率合成技術等。除了引進技術和生產(chǎn)線進行調(diào)頻播送發(fā)射機的研制生產(chǎn)外,國內(nèi)還有些廠家采用大量國產(chǎn)化元器件,生產(chǎn)出具有國際水平的立體聲調(diào)頻技術產(chǎn)品?,F(xiàn)今國內(nèi)外FM調(diào)頻技術已經(jīng)非常成熟穩(wěn)定[2]。本系統(tǒng)就是圍繞穩(wěn)定可靠的FM收發(fā)系統(tǒng)進行研究的,通過將音頻處理技術和FM收發(fā)技術結合,開發(fā)出一套低功耗、穩(wěn)定性強、人機接口友好的FM收發(fā)器系統(tǒng)。該FM收發(fā)器通過人機接口控制FM收發(fā)功能,完成對FM收發(fā)頻道、音量等的控制以及信號強度的檢測。FM音頻信號的發(fā)射通過麥克風輸入語音信號或通過3.5mm耳機接口輸入音頻信號,然后由帶通濾波器濾去多余頻段的信號,最后經(jīng)FM調(diào)制芯片調(diào)制,由天線將調(diào)制完成的信號發(fā)射。由天線接收到的FM音頻信號同樣通過帶通濾波器濾去雜波,由音頻功率放大器放大音頻信號的功率,通過喇叭播放音頻信號。本設計最終實現(xiàn)了FM信號的接收,即收音機和FM信號的發(fā)射功能,假設利用未被占用的頻道那么可實現(xiàn)半雙工對講機的功能。本系統(tǒng)功耗低、實時性強,對于FM收發(fā)系統(tǒng)設計的多樣化和數(shù)字化具有重要意義。1.基于STM32的FM收發(fā)器系統(tǒng)總體設計方案及論證1.1FM收發(fā)器的工作原理FM收發(fā)器完成對輸入信號的發(fā)射和對接收到的FM信號的輸出功能。通過音頻輸入引腳輸入立體聲,通過帶通濾波器濾去多余頻帶的干擾,經(jīng)過可調(diào)增益放大器放大,由AD轉換器將音頻模擬量轉換成數(shù)字量,F(xiàn)M合成器將AD轉換器輸出的數(shù)字量加到壓控振蕩器產(chǎn)生的載波上,完成對音頻信號的數(shù)字調(diào)制,最后經(jīng)過可編程音頻功放放大功率,經(jīng)由天線發(fā)射,完成對FM音頻信號的發(fā)射功能。從天線接收的FM信號,經(jīng)LNA將其線性放大,正交混頻器將不同頻率下的高頻FM信號下變頻到固定頻率的低中頻FM信號,AD轉換器將可調(diào)增益放大器放大的信號轉換為數(shù)字量,然后DSP處理器將得到的數(shù)字量解調(diào),最后經(jīng)過DA轉換器將其轉換為可用的音頻模擬信號,完成了FM音頻信號的接收并輸出的功能。STM32單片機通過I2C總線讀寫FM收發(fā)芯片的存放器,可修改音頻輸出的音量大小、FM收發(fā)的頻道,讀取信號接收的信號1.2基于STM32的FM收發(fā)器的總體結構圖基于STM32的FM收發(fā)器硬件模塊劃分FM收發(fā)器的硬件局部分為假設干個模塊,主要包括電源模塊、LCD顯示模塊、矩陣鍵盤模塊、單片機控制模塊、音頻輸入模塊、音頻輸出模塊、音頻濾波模塊、FM收發(fā)模塊、音頻功放模塊。圖1-1是FM收發(fā)器的硬件系統(tǒng)總體框圖。圖1-1FM收發(fā)器的硬件總體框圖2.基于STM32的FM收發(fā)器硬件電路設計FM收發(fā)器的總原理圖如圖2-1所示。FM收發(fā)器的硬件電路主要包括:LCD顯示模塊、矩陣鍵盤模塊、STM32主控模塊、音頻輸入輸出模塊、音頻濾波模塊、FM收發(fā)模塊等。圖2-1FM收發(fā)器的總電路原理圖2.1電源模塊電源模塊原理圖如圖2-2所示。電源模塊可以以220V市電作為輸入,經(jīng)過220V-9V/50Hz變壓器、全波整流橋、濾波電容、7805穩(wěn)壓片、LM1117穩(wěn)壓片得到+5V、+3.3V供電電源。+5V電源也可以通過USB接口輸入或者3節(jié)干電池得到+4.5V,然后經(jīng)過LM1117穩(wěn)壓芯片得到+3.3V。圖2-2電源模塊原理圖其中+5V作為LCD液晶顯示屏、麥克風、FM收發(fā)芯片、運算放大器、音頻功率放大器的供電電源,+3.3V作為主控芯片STM32的供電電源。7805是一種三端穩(wěn)壓集成電路,78/79系列的三端穩(wěn)壓IC所需的外圍元件極少,使用方便可靠,本錢較低,電子制作中經(jīng)常采用。其電路內(nèi)部具有過流、過熱的保護電路,可以輸出1.5A的電流,驅動能力較強。LM1117是一種低壓差電壓調(diào)節(jié)器,可以輸出800mA的負載電流,且有不同可調(diào)電壓的版本。LM1117內(nèi)置過流和過熱限制功能,芯片內(nèi)置由齊納二極管穩(wěn)定的基準源使得輸出電壓誤差在±1%以內(nèi)。STM32為低功耗單片機,800mA的輸出電流足以驅動多片STM32。2.2STM32F103C8T6單片機控制模塊STM32F103C8T6微控制器及其所需的外圍元件如圖2-3所示。STM32F103C8T6是一款性價比擬高的ARM系列低功耗單片機,內(nèi)含F(xiàn)LASH、USB接口、定時器、ADC等外設。STM32F103C圖2-3STM32主控模塊原理圖單片機控制模塊的功能是驅動各局部硬件能夠穩(wěn)定運行。STM32F103C8T6單片機需要驅動液晶顯示屏顯示FM收發(fā)模塊的收發(fā)狀態(tài)、所在的工作頻道、音量大小、檢測到的信號強度等信息,同時對4*4矩陣鍵盤模塊進行掃描,檢測用戶的按鍵鍵入,完成人機接口的驅動。其核心工作為通過I2C總線驅動FM收發(fā)模塊RDA5820,完成FM音頻信號的接收功能和發(fā)射功能。對于FM收發(fā)芯片的工作頻道,STM32F103C8T6利用FLASH外設將頻道數(shù)值保存,使本系統(tǒng)再次2.3液晶顯示模塊液晶顯示模塊原理圖如圖2-4所示。本系統(tǒng)采用NOKIA5110作為液晶顯示模塊。NOKIA5110液晶顯示模塊的主要功能是為STM32F103C8T6的GPIO口所驅動并作為人機接口顯示FM收發(fā)器的相關信息:FM收發(fā)器所在的工作頻道、音量大小、信號強度和圖2-4液晶顯示模塊原理圖NOKIA5110液晶顯示模塊使用了串行方式與MCU通信,因此所需的信號線較少,且支持多種串行方式通信協(xié)議〔例如SPI總線〕,數(shù)據(jù)傳送速度到達了4Mb/s,微控制器可無需等待時間寫入數(shù)據(jù)。其驅動芯片已與LCD晶片綁定,具有體積小的特點。NOKIA5110供電電壓較低,一般工作電流小于200uA,且分辨率較高,顯示清晰,驅動簡單。這些優(yōu)點使其適合于小型、功耗較低的便攜式測試設備和通信設備中[4]。2.4矩陣鍵盤模塊矩陣鍵盤模塊原理圖如圖2-5所示。矩陣鍵盤模塊使用4*4薄膜矩陣鍵盤,主要作為人機接口供用戶鍵入相關控制信息,例如調(diào)整音量大小、設置FM收發(fā)器工作頻道、設置接收或發(fā)射模式等。4*4薄膜矩陣鍵盤集成度高、重量輕,其上清晰標注“0~9〞數(shù)字鍵以及“A~D〞字母鍵,界面美觀清晰,使用方便,其接口為8引腳驅動模式,利用單片機GPIO口驅動方便。圖2-5矩陣鍵盤模塊原理圖矩陣鍵盤的驅動方式比獨立按鍵的驅動方式稍為復雜。矩陣鍵盤的驅動方式:首先將四根行線全部置低,此時假設有按鍵鍵入,那么四根列線其中一根會出現(xiàn)低電平,根據(jù)低電平出現(xiàn)的列數(shù)可確定鍵入按鍵的列數(shù)。同理,在按鍵鍵入的時間段內(nèi)再將四根列線全部置低,此時假設有按鍵鍵入,那么四根行線的其中一根會出現(xiàn)低電平,然后根據(jù)低電平出現(xiàn)時的行數(shù)可以確定鍵入按鍵的行數(shù)。做一定軟件去抖工作之后,根據(jù)掃描程序得到的行數(shù)和列數(shù)即可完全確定被按下的按鍵。STM32時鐘頻率較高,因此做矩陣鍵盤掃描不會占用過多資源。2.5音頻輸入模塊音頻輸入模塊原理圖如圖2-6所示。音頻信號由兩個通道輸入:通過麥克風輸入語音或3.5mm耳機接口輸入立體聲。當由麥克風輸入語音信號時,麥克風通過一個上拉電阻產(chǎn)生波形,波形同時輸入左聲道和右聲道。當由3.5mm耳機接口輸入立體聲信號時,左聲道波形和右聲道波形分別輸入。其中麥克風使用的是結構簡單、電聲性能好的9*7mm電容式駐極體式麥克風,靈敏度高達52dB。圖2-6音頻輸入模塊原理圖2.6音頻功放、輸出模塊音頻功放、輸出模塊如圖2-7所示。FM收發(fā)模塊將接收到的FM信號解調(diào)后輸出,但其輸出功率無法驅動一個25W/8Ω的喇叭,因此使用該專用音頻功放對音頻信號進行一定放大使其能夠驅動喇叭播放聲音。圖2-7音頻功率放大器原理圖LM386是一款音頻專用功放,具有功率消耗較低、供電電壓范圍較寬、可調(diào)內(nèi)鏈增益、諧波失真小、本錢較低和所需外圍器件較少等諸多優(yōu)點,較多使用于例如MP3、收音機等播放設備之中[5]。如圖2-7為LM386芯片的典型驅動電路之一,其預設內(nèi)置功放增益為20??紤]到系統(tǒng)的功耗問題和噪音問題,此處增益選擇為20即可。喇叭選擇25W/8Ω擴音器。同時功率放大器的輸入端將音頻信號通過一個可調(diào)電阻器接入,可通過調(diào)節(jié)電位器改變音量大小,增加音量的可控性。2.7FM收發(fā)模塊FM收發(fā)模塊原理圖如圖2-8所示。STM32單片機使用I2C總線串行方式寫入并修改RDA5820內(nèi)部存放器值,從而修改FM收發(fā)器所在的工作頻道、播放音量大小圖2-8FM收發(fā)模塊原理圖FM收發(fā)系統(tǒng)的核心電路為RDA5820調(diào)頻收發(fā)集成電路。RDA5820收發(fā)芯片是一款所需外接器件少、信噪比極小的FM收發(fā)芯片。該集成電路具有體積小、低功耗、低本錢、應用簡單、使用范圍廣的優(yōu)點,是一款使用簡單且具有較高性價比的單片音頻收發(fā)集成電路。其應用范圍主要有:便攜式MP4、MP3等無線調(diào)頻接收器,校園、企業(yè)等公共場所立體聲調(diào)頻播送系統(tǒng),高檔游戲機及無線音頻電子玩具等[6]。FM收發(fā)集成電路RDA5820的電路模塊劃分如圖2-9。其中主要包括低噪聲放大器、正交混頻器、可編程增益放大器、AD轉換器、DSP內(nèi)核、DA轉換器、壓控振蕩器、功率放大器等模塊。圖2-9RDA5820內(nèi)部結構圖FM音頻信號的發(fā)射過程如下:語音信號或立體聲信號從LIN、RIN引腳輸入,經(jīng)過可編程增益放大器放大〔通過寫入相關存放器控制增益值〕,AD轉換器將音頻信號數(shù)字化,然后合成器將音頻數(shù)字信號加載到壓控振蕩器產(chǎn)生的高頻載波上〔通過寫入相關存放器控制高頻載波的頻率〕,完成了音頻信號的FM調(diào)制,最后經(jīng)過功率放大器將信號功率放大〔通過寫入相關存放器控制功率放大倍數(shù)〕,由天線發(fā)射出去,在一定距離范圍內(nèi)的收音機便可以接收到該FM信號并播放。FM音頻的發(fā)送功能分為以下幾個步驟,其過程劃分如圖2-10所示。圖2-10FM音頻信號的發(fā)射過程示意圖FM信號的接收過程如下所述:通過天線接收FM信號,經(jīng)過低噪聲放大器放大,正交混頻器將多種頻率的高頻FM信號變頻到一定頻率的低中頻,降低了對ADC的信號帶寬的要求。然后經(jīng)可編程增益放大器放大,AD模數(shù)轉換器將該信號數(shù)字化,DSP核心將該數(shù)字量解調(diào),然后經(jīng)過DA數(shù)模轉換器將其轉換為可用的立體聲信號,最后功率放大器將信號放大并輸出。FM音頻信號的接收過程如圖2-11所示。圖2-11FM信號的接收過程示意圖2.8音頻濾波模塊音頻濾波模塊原理圖如圖2-12所示。音頻信號的頻帶一般為50Hz~10kHz,本設計根據(jù)此原那么設計帶通濾波器。由于本系統(tǒng)無負電源供電,音頻信號中的負值信號無法通過運放,因此先利用一個同相加法器將音頻信號和+2.5V的基準源信號相加,由此得到含有+2.5V直流分量的音頻信號,可通過由正電源供電的濾波器。低通濾波器和高通濾波器以+2.5V基準源作為“虛地〞,以通過以+2.5V基準源作為直流分量的音頻信號。經(jīng)過帶通濾波器濾除多余頻帶的信號之后,經(jīng)過一個RC高通濾波網(wǎng)絡濾除直流分量,得到音頻信號的交流分量。圖2-12音頻濾波模塊原理圖本設計的帶通濾波電路使用MCP6002型號作為運放。MCP6002是一種低功耗、高帶寬、穩(wěn)定性高、本錢較低的通用運放,它的供電電壓范圍是1.8V~5.5V,對電源的要求比擬低。MCP6002的低功耗、高帶寬等優(yōu)點使其非常適合于FM收發(fā)器系統(tǒng)的設計。如圖2-13所示為典型的二階有源低通濾波電路[7]。圖2-13二階有源低通濾波電路考慮到集成運放的同相端輸入電壓為(2-1)而與的關系為(2-2)對于節(jié)點a,應用KCL方程可得(2-3)假設將公式(2-1)~公式(2-3)聯(lián)立,可以較容易得到該運放網(wǎng)絡的傳遞函數(shù)是(2-4)令(2-5)(2-6)那么有(2-7)式(2-7)為二階有源低通濾波器傳遞函數(shù)的典型表達式。其中(2-8)為該低通濾波器的特征頻率,即Q為0.707時的3dB截止頻率。根據(jù)以上結果同理推導可以得到二階有源高通濾波器的截止頻率為。根據(jù)式(2-8)可得本系統(tǒng)設計的二階有源帶通濾波器的截止頻率分別為30Hz和16kHz,該通頻段可有效地保存音頻信號并濾除其他頻段的雜波。3.基于STM32的FM收發(fā)器軟件設計本設計的軟件環(huán)境為RealviewMDK。MDK-ARM是一款為Cortex-M、ARM7、ARM9等CPU提供的一個功能強大的開發(fā)環(huán)境,是一款微控制器使用的開發(fā)環(huán)境,可以滿足大多數(shù)嵌入式應用的根本需要?;赟TM32的FM收發(fā)器的軟件局部大致有矩陣鍵盤、LCD、FM收發(fā)器的驅動和信號指示燈的控制。3.1LCD液晶顯示屏的軟件開發(fā)本設計使用的LCD液晶型號為NOKIA5110。單片機與NOKIA5110使用串行方式進行通信,只需占用5個GPIO口即可完成驅動。NOKIA5110的分辨率為84*48,可完成4行字符串的顯示。本設計使用STM32F103CFM接收模式下LCD的顯示模式當FM收發(fā)器在接收狀態(tài),LCD的顯示內(nèi)容為:第1行:顯示“Receiver〞模式。第2行:顯示FM接收器正在接收的頻道,例如“94.1MHz〞。第3行:顯示FM接收模式播放的音量。第4行:顯示所在FM頻道的信號強度。FM發(fā)射模式下LCD的顯示模式在FM收發(fā)器在發(fā)射狀態(tài),LCD的顯示內(nèi)容為:第1行:顯示“Sender〞模式。第2行:顯示FM發(fā)射器所在的頻道。3.2矩陣薄膜鍵盤的軟件開發(fā)矩陣鍵盤的驅動方式:首先將四根行線全部置低,此時假設有按鍵鍵入,那么四根列線其中一根會出現(xiàn)低電平,根據(jù)低電平出現(xiàn)的列數(shù)可確定鍵入按鍵的列數(shù)。同理,在按鍵鍵入的時間段內(nèi)再將四根列線全部置低,此時假設有按鍵鍵入,那么四根行線的其中一根會出現(xiàn)低電平,然后根據(jù)低電平出現(xiàn)時的行數(shù)可以確定鍵入按鍵的行數(shù)。由于矩陣薄膜鍵盤沒有硬件去抖電路,因此采用軟件去抖方式,最后根據(jù)掃描程序得到的行數(shù)和列數(shù)即可確定按鍵的位置[8]。矩陣鍵盤的掃描流程圖如圖3-1所示。圖3-1矩陣鍵盤掃描軟件流程圖根據(jù)按鍵位置-功能映射表可確定按鍵鍵入且矩陣鍵盤掃描完成后需要執(zhí)行的具體功能。按鍵位置-功能映射表如表3-1所示。表3-1鍵盤按鍵位置-功能映射表按鍵位置按鍵功能1數(shù)字“1〞2數(shù)字“2〞3數(shù)字“3〞4字母“A〞5數(shù)字“4〞6數(shù)字“5〞7數(shù)字“6〞8字母“B〞9數(shù)字“7〞10數(shù)字“8〞11數(shù)字“9〞12字母“C〞13“-〞鍵14數(shù)字“0〞15“+〞鍵16模式切換鍵3.3FM收發(fā)模塊的軟件開發(fā)FM收發(fā)模塊采用了功能豐富且驅動方式簡單的RDA5820集成電路,單片機與其交換數(shù)據(jù)使用串行方式且采用了I2C總線。由于STM32F103C8T6沒有硬件I2C總線,且I2C總線的時序控制較為嚴格,因此采用GPIO口驅動I2I2C總線控制I2C總線的協(xié)議格式如圖3-2所示。I2C是PHILIPS公司設計的雙線式串行總線,具有引腳少、元件封裝方式較小、協(xié)議簡單和數(shù)據(jù)傳送速度快等特點。I2C總線下的每個器件都有唯一的識別地址。當I2C總線處于閑置狀態(tài)時,SDA和SCL都為高電平。因為聯(lián)接到I2C接口上的器件接口必須是開漏或者開集,因此任一器件接口電平假設置低,都會拉低引腳,也就是總線上各個設備的引腳之間都是“與〞的邏輯。因為各個器件的輸出均為OC門或OD門,所以各個引腳必須上拉,從而使SDA和SCL在該總線閑置時被置為高電平狀態(tài)。該總線的開始、停止和數(shù)據(jù)傳遞圖3-2I2C(1)起始信號。SCL保持高電平,假設SDA線產(chǎn)生一個由高到低的電平變化,那么代表起始信號。其它I2C指令在起始信號發(fā)生之后且能有效地運行(2)終止信號。SCL保持高電平,假設SDA線產(chǎn)生一個由低到高的電平變化,那么代表終止信號。終止信號出現(xiàn)后,所有其它指令操作都無效。(3)數(shù)據(jù)傳送。利用I2C總線傳輸數(shù)據(jù)的數(shù)據(jù)量沒有限制,并且必須以8位作為每個字節(jié)的長度。數(shù)據(jù)傳遞時,從MSB位開始發(fā),并且需要有一位應答位跟隨在每個字節(jié)后面??偩€的應答在SCL的第九個時鐘上產(chǎn)生,且該時鐘是由總線的主機方來控制。此時發(fā)送方必須將SDA置高,使接收方可以產(chǎn)生應答信號[9]RDA5820收發(fā)芯片的驅動(1)接收模式??刂芌DA5820的工作方式為FM接收模式,可以通過寫入40H內(nèi)部存放器的CHIP_FUNC[3:0]=0。設置FM接收器所在的工作頻道那么可以通過改變地址為03H的內(nèi)部存放器的值。通過修改SPACE存放器來設置自動搜臺的步進值(50kHz,100kHz,200kHz),頻道由存放器CHAN[9:0]來選擇,頻率范圍(87MHz~108MHz,76MHz~108MHz,76MHz~91MHz)通過存放器BAND[1:0]設置。當用戶修改03H的調(diào)諧位1時,RDA5820會啟動調(diào)諧。在調(diào)諧完成時,STC位會自動置為1,用戶可以讀取存放器0AH和存放器0BH來獲取該頻道的狀態(tài)值(FM_READY,RSSI等)。設置為接收模式時調(diào)諧過程要持續(xù)10ms。(2)發(fā)射模式??刂芌DA5820的工作方式為FM發(fā)射模式,可以通過寫入40H內(nèi)部存放器的CHIP_FUNC[3:0]=1。設置FM發(fā)射器所在的工作頻道那么可以通過改變地址為03H的內(nèi)部存放器的值。通過修改SPACE存放器來設置自動搜臺的步進值(50kHz,100kHz,200kHz),頻道由存放器CHAN[9:0]來選擇,頻率范圍(87MHz~108MHz,76MHz~108MHz,76MHz~91MHz)通過存放器BAND[1:0]設置。當用戶修改03H的調(diào)諧位1時,RDA5820會啟動調(diào)諧。在調(diào)諧完成時,STC位會自動置為1,用戶可以讀取存放器0AH和存放器0BH來獲取該頻道的狀態(tài)值(FM_READY,RSSI等)。設置為發(fā)射模式時調(diào)諧過程要持續(xù)100ms[10]。其中每次修改FM收發(fā)器的發(fā)射/接收模式、頻道、音量大小時,STM32會將上述數(shù)據(jù)保存在STM32自帶的FLASH中,使每次開機時FM收發(fā)器為上次關機前的狀態(tài)和模式,用戶無需重新設置。STM32控制其穩(wěn)定工作的流程如圖3-3所示。圖3-3RDA5820控制流程圖3.4信號指示燈的軟件開發(fā)本系統(tǒng)使用一個綠色貼片LED指示接收信號強度。根據(jù)實踐,當FM接收模塊可以接收到FM音頻信號并播放時,從RDA5820存放器中讀取的信號強度值(RSSI)一般為20以上,當FM接收模塊在該頻道無法接收信號時,信號強度值一般小于5。由此可以根據(jù)RSSI的值判斷FM接收模塊所在的工作頻道是否有可用的FM信號覆蓋,假設有可用的FM信號覆蓋,那么使LED亮,否那么LED滅。本設計以1s為周期檢測本地該頻道的FM信號強度。其中1s的周期更新中斷采用STM32外設中的16位定時器(TIM2)。STM32F103C8T6的TIM2使用的是PCLK1,即TIM2的最高時鐘頻率為72MHz。TIM2的外設時鐘使用TIM2預分頻器分頻為相應的計數(shù)時鐘后使用。通過賦值語句設置定時器的預分頻存放器為7199,然后得到10kHz的計數(shù)頻率。設置TIM的周期存放器(TIM_Period)值為9999,得到1s的更新中斷。指定TIM2的周期中斷優(yōu)先級為高,在TIM2的更新中斷效勞程序4.基于STM32的FM收發(fā)器系統(tǒng)調(diào)試及結果分析4.1FM收發(fā)器的接收模式調(diào)試及結果分析FM收發(fā)器的接收模式調(diào)試過程如下:(1)利用USB的+5V電源或三節(jié)干電池為FM收發(fā)系統(tǒng)電路板供電。LCD顯示“Receiver〞接收模式。假設液晶顯示屏顯示“Sender〞發(fā)送模式,那么按下“切換〞鍵,將FM收發(fā)器切換到FM接收模式。(2)使用數(shù)字鍵鍵入頻道。例如“94.10MHz(紹興交通播送)〞,依次鍵入“9”、“4”、“1”、“0”,液晶顯示屏顯示“FM:94.10MHz〞,此時喇叭將播放該電臺的節(jié)目。同時液晶顯示屏顯示信號強度值,(3)使用“+〞、“-〞鍵調(diào)節(jié)播放音量的大小,或者通過調(diào)節(jié)電位器調(diào)節(jié)音量。結果分析:經(jīng)過一系列簡單調(diào)試,F(xiàn)M收發(fā)系統(tǒng)的接收模式功能已經(jīng)根本實現(xiàn)。利用信號指示燈LED的亮滅指示是否有FM信號覆蓋,使用戶體驗更加直觀。4.2FM收發(fā)器的發(fā)射模式調(diào)試及結果分析FM收發(fā)器的發(fā)射模式調(diào)試過程如下:(1)利用USB的+5V電源或三節(jié)干電池為FM收發(fā)系統(tǒng)電路板供電。LCD顯示“Receiver〞接收模式。假設液晶顯示屏顯示“Sender〞發(fā)送模式,那么按下“切換〞鍵,將FM收發(fā)器切換到FM接收模式。(2)使用數(shù)字鍵鍵入頻道。例如“95.90MHz〞,依次鍵入“9”、“5”、“9”、“0”,液晶顯示屏顯示“(3)查找到?jīng)]有可用FM信號覆蓋的頻道后,按下“切換〞鍵,將FM收發(fā)器從接收模式切換到發(fā)射模式,液晶顯示屏顯示“Sender〞發(fā)射模式。(4)使用數(shù)字鍵鍵入沒有FM信號覆蓋的頻道,例如“95.90MHz〞,依次鍵入“9”、“5”、“9”、“0(5)靠近并使用麥克風錄入語音或使用3.5mm耳機接口輸入音頻。輸入信號的通道通過一個雙刀雙擲開關切換。(6)在一定距離范圍使用另一臺收音機或“基于STM32的FM收發(fā)器〞,如果使用FM收發(fā)器那么需要按“切換〞鍵將其切換到FM接收模式。將收音機或處于接收模式的FM收發(fā)器的工作頻道調(diào)整到FM發(fā)射器所在的頻道,此時收音機可播放從FM發(fā)射器輸入的語音信號或音頻信號。結果分析:經(jīng)過一系列簡單調(diào)試,F(xiàn)M收發(fā)系統(tǒng)的發(fā)射模式功能已經(jīng)根本實現(xiàn)。FM收發(fā)器的發(fā)射功能可以將從麥克風輸入的語音信號或從3.5mm耳機接口輸入的音頻信號通過未被占用的FM頻道較好地發(fā)射出去,且噪音和失真很小。結論本文詳細介紹并闡述了基于STM32的FM收發(fā)器的硬件設計和軟件開發(fā)過程。其中主要包括單片機控制模塊、液晶顯示模塊、矩陣鍵盤輸入模塊、音頻輸入模塊、音頻功放模塊、FM收發(fā)模塊和音頻濾波模塊。單片機控制模塊使用STM32F103C8T6單片機執(zhí)行每個硬件模塊的驅動和協(xié)調(diào)工作。LCD顯示模塊使用NOKIA5110液晶顯示屏,完成FM頻道、信號強度、收發(fā)模式和音量大小的顯示功能。鍵盤輸入模塊采用4*4矩陣薄膜鍵盤,通過鍵盤按鍵輸入修改FM收發(fā)器的收發(fā)模式、音量大小、FM工作頻道等。音頻輸入模塊通過麥克風錄入語音或者使用3.5mm耳機接口輸入音頻。音頻濾波模塊使用一個二階有源帶通濾波器濾除多余頻帶的信號,在信號輸入FM發(fā)射模塊或FM接收模塊輸出音頻信號時均采用該帶通濾波器濾波。FM收發(fā)器繼而完成音頻的低噪放大、調(diào)制、解調(diào)等處理功能。應用RealviewMDK軟件開發(fā)環(huán)境生成的代碼控制STM32的運行,使硬件局部的各個模塊協(xié)調(diào)運行。根據(jù)實測結果,基于STM32的FM收發(fā)器調(diào)試較為成功,實現(xiàn)了根本功能,人機接口友好,將FM調(diào)頻的發(fā)射和接收功能相參考文獻[1]姜勝濤.FM播送天線原理、測試與維護[J].遼寧播送電視技術,2007,1:39~40[2]吳瓊瑤.FM播送發(fā)射技術的現(xiàn)狀及展望[J].電視設備通訊,1993,1:24~26[3]張旭,李世光等.基于STM32電力數(shù)據(jù)采集系統(tǒng)的設計[J].電子測量技術,2023,33(11):90~93[4]successzsj.Nokia5110LCD應用資料[EB/OL].sOFCUn3lsrJ_fEcn-ve8UUoLRPf4Lv76kbYZ5tzL4BVaO2PdS4jNZnlPhL2BUh1ODUwqrw0tbWAP1yPPu3EhFDDO,2015-05-05/2015-05-08[5]杜蕓強,畢淑娥.LM386在小功率主動聲吶發(fā)射及接收電路中的應用[J].電聲技術,2023,34(07):37~40[6]王曉峰,王素香,武曉威等.基于STC12LE5A16S2和RDA5820的校園調(diào)頻無線播送系統(tǒng)的設計[J].電力學報,2023,28(05):434~435[7]康華光.電子技術根底[M].北京:高等教育出版社,2006:417~419[8]黃忠良.線反轉法矩陣鍵盤程序設計[J].電腦學習,2023,1:61~62[9]張毅剛,彭喜元,彭宇.單片機原理及應用[M].北京:高等教育出版社,2023:274~279[10]lh569965.RDA5820系列編程指南V3.0[EB/OL].MIOhjUHeSQtZpwrUMcD-cYsk8wj_lC5GyJkcQ3zU8NNkTd8Ahoql7mMCHbL5L6q51h0AuBUh_PfBqeQ2euJKBEIvdrMTu,2015-05-05/2015-05-08附錄1實物圖附錄2系統(tǒng)原理圖附錄3各模塊程序(1)主程序main.c代碼如下:#include"stm32f10x.h"#include"nokia5110.h"#include"kbd.h"#include"i2c.h"#include"rda5820.h"#include"interface.h"#include"indicator.h"/*dec*/voidRCC_Config(void);voidFLASH_Save(void);u32FLASH_Read(u8addr);intmain(){ RCC_Config(); /*DisableJTAGDebugEnbaleSWD*/ GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); /*flashinit*/FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR); vol=FLASH_Read(0); freq=FLASH_Read(1); freq2=FLASH_Read(2); state=FLASH_Read(3); if(!(vol<16&&vol))vol=5;//修正音量 if(!(freq>7000&&freq<10000))freq=9410;//修正接收頻率 if(!(freq2>7000&&freq2<10000))freq2=9590;//修正發(fā)送頻率 if(state!=1&&state!=0)state=0;//修正狀態(tài) /*液晶屏*/ LCD5110_Init(); LCD_clear(); /*initrda5820*/ Rda5820Init();//initialization Rda5820VolSet(vol);//volume5默認音量:5 Rda5820SpaceSet(2);//step50KHz(0.05MHz) Rda5820BandSet(2);//band76~108MHz Rda5820TxPgaSet(5);//輸入增益:6 Rda5820TxPagSet(63);//最大發(fā)射功率 if(state) { Rda5820TxMode(); Rda5820FreqSet(freq2); TxShow(); } else { Rda5820RxMode(); Rda5820FreqSet(freq); RxShow(); } Indicator_Init();//信號指示燈 while(1) { kbdHandler(kbdScan()); /*checkoneSecondFlag*/ if(OneSec) { OneSec=0; rssi=Rda5820RssiGet(); if(rssi>15)LED_ON; elseLED_OFF; if(state)TxShow(); elseRxShow(); } }}/*ClockInitialization*/voidRCC_Config(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//EnableGPIOA,GPIOBClock RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);}#defineStartAddr((u32)0x08008000)voidFLASH_Save(){ u8i; u32dat[4]; dat[0]=vol;dat[1]=freq;dat[2]=freq2;dat[3]=state; FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR); for(i=0;i<4;i++) FLASH_ErasePage(StartAddr+i*4); for(i=0;i<4;i++) FLASH_ProgramWord(StartAddr+i*4,dat[i]); FLASH_Lock();}u32FLASH_Read(u8addr){ return(u32)(*((vu32*)(StartAddr+4*addr)));}(2)FM收發(fā)模塊驅動程序RDA5820.c代碼如下:#include"stm32f10x.h"http://#include"ioremap.h"http://#include"delay.h"#include"i2c.h"#include"rda5820.h"voidDelayMs(u16tCount){unsignedchara,b,c; for(;tCount;tCount--)for(c=1;c>0;c--)for(b=56;b>0;b--)for(a=137;a>0;a--);}//初始化//0,初始化成功;//其他,初始化失敗.u8Rda5820Init(void){u16id;IIcInit();//初始化IIC口id=Rda5820ReadReg(RDA5820_R00);//讀取ID=0X5805if(id==0X5805)//讀取ID正確{Rda5820WriteReg(RDA5820_R02,0x0002);//芯片軟復位DelayMs(400);//等待復位結束 Rda5820WriteReg(RDA5820_R02,0x0001); //芯片上電 DelayMs(600);Rda5820WriteReg(RDA5820_R02,0xD201);//芯片上電,不復位正常天線32.768時鐘循環(huán)搜索不開始搜索想上搜索低音增強立體聲非靜音非高阻抗 Rda5820WriteReg(RDA5820_R03,0x0000); //100kapace87-108baud不開啟調(diào)諧 Rda5820WriteReg(RDA5820_R04,0x0000); //關閉中斷0.75us去加重不使能iisio口全部浮空 Rda5820WriteReg(RDA5820_R05,0X8548); //搜索強度8,LNAN,1.8mA,VOL最大無輸入低噪聲 //Rda5820WriteReg(RDA5820_R0A,0X7800); //0A不用設置 //Rda5820WriteReg(RDA5820_R0B,0X7800); //0b不用設置 Rda5820WriteReg(RDA5820_R40,0X0000); //半自動搜臺RX工作模式 Rda5820WriteReg(RDA5820_R41,0X0000); //RDS應答為0不復位fifofifo深度為0 //Rda5820WriteReg(RDA5820_R42,0X0000); //42不用設置 Rda5820WriteReg(RDA5820_R4A,0X0010); //fifo滿中斷 Rda5820FreqSet(8100);//設置初始化頻率81.00M}elsereturn1;//初始化失敗return0;}//寫RDA5820存放器voidRda5820WriteReg(u8addr,u16val){IIcStart();IIcSendByte(RDA5820_WRITE);//發(fā)送寫命令IIcWaitAck();IIcSendByte(addr);//發(fā)送地址IIcWaitAck();DelayMs(2);IIcSendByte(val>>8);//發(fā)送高字節(jié)IIcWaitAck();IIcSendByte(val&0XFF);//發(fā)送低字節(jié)IIcWaitAck();IIcStop();//產(chǎn)生一個停止條件}//讀RDA5820存放器u16Rda5820ReadReg(u8addr){u16res;IIcStart();IIcSendByte(RDA5820_WRITE);//發(fā)送寫命令IIcWaitAck();IIcSendByte(addr);//發(fā)送地址IIcWaitAck();DelayMs(2);IIcStart();IIcSendByte(RDA5820_READ);//發(fā)送讀命令IIcWaitAck();res=IIcReadByte(1);//讀高字節(jié),發(fā)送ACKres<<=8;res|=IIcReadByte(0);//讀低字節(jié),發(fā)送NACKIIcStop();//產(chǎn)生一個停止條件returnres;//返回讀到的數(shù)據(jù)}//設置RDA5820為RX模式voidRda5820RxMode(void){u16temp;temp=Rda5820ReadReg(0X40);//讀取0X40的內(nèi)容temp&=0xfff0;//RX模式Rda5820WriteReg(0X40,temp);//FMRX模式}//設置RDA5820為TX模式voidRda5820TxMode(void){u16temp;temp=Rda5820ReadReg(0X40);//讀取0X40的內(nèi)容temp&=0xfff0;temp|=0x0001;//TX模式Rda5820WriteReg(0X40,temp);//FMTM模式}//得到信號強度//返回值范圍:0~127u8Rda5820RssiGet(void){u16temp;temp=Rda5820ReadReg(0X0B);//讀取0X0B的內(nèi)容returntemp>>9;//返回信號強度}//設置音量ok//vol:0~15;voidRda5820VolSet(u8vol){u16temp;temp=Rda5820ReadReg(0X05);//讀取0X05的內(nèi)容temp&=0XFFF0;temp|=vol&0X0F;Rda5820WriteReg(0X05,temp);//設置音量}//靜音設置//mute:0,不靜音;1,靜音voidRda5820MuteSet(u8mute){u16temp;temp=Rda5820ReadReg(0X02);//讀取0X02的內(nèi)容if(mute)temp|=1<<14;elsetemp&=~(1<<14);Rda5820WriteReg(0X02,temp);//設置MUTE}//設置靈敏度//rssi:0~127;voidRda5820RssiSet(u8rssi){u16temp;temp=Rda5820ReadReg(0X05);//讀取0X05的內(nèi)容temp&=0X80FF;temp|=(u16)rssi<<8;Rda5820WriteReg(0X05,temp);//設置RSSI}//設置TX發(fā)送功率//gain:0~63voidRda5820TxPagSet(u8gain){u16temp;temp=Rda5820ReadReg(0X42);//讀取0X42的內(nèi)容temp&=0XFFC0;temp|=gain;//GAINRda5820WriteReg(0X42,temp);//設置PA的功率}//設置TX輸入信號增益//gain:0~7voidRda5820TxPgaSet(u8gain){u16temp;temp=Rda5820ReadReg(0X42);//讀取0X42的內(nèi)容temp&=0XF8FF;temp|=gain<<8;//GAINRda5820WriteReg(0X42,temp);//設置PGA}//設置RDA5820的工作頻段//band:0,87~108Mhz;1,76~91Mhz;2,76~108Mhz;3,用戶自定義(53H~54H)voidRda5820BandSet(u8band){u16temp;temp=Rda5820ReadReg(0X03);//讀取0X03的內(nèi)容temp&=0XFFF3;temp|=band<<2;Rda5820WriteReg(0X03,temp);//設置BAND}//設置RDA5820的步進頻率//band:0,100Khz;1,200Khz;3,50Khz;3,保存voidRda5820SpaceSet(u8spc){u16temp;temp=Rda5820ReadReg(0X03);//讀取0X03的內(nèi)容temp&=0XFFFC;temp|=spc;Rda5820WriteReg(0X03,temp);//設置BAND}//設置RDA5820的頻率//freq:頻率值(單位為10Khz),比方10805,表示108.05MhzvoidRda5820FreqSet(u16freq){u16temp;u8spc=0,band=0;u16fbtm,chan;temp=Rda5820ReadReg(0X03);//讀取0X03的內(nèi)容temp&=0X001F;band=(temp>>2)&0x03;//得到頻帶spc=temp&0x03;//得到分辨率if(spc==0)spc=10;elseif(spc==1)spc=20;elsespc=5;if(band==0)fbtm=8700;elseif(band==1||band==2)fbtm=7600;else{fbtm=Rda5820ReadReg(0X53);//得到bottom頻率fbtm*=10;}if(freq<fbtm)return;chan=(freq-fbtm)/spc;//得到CHAN應該寫入的值chan&=0X3FF;//取低10位temp|=chan<<6;temp|=1<<4;//TONEENABLERda5820WriteReg(0X03,temp);//設置頻率DelayMs(20);//等待20mswhile((Rda5820ReadReg(0X0B)&(1<<7))==0);//等待FM_READY}//得到當前頻率//返回值:頻率值(單位10Khz)u16Rda5820FreqGet(void){u16temp;u8spc=0,band=0;u16fbtm,chan;temp=Rda5820ReadReg(0X03);//讀取0X03的內(nèi)容chan=temp>>6;band=(temp>>2)&0x03;//得到頻帶spc=temp&0x03;//得到分辨率if(spc==0)spc=10;elseif(spc==1)spc=20;elsespc=5;if(band==0)fbtm=8700;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論