《基于STM32的簡易示波器開發(fā)系統(tǒng)的設(shè)計與實現(xiàn)》11000字_第1頁
《基于STM32的簡易示波器開發(fā)系統(tǒng)的設(shè)計與實現(xiàn)》11000字_第2頁
《基于STM32的簡易示波器開發(fā)系統(tǒng)的設(shè)計與實現(xiàn)》11000字_第3頁
《基于STM32的簡易示波器開發(fā)系統(tǒng)的設(shè)計與實現(xiàn)》11000字_第4頁
《基于STM32的簡易示波器開發(fā)系統(tǒng)的設(shè)計與實現(xiàn)》11000字_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

基于STM32的簡易示波器開發(fā)系統(tǒng)的設(shè)計與實現(xiàn)摘要示波器是一種用途十分廣泛的電子測量儀器。它能把肉眼看不見的電信號轉(zhuǎn)化成我們看得見的圖像,讓人們研究各種電現(xiàn)象的變化過程。數(shù)字存儲示波器是將信號離散采樣之后在顯示屏幕上顯示,其中經(jīng)歷AD采樣、數(shù)據(jù)運算、數(shù)據(jù)存儲、數(shù)據(jù)分析、波形回放等過程。本系統(tǒng)是基于MiniSTM32處理器,設(shè)計一個簡易示波器,使其能夠達(dá)到示波器的一些基本功能。所設(shè)計的系統(tǒng)通過下位機采集電信號,經(jīng)USB線將數(shù)據(jù)發(fā)送至上位機軟件解碼畫出其波形圖。上位機軟件基于Qt應(yīng)用程序開發(fā)框架,設(shè)計一個操作顯示界面,使其具有自動模式,可對波形的顯示進行自動調(diào)整。并通過不同功能按鍵實現(xiàn)幅值、測量頻率、進行傅里葉變換等功能。也可根據(jù)使用者的需求,手動調(diào)整顯示的周期、幅值等參數(shù)。關(guān)鍵詞:示波器;STM32;AD轉(zhuǎn)換器;Qt目錄第一章緒論 51.1引言 51.2研究背景和意義 51.3研究現(xiàn)狀 6第二章系統(tǒng)描述 82.1系統(tǒng)總體設(shè)計 82.2系統(tǒng)結(jié)構(gòu) 82.3系統(tǒng)開發(fā)研究內(nèi)容 9第三章系統(tǒng)硬件 103.1硬件 103.1.1下位機MiniSTM32控制器 103.1.2上位機(PC機) 13第四章系統(tǒng)軟件設(shè)計 144.1下位機MiniSTM32 154.1.1數(shù)字/模擬轉(zhuǎn)換DAC 154.1.2模擬/數(shù)字轉(zhuǎn)換ADC 164.1.3USART串口協(xié)議 184.2上位機Qt開發(fā)框架 214.2.1Qt開發(fā) 21第五章實物展示 275.1硬件總體及功能介紹 27第六章設(shè)計總結(jié)與展望 296.1總結(jié) 296.1展望 29參考文獻 32第一章緒論1.1引言單片機比專用處理器最適合應(yīng)用于嵌入式系統(tǒng),因此它得到了最多的應(yīng)用。事實上單片機是世界上數(shù)量最多的計算機?,F(xiàn)代人類生活中所用的幾乎每件電子和機械產(chǎn)品中都會集成有單片機。手機、電話、計算器、家用電器、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機。而個人電腦中也會有為數(shù)不少的單片機在工作。隨著集成電路的發(fā)展和數(shù)字信號處理技術(shù)的采用,數(shù)字示波器已成為集顯示、測量、運算、分析、記錄等各種功能于一體的智能化測量儀器。數(shù)字示波器在性能上也逐漸超越模擬示波器,并有取而代之的趨勢。與模擬示波器相比,數(shù)字示波器不僅具有可存儲波形、體積小、功耗低,使用方便等優(yōu)點,而且還具有強大的信號實時處理分析功能。因此,數(shù)字示波器的使用越來越廣泛。目前我國國內(nèi)自主研發(fā)的高性能數(shù)字示波器還是比較少,廣泛使用的仍是國外產(chǎn)品。因此,有必要對高性能數(shù)字示波器和單片機進行廣泛和深入研究。1.2研究背景和意義在電子測量技術(shù)的發(fā)展史上,示波器的出現(xiàn)給測量技術(shù)帶來了翻天覆地的變化,可以說的上是一場革命,從布勞恩的第一臺示波器問世以來,示波器的功能越來越豐富,性能也與日俱增。從70年代開始人們的注意力主要轉(zhuǎn)向自動化、實用化和提高準(zhǔn)確度。微型計算機和儀器通用接口的出現(xiàn),給示波器的自動化發(fā)展推到了一個嶄新的水平。微機的引入使示波器在設(shè)計、性能、功能、實用以及操作和故障診斷等方面都產(chǎn)生了巨大變化,隨著工業(yè)發(fā)展對示波器的設(shè)計和測量的需要,示波器的功能已從時域分析擴展到了數(shù)據(jù)域分析。當(dāng)前,高精度、功能多樣、使用靈活、操作方便、性能可靠,已成為示波器生產(chǎn)廠家追求的主要目標(biāo)。傳統(tǒng)模擬的示波器其優(yōu)點,即具有迅速的響應(yīng)特性、面板直接控制操作、可直接觀測輸入信號、價格低廉等。目前數(shù)字示波器已經(jīng)完全能夠做到,特別是在捕獲非重復(fù)信號、避免信號虛化和閃爍、在時間上從觸發(fā)事件方向?qū)ほE實現(xiàn)在電路中隔離故障等方面,數(shù)字示波器顯示出了模擬示波器無可比擬的優(yōu)勢。因此,數(shù)字示波器由于其性能優(yōu)越,和良好的性價比,現(xiàn)在已成為示波器的主流產(chǎn)品。通過本設(shè)計,可以達(dá)到學(xué)以致用,把理論與實踐相結(jié)合,學(xué)會處理設(shè)計過程中出現(xiàn)的一些問題,掌握設(shè)計的技巧,為以后工作打下基礎(chǔ),并完成一個能滿足基本需要的示波器。1.3研究現(xiàn)狀單片機誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SoC三大階段。單片機是嵌入式系統(tǒng)的獨立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決;因此,專用單片機的發(fā)展自然形成了SoC化趨勢。隨著微電子技術(shù)、IC設(shè)計、EDA工具的發(fā)展,基于SoC的單片機應(yīng)用系統(tǒng)設(shè)計有較大的發(fā)展。因此,對單片機的理解可以從單片微型計算機、單片微控制器延伸到單片應(yīng)用系統(tǒng)。目前單片機滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄象機、攝象機,以及程控玩具等等,這些都離不開單片機。單片機的技術(shù)進步反映在內(nèi)部結(jié)構(gòu)、功率消耗、外部電壓等級以及制造工藝上。在這幾方面,較為典型地說明了數(shù)字單片機的水平。在目前,用戶對單片機的需要越來越多,但是,要求也越來越高。在單片機應(yīng)用中,可靠性是首要因素為了擴大單片機的應(yīng)用范圍和領(lǐng)域,提高單片機自身的可靠性是一種有效方法。近年來,單片機的生產(chǎn)廠家在單片機設(shè)計上采用了各種提高可靠性的新技術(shù):EFT(EllectricalFastTransient)技術(shù),低噪聲布線技術(shù)及驅(qū)動技術(shù),采用低頻時鐘。同時單片機在目前的發(fā)展形勢下還表現(xiàn)出可靠性及應(yīng)用越來越水平高和互聯(lián)網(wǎng)連接,所集成的部件越來越多,功耗越來越低和模擬電路結(jié)合越來越多等發(fā)展趨勢。半個世紀(jì)以來,示波器由電子管發(fā)展到晶體管,有發(fā)展到集成電路;由模擬電路發(fā)展到數(shù)字電路;由通用示波器發(fā)展到取、記憶、數(shù)字存儲、邏輯分析、故障判斷、只能化等多個系列,幾百個品種。以美國Tektronix公司為例,建立于1947年,目前已有9大系列,100多個品種,產(chǎn)品銷遍全球,己被世界公認(rèn)為示波器的權(quán)威。自1951年,我國在示波器生產(chǎn)方面也有很大進展,形成了一支研發(fā)和設(shè)計示波器的專業(yè)隊伍,已能生產(chǎn)寬帶、取樣、高靈敏度、記憶、數(shù)字存儲、邏輯分析等各門類的示波器,有些門類的主要技術(shù)指標(biāo)已經(jīng)接近國際先進水平。數(shù)字示波器是隨著數(shù)字電路的發(fā)展而發(fā)展起來的一種新型示波器。它是采用數(shù)字電路,把輸入信號經(jīng)過AD轉(zhuǎn)換,把模擬波形變換成數(shù)字信息,并存儲在存儲器中,待需要讀出時,在通過DA轉(zhuǎn)換,能捕捉觸發(fā)前的信號,可通過接口與計算機相連接等特點,與計算機連成系統(tǒng)。分析復(fù)雜的單次瞬變信號的有效儀器。剛一問世,就顯示出它強大的生命力,各行各業(yè)都迫切需要,有其廣闊的市場空間。第二章系統(tǒng)描述2.1系統(tǒng)總體設(shè)計本系統(tǒng)是一個基于STM32簡易示波器的開發(fā),主要有兩大部分組成:MiniSTM32模數(shù)轉(zhuǎn)換ADC模塊和USART收發(fā)模塊,上位機Qt界面操作顯示模塊。MiniSTM32作為硬件設(shè)備的驅(qū)動以及AD采集模塊開發(fā),然后經(jīng)過USART收發(fā)模塊通過串口將硬件的工作情況,采集的數(shù)據(jù)發(fā)送至上位機Qt顯示界面。同時,通過界面操作控制按鈕,向下位機發(fā)送指令,將數(shù)據(jù)進一步處理,然后再傳輸顯示,從而達(dá)到上位機對下位機的控制。2.2系統(tǒng)結(jié)構(gòu)本設(shè)計主要由兩大塊構(gòu)成,如圖2-1所示:智能硬件設(shè)備:MiniSTM32F103處理器,上位機。Qt操作顯示界面。上位機STM32上位機STM32圖2-1系統(tǒng)總體圖系統(tǒng)各部分具體結(jié)構(gòu)圖如圖2-2所示。上位機USARTADCSTM32上位機USARTADCSTM32Qt操作顯示界Qt操作顯示界面上位機下位機下位機STM32圖2-2系統(tǒng)各部分結(jié)構(gòu)圖2.3系統(tǒng)開發(fā)研究內(nèi)容本系統(tǒng)的主要開發(fā)內(nèi)容有MiniSTM32模數(shù)轉(zhuǎn)換ADC模塊、USART收發(fā)模塊、Qt界面操作顯示模塊。搭建KeilMDK5,這是對模數(shù)轉(zhuǎn)換ADC模塊和USART收發(fā)模塊主要開發(fā)環(huán)境。通過Int網(wǎng)絡(luò),可以參照前輩的先例,然后將程序移植過來進行開發(fā),完成這么兩個模塊。模數(shù)轉(zhuǎn)換ADC模塊:模擬信號只有通過A/D轉(zhuǎn)化為數(shù)字信號后才能用軟件進行處理,這一切都是通過A/D轉(zhuǎn)換器(ADC)來實現(xiàn)的。對于ADC而言,采樣速率和分辨率是兩個非常重要的指標(biāo)參數(shù)。其中,采樣速率表示模擬信號轉(zhuǎn)換為數(shù)字信號的速率,與ADC器件的制造技術(shù)有關(guān),取決于ADC中比較器所能提供的判斷能力。分辨率表示模擬信號轉(zhuǎn)換為數(shù)字信號后的比特數(shù)。本系統(tǒng)就是將采集的電信號通過A/D轉(zhuǎn)換成數(shù)字信號,然后將數(shù)據(jù)進行處理。USART收發(fā)模塊一般分為三大部分:時鐘發(fā)生器、數(shù)據(jù)發(fā)送器和接收器??刂萍拇嫫鳛樗械哪K共享。時鐘發(fā)生器由同步邏輯電路(在同步從模式下由外部時鐘輸入驅(qū)動)和波特率發(fā)生器組成。發(fā)送時鐘引腳XCK僅用于同步發(fā)送模式下,發(fā)送器部分由一個單獨的寫入緩沖器(發(fā)送UDR)、一個串行移位寄存器、校驗位發(fā)生器和用于處理不同幀結(jié)構(gòu)的控制邏輯電路構(gòu)成。使用寫入緩沖器,實現(xiàn)了連續(xù)發(fā)送多幀數(shù)據(jù)無延時的通信。接收器是USART模塊最復(fù)雜的部分,最主要的是時鐘和數(shù)據(jù)接收單元。數(shù)據(jù)接收單元用作異步數(shù)據(jù)的接收。除了接收單元,接收器還包括校驗位校驗器、控制邏輯、移位寄存器和兩級接收緩沖器(接收UDR)。接收器支持與發(fā)送器相同的幀結(jié)構(gòu),同時支持幀錯誤、數(shù)據(jù)溢出和校驗錯誤的檢測。該模塊的功能主要是實現(xiàn)上位機與下位機的通信,下位機將采集的數(shù)據(jù)信息通過該模塊傳送至上位機,上位機通過串口輸送指令至下位機進行控制。搭建QtCreater開發(fā)環(huán)境,建立GUI界面設(shè)置操作按鈕以及顯示屏。運用槽函數(shù)以及QserialPort串口功能來接受由下位機STM32傳輸?shù)臄?shù)據(jù),顯示實時動態(tài)波形,通過操作按鈕控制下位機。第三章系統(tǒng)硬件3.1硬件3.1.1下位機MiniSTM32控制器本系統(tǒng)采用的處理器是來自正元電子的MiniSTM32開發(fā)板,它采用的是Cortex-M3處理器。Cortex-M3采用目前主流ARMV7-M架構(gòu),相比曾風(fēng)靡一時的ARMV4T架構(gòu)擁有更加強勁的性能,更高的代碼密度,更高的性價比,Cortex-M3處理器結(jié)合多種突破性技術(shù),在低功耗、低成本、高性能三方面具有突破性的創(chuàng)新。ARMCortex-M3采用哈佛結(jié)構(gòu),并選擇了適合于微控制器應(yīng)用的三級流水線,但增加了分支預(yù)測功能?,F(xiàn)代處理器大多采用指令預(yù)取和流水線技術(shù),以提高處理器的指令執(zhí)行速度。流水線處理器在正常執(zhí)行指令時,如果碰到分支(跳轉(zhuǎn))指令,由于指令執(zhí)行的順序可能會發(fā)生變化,指令預(yù)取隊列和流水線中的部分指令就可能作廢,而需要從新的地址重新取指、執(zhí)行,這樣就會使流水線“斷流”,處理器性能因此而受到影響。特別是現(xiàn)代C語言程序,經(jīng)編譯器優(yōu)化生成的目標(biāo)代碼中,分支指令所占的比例可達(dá)10-20%,對流水線處理器的影響會的更大。為此,現(xiàn)代高性能流水線處理器中一般都加入了分支預(yù)測部件,就是在處理器從存儲器預(yù)取指令時,當(dāng)遇到分支(跳轉(zhuǎn))指令時,能自動預(yù)測跳轉(zhuǎn)是否會發(fā)生,再從預(yù)測的方向進行取指,從而提供給流水線連續(xù)的指令流,流水線就可以不斷地執(zhí)行有效指令,保證了其性能的發(fā)揮。ARMCortex-M3內(nèi)核的預(yù)取部件具有分支預(yù)測功能,可以預(yù)取分支目標(biāo)地址的指令,使分支延遲減少到一個時鐘周期。針對業(yè)界對ARM處理器中斷響應(yīng)的問題,Cortex-M3首次在內(nèi)核上集成了嵌套向量中斷控制器(NVIC)。Cortex-M3的中斷延遲只有12個時鐘周期(ARM7需要24-42個周期);Cortex-M3還使用尾鏈技術(shù),使得背靠背(back-to-back)中斷的響應(yīng)只需要6個時鐘周期(ARM7需要大于30個周期)。Cortex-M3采用了基于棧的異常模式,使得芯片初始化的封裝更為簡單。Cortex-M3加入了類似于8位處理器的內(nèi)核低功耗模式,支持3種功耗管理模式:通過一條指令立即睡眠;異常/中斷退出時睡眠;深度睡眠。使整個芯片的功耗控制更為有效。圖3-1MiniSTM32開發(fā)板資源圖Cortex-M3處理器系統(tǒng)框圖如圖3-2所示。圖3-2Cortex-M3處理器系統(tǒng)框圖3.1.2上位機(PC機)上位機是指可以發(fā)送操控指令的計算機。這里用到的是PC(personal

computer)機,又稱個人計算機。個人計算機一詞源自于1981年IBM的第一部桌上型計算機型號PC,在此之前有AppleII的個人用計算機。個人計算機由硬件系統(tǒng)和軟件系統(tǒng)組成,是一種能獨立運行,完成特定功能的設(shè)備。硬件系統(tǒng):是指計算機的物理設(shè)備如電源、主板、CPU、內(nèi)存、硬盤等等。軟件系統(tǒng):是指為方便使用計算機而設(shè)計的程序,軟件系統(tǒng)包括系統(tǒng)軟件和應(yīng)用軟件。系統(tǒng)軟件指的是主要用于控制和管理計算機資源的程序,如操作系統(tǒng)、編譯系統(tǒng)等。應(yīng)用軟件指各種可以運行在操作系統(tǒng)中的程序,如游戲軟件、工作軟件等。個人計算機不需要共享其他計算機的處理、磁盤和打印機等資源也可以獨立工作。從臺式機(或稱臺式計算機、桌面電腦)、筆記本電腦到上網(wǎng)本和平板電腦以及超級本等都屬于個人計算機的范疇。本系統(tǒng)正好運用了PC機上的某些應(yīng)用軟件,比如KeilMDK5和QtCreater開發(fā)環(huán)境。利用這兩個工作軟件,完成下位機MiniSTM32ADC模數(shù)轉(zhuǎn)換模塊和USART串口收發(fā)模塊程序編寫,以及Qt操作顯示界面運行程序編寫和界面設(shè)計。第四章系統(tǒng)軟件設(shè)計4.1下位機MiniSTM32單片機也被稱為單片微控器,屬于一種集成式電路芯片。我們采用了MiniSTM32來作為主要控制器,多樣化數(shù)據(jù)采集與控制系統(tǒng)能夠讓單片機完成各項復(fù)雜的運算。SMT32控制器內(nèi)部組織和管理非常高效。在存儲管理方面,STM32提高了FSMC機制,可以支持多種類型的存儲結(jié)構(gòu)、多種訪問方式,并可以進行靈活的管理和擴展。在中斷管理方面,STM32提供了強大的NVIC機制,可以嵌套式管理中斷服務(wù)請求,提高了系統(tǒng)的實時性。在內(nèi)存和外設(shè)通信方面,SMT32使用了先進的DMA機制,既減輕了UPC的負(fù)擔(dān),又提高了外設(shè)數(shù)據(jù)的讀寫效率。在通信接口方面,STM32提供了主流的串行通信接口,如USART、I2C、SPI、CAN、USB等,用戶只需要進行簡單的配置即可完成數(shù)據(jù)的通信。為了加快開發(fā)速度,SMT32為用戶提高了豐富的內(nèi)部資源和外設(shè)資源。其中,最典型的就是GPIO和ADC/DAC資源,這對于遠(yuǎn)程監(jiān)測系統(tǒng)的終端采集非常重要。STM32提供了多達(dá)80個快速GPIO端口,每個端口都看做是一個對象,可以獨立配置時鐘、工作模式、輸入輸出方式,并可以映射到16個外部中斷。高性能的ADC也是SMT32的一大特色,SMT32可以提供多達(dá)2個12位ADC。其轉(zhuǎn)換范圍為0~3.6V,具有雙采樣和保持功能。這是一種簡單的微控制器,對于我們來說,可以通過網(wǎng)頁學(xué)習(xí)或者老師的指點就能快速的了解掌握基礎(chǔ)知識。搭建KeilMDK5開發(fā)環(huán)境就能開始編寫模數(shù)轉(zhuǎn)換ADC模塊和USART數(shù)據(jù)收發(fā)模塊。4.1.1數(shù)字/模擬轉(zhuǎn)換DACDAC(Digitaltoanalogconverter)即數(shù)字模擬轉(zhuǎn)換器,又稱D/A轉(zhuǎn)換器,簡稱DAC,它是把數(shù)字量轉(zhuǎn)變成模擬的器件。本系統(tǒng)檢測時,我會用到D/A轉(zhuǎn)換生成模擬波形,模擬采集到的信號波形。然后再由ADC模塊進行數(shù)據(jù)的采集接收和轉(zhuǎn)化。它的功能與ADC相反。在常見的數(shù)字信號系統(tǒng)中,大部分傳感器信號被轉(zhuǎn)化成電壓信號,而ADC把電壓模擬信號轉(zhuǎn)換成易于計算機存儲、處理的數(shù)字編碼,由計算機處理完成后,再由DAC輸出電壓模擬信號,該電壓模擬信號常常用來驅(qū)動某些執(zhí)行器件,使人類易于感知。如音頻信號的采集及還原就是這樣一個過程。STM32F1DAC模塊是12位電壓輸出數(shù)模轉(zhuǎn)換器,它可以配置為8位或12位模式,也可以與DMA

控制器配合使用。DAC工作在12位模式下,數(shù)據(jù)可以采用左對齊或右對齊。DAC工作在8位模式下,數(shù)據(jù)只有右對齊方式。DAC有兩個輸出通道,每個通道各有一個轉(zhuǎn)換器。在DAC雙通道模式下,每個通道可以單獨進行轉(zhuǎn)換;當(dāng)兩個通道組合在一起同步執(zhí)行更新操作時,也可以同時進行轉(zhuǎn)換。DAC可通過一個輸入?yún)⒖茧妷阂_VREF+(與ADC共享)來提高轉(zhuǎn)換后的數(shù)據(jù)精度。本系統(tǒng)DAC部分,參照網(wǎng)絡(luò)上現(xiàn)有DAC模擬波形例程,實現(xiàn)正弦、方波、三角波輸出。任意一種波形幅值在0~3.3V可調(diào)、頻率在一定范圍內(nèi)可調(diào)。4.1.2模擬/數(shù)字轉(zhuǎn)換ADC模數(shù)轉(zhuǎn)換ADC模塊是下位機開發(fā)中一個重要的模塊,通過它采集數(shù)據(jù),實現(xiàn)數(shù)據(jù)轉(zhuǎn)換。這一部分在網(wǎng)頁以及MiniSTM32基本資料都有簡單的示例教程,我只需掌握原理就能編寫自己需要的源代碼程序了。在A/D轉(zhuǎn)換中,因為輸入的模擬信號在時間上是連續(xù)的,而輸出的數(shù)字信號是離散量,所以進行轉(zhuǎn)換時只能按一定的時間間隔對輸入的模擬信號進行采樣,然后再把采樣值轉(zhuǎn)換為輸出的數(shù)字量。通常A/D轉(zhuǎn)換需要經(jīng)過采樣、保持量化、編碼四個步驟。高精度、高性能的ADC,足以滿足大多數(shù)采集系統(tǒng)的要求。它通常會提供2個獨立的ADC控制器,精度達(dá)到12位,最快采樣速率能達(dá)到1us。由于這些優(yōu)勢,STM32能同時對多路傳感器模擬量進行實時采集。12位ADC是一種逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有多達(dá)18個通道,可測量16個外部和2個內(nèi)部信號源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器中。圖4.1.1-1是ADC框架,圖4.1.1-2是引腳。圖4.1.2-1ADC框圖圖4.1.2-2引腳以下是關(guān)于ADC模塊基本參數(shù)設(shè)置步驟:①開啟PA口時鐘和ADC1時鐘,設(shè)置PA1為模擬輸入。GPIO_Init();APB2PeriphClockCmd();②復(fù)位ADC1,同時設(shè)置ADC1分頻因子。RCC_ADCCLKConfig(RCC_PCLK2_Div6);ADC_DeInit(ADC1);③初始化ADC1參數(shù),設(shè)置ADC1的工作模式以及規(guī)則序列的相關(guān)信息。voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct);④使能ADC并校準(zhǔn)。ADC_Cmd(ADC1,ENABLE);⑤配置規(guī)則通道參數(shù):ADC_RegularChannelConfig();⑥開啟軟件轉(zhuǎn)換:ADC_SoftwareStartConvCmd(ADC1);⑦等待轉(zhuǎn)換完成,讀取ADC值。ADC_GetConversionValue(ADC1);4.1.3USART串口協(xié)議串口通信按照USART傳輸協(xié)議進行,每次傳輸一個字符,并保證發(fā)送端和接收端時鐘的同步性。該協(xié)議中每一位表示的意義如下:起始位:規(guī)定以第一位為“0”作為字符傳輸?shù)拈_始信號。數(shù)據(jù)位:用來承載串口要傳輸?shù)淖址?。?shù)據(jù)位一般是個完整的字符,可以由4~8位二進制組成。通常,采用ASCII碼進行字符編碼。從最低位開始傳送,靠時鐘來定位。奇偶校驗位:用來檢驗字符數(shù)據(jù)傳輸?shù)恼_性,通常在數(shù)據(jù)位后面多加一位。“1”表示進行奇校驗,“0”表示偶校驗。停止位:用來標(biāo)識一個字符數(shù)據(jù)已經(jīng)傳輸結(jié)束??梢允?位、1.5位、2位的高電平。空閑位:用來表示當(dāng)前數(shù)據(jù)線是否處于忙碌狀態(tài),“1”狀態(tài)表示暫無數(shù)據(jù)傳輸。波特率:用來衡量字符數(shù)據(jù)傳輸速率,其定義為每秒傳輸?shù)亩M制的位數(shù),即bit個數(shù)。例如,一個文件包含多個字符,每個字符由10位二進制構(gòu)成,并數(shù)據(jù)傳輸速率為150字符/秒,則串口傳輸?shù)牟ㄌ芈蕿?0×150=1500bits/s,即波特率為1500。本系統(tǒng)中,采集數(shù)據(jù)和界面控制指令都是通過USART串口來傳輸?shù)模罢呤菑慕缑娼K端到顯示終端,傳輸?shù)氖嵌嗤ǖ纻鞲袛?shù)據(jù);后者是從顯示終端到云臺終端,傳輸?shù)氖窃婆_運轉(zhuǎn)控制指令。為了對數(shù)據(jù)和指令達(dá)到穩(wěn)定的傳輸效果,需要規(guī)定云臺終端和上位機的通信協(xié)議。同時,要在云臺終端和上位機都定義相應(yīng)的數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法。對于傳感數(shù)據(jù)的傳輸,本系統(tǒng)規(guī)定:每次發(fā)送一個數(shù)據(jù)包,每個數(shù)據(jù)包包含10個數(shù)據(jù),每個數(shù)據(jù)為2個字節(jié)的整型。其中,每個數(shù)據(jù)包正好是10個通道一次穩(wěn)定采樣數(shù)據(jù)的結(jié)果,而每個通道的穩(wěn)定采樣數(shù)據(jù)都是對DMA多次采樣后的均值濾波。由于傳感器數(shù)據(jù)變化緩慢的特點,串口9600bps波特率完全能滿足其變化要求。ADC數(shù)據(jù)采集工作流程如圖4.1.3-1所示。圖4.1.3-1ADC數(shù)據(jù)采集工作流程PC端云臺控制工作流程如圖4.1.3-2所示。圖4.1.3-2PC端云臺控制工作流程前面已經(jīng)提到,STM32提供了一套非常強大的固件庫,該固件庫包含有USART驅(qū)動,通過一系列函數(shù)來支持所有USART通信。本系統(tǒng)通過對底層USART驅(qū)動進行相關(guān)的配置,并根據(jù)需要對數(shù)據(jù)讀寫方法進行了重定向,如圖4.1.3-3所示。圖4.1.3-3USART驅(qū)動設(shè)置鑒于傳感數(shù)據(jù)采樣點都是以兩個字節(jié)輸出的,串口發(fā)送函數(shù)定義了對整型數(shù)據(jù)以及整型數(shù)組傳輸?shù)姆椒ǎ簐oidPPP0_USART_PutInt(u16dat);//發(fā)送整型數(shù)據(jù)voidPPP0_USART_PutIntTable(constu16*tab,u8len);//發(fā)送整型數(shù)表對于云臺控制命令的接收函數(shù),采用串口中斷服務(wù)來實現(xiàn)。首先,通過STM32提供的NVIC(嵌套中斷向量控制器),對串口中斷號以及中斷優(yōu)先級進行設(shè)置;然后,在串口屬性配置中,開啟接收中斷服務(wù)功能;最后,在串口中斷服務(wù)程序中,編寫串口數(shù)據(jù)接收代碼。具體實現(xiàn)方法如下:NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//選串口1NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//設(shè)優(yōu)先級USART_ITConfig(PPP0_USART,USART_IT_RXNE,ENABLE);//使能接收voidUSART1_IRQHandler(void);//編寫串口中斷服務(wù)程4.2上位機Qt開發(fā)框架QtCreator是一個用于Qt開發(fā)的輕量級跨平臺集成開發(fā)環(huán)境。QtCreator可帶來兩大關(guān)鍵益處:提供首個專為支持跨平臺開發(fā)而設(shè)計的集成開發(fā)環(huán)境(IDE),并確保首次接觸Qt框架的開發(fā)人員能迅速上手和操作。即使不開發(fā)Qt應(yīng)用程序,QtCreator也是一個簡單易用且功能強大的IDE。QtCreator包含了一套用于創(chuàng)建和測試基于Qt應(yīng)用程序的高效工具,包括:一個高級的C++代碼編輯器上下文感知幫助系統(tǒng)可視化調(diào)試器源代碼管理項目和構(gòu)建管理工具。所以,我選擇利用Qt應(yīng)用程序開發(fā),來設(shè)計一個顯示終端,實現(xiàn)顯示和操作功能。接受來自下位機STM32采集的數(shù)據(jù)并顯示,同時通過USART串口傳送指令,控制下位機。4.2.1Qt開發(fā)Qt是一個基于C++開發(fā)的可移植、跨平臺的用戶圖形界面庫,它包含有大量非常美觀、實用的組件,以及非常優(yōu)秀的信號槽機制,可以實現(xiàn)真正的面向組件編程。在桌面應(yīng)用、嵌入式系統(tǒng)以及移動平臺上,Qt開發(fā)框架都得到廣泛的使用。其最大的優(yōu)勢體現(xiàn)在如下三個方面:首先,Qt框架中提出了信號槽機制,來實現(xiàn)組件對象之間的通信。相對傳統(tǒng)MFC中的消息驅(qū)動機制,信號槽實現(xiàn)了對象之間真正的隔離,降低了系統(tǒng)中不同對象的耦合度,方便了系統(tǒng)的維護和擴展。其次,Qt本質(zhì)是基于C++開發(fā)的圖形界面庫,它以模塊的形式組織在一起,由Qt內(nèi)核框架統(tǒng)一管理和調(diào)用。Qt提供了許多模塊,用于GUI界面的設(shè)計和優(yōu)化。其中,QtGui模塊負(fù)責(zé)底層界面的運作,QtWidgets包含了大量實用的可視化組件。并支持2D/3D圖形渲染,支持OpenGL。這使得Qt在GUI界面設(shè)計上實現(xiàn)了真正的組件、可視化編程,用戶只需要調(diào)用集成的Widget組件,就可以設(shè)計出非常友好的界面。最后,Qt提供了豐富的API,用于數(shù)據(jù)傳輸方面,如SQL模塊、串口模塊、網(wǎng)絡(luò)模塊、以及藍(lán)牙模塊。其中,SQL模塊用于應(yīng)用程序和數(shù)據(jù)庫實時交互,串口模塊和網(wǎng)絡(luò)模塊可實現(xiàn)下位機和PC工控機的實時通訊。充分利用Qt強大的圖形界面庫和可移植特性,實現(xiàn)數(shù)據(jù)顯示終端的跨平臺和多終端功能。QtCreator是為編寫Qt應(yīng)用程序而設(shè)計的IDE環(huán)境,它具有良好的跨平臺特性,可以在Windows、Linux和MacOS系統(tǒng)下運行。其開發(fā)環(huán)境如圖4.2.1-1所示。圖4.2.1-1Qt編輯界面通過Qt這些強大的功能,我們可以設(shè)計一個很完美的顯示終端。顯示終端為不僅為用戶提供了一個非常友好的顯示界面,還提供了靈活的控制面板和配置選項。顯示終端,可以協(xié)調(diào)多種不同類型的數(shù)據(jù),包括用戶輸入、內(nèi)部信號以及外部數(shù)據(jù)。而外部數(shù)據(jù)又有波形數(shù)據(jù)和傳感數(shù)據(jù)兩種輸入數(shù)據(jù),以及云臺控制的輸出數(shù)據(jù)。下面對顯示終端和用戶交互界面的軟件整體結(jié)構(gòu)和用例進行簡單的分析。顯示終端和用戶交互主要完成兩個工作,一是將數(shù)據(jù)呈現(xiàn)出來,二是方便用戶交互式控制。在本設(shè)計中,采用MVC設(shè)計模式,將數(shù)據(jù)和視圖分離。數(shù)據(jù)就是有下位機傳輸?shù)牟ㄐ螖?shù)據(jù),視圖就是動態(tài)波形圖。其中數(shù)據(jù)由SerialPort模塊來接受數(shù)據(jù),視圖部分主要由CustomPlot模塊來完成,根據(jù)不同的數(shù)據(jù)自動生成相應(yīng)的顯示視圖。其中,對于波形數(shù)據(jù)的輸入,則以虛擬示波器的外觀來動態(tài)顯示輸入波形信號。對于傳感數(shù)據(jù)的輸入,可實現(xiàn)多通道環(huán)境參數(shù)的顯示,并且自動適應(yīng)屏幕大小,調(diào)整顯示柵格??刂撇糠种饕蒞orkPannel模塊來完成,通過接收用戶指令和輸入數(shù)據(jù),切換到不同的工作模式。此外,WorkPannel模塊需要協(xié)調(diào)不同接口數(shù)據(jù)的傳輸速率,以保證數(shù)據(jù)既能實時更新又能穩(wěn)定顯示。顯示終端主要負(fù)責(zé)數(shù)據(jù)的傳遞、數(shù)據(jù)顯示和用戶交互。Qt提供了一種信號槽機制,可以實現(xiàn)不同組件對象之間無縫通信。內(nèi)部數(shù)據(jù)的產(chǎn)生、外部數(shù)據(jù)的傳輸、用戶數(shù)據(jù)的獲取以及顯示區(qū)數(shù)據(jù)的推送,都是以類的形式封裝于具體的模塊中。下面對這些模塊的具體實現(xiàn)進行詳細(xì)分析,以及各個模塊中不同工作模式進行簡單介紹。為了滿足對環(huán)境參數(shù)和視頻圖像的實時顯示,本系統(tǒng)在顯示終端部分設(shè)計了五大模塊,每個模塊由一個類來實現(xiàn),即顯示模塊(CustomPlotClass)、串口通信模塊(SerialPortClass)和控制面板模塊(WorkPannelClass)。顯示終端的幾個重要模塊如圖4.2.1-2所示。圖4.2.1-2顯示終端的幾個重要模塊(1)CustomPlot模塊設(shè)計CustomPlot模塊主要負(fù)責(zé)動態(tài)實時波形的顯示。本系統(tǒng)使用了Qt獨有的雙緩沖重繪機制,實現(xiàn)了動態(tài)曲線和視頻圖像的穩(wěn)定顯示。本設(shè)計中,CustomPlot顯示區(qū)的刷新頻率是通過定時器來控制的。//CustomPlot的基礎(chǔ)功能設(shè)置m_CustomPlot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom|QCP::iMultiSelect|QCP::iSelectOther|QCP::iSelectItems);基礎(chǔ)功能共有以下幾種,大體意思是:1、軸可拖動;2、通過鼠標(biāo)滾輪改變軸顯示范圍;3、用戶可以選擇多個對象設(shè)定的修飾符(不是特別明白);4、圖形是可選的;5、軸是可選的;6、圖例是可選的;//設(shè)置矩形邊框m_CustomPlot->axisRect()->setupFullAxesBox();//清空CustomPlot中的圖形m_CustomPlot->clearGraphs();//在CustomPlot中添加圖形m_CustomPlot->addGraph();//設(shè)置圖形中的數(shù)據(jù)m_x和m_y是兩個QVector容器m_CustomPlot->graph(0)->setData(m_x,m_y);//這個是設(shè)置圖形顯示為合適范圍(感覺設(shè)置的只是Y軸)m_CustomPlot->graph(0)->rescaleValueAxis(true);//設(shè)置X軸的顯示范圍(這里是4條軸,x是下面那條,x2是上面那條,Y是先左后右)m_CustomPlot->xAxis->setRange(m_x.at(0)-1,m_x.at(m_x.size()-1)+1);//刷新m_CustomPlot中數(shù)據(jù)m_CustomPlot->replot();為了實現(xiàn)數(shù)據(jù)的更好顯示,本系統(tǒng)定義了scaleData()函數(shù)來對輸入數(shù)據(jù)進行規(guī)范化處理,包括數(shù)據(jù)點數(shù)的約束和數(shù)據(jù)大小的歸一化處理。其中,數(shù)據(jù)點數(shù)約束在800內(nèi)(每個數(shù)據(jù)點需要兩個像素點顯示),保證適應(yīng)大多數(shù)桌面屏幕。設(shè)計中通過設(shè)置定時器,調(diào)用updateBuffer()方法,來刷新波形緩沖器,然后將數(shù)據(jù)不斷送出,以實現(xiàn)波形的連續(xù)顯示。而波形數(shù)據(jù)的原型數(shù)據(jù)點由相應(yīng)的波形發(fā)生函數(shù)產(chǎn)生,如sinWave()、rectWave()、triWave()和samWave()。此外,還可以通過set和get方法對具體波形發(fā)生器的參數(shù)進行設(shè)置,如幅度、周期等。(2)SerialPort模塊設(shè)計SerialPort模塊是對串口接口數(shù)據(jù)的封裝,包括串口的識別、初始化配置、數(shù)據(jù)的讀寫和規(guī)范化處理等。Qt對串口進行了良好的封裝,而且可以自動識別當(dāng)前系統(tǒng)可用的串口信息。設(shè)計的重點集中于串口通信的配置、數(shù)據(jù)的讀寫和規(guī)范化處理。此模塊涉及三個重要的對象指針,如下所示:QSerialPort*com;//串口對象QSerialPortInfo*info;//可用串口信息QTimer*timer;//掃描定時器,用于監(jiān)視掃描串口數(shù)據(jù)對于串口數(shù)據(jù)的讀寫,Qt已經(jīng)封裝了許多非常方便的方法,本設(shè)計使用com對象的putChar(charch)方法來發(fā)送,使用readAll()方法來讀取數(shù)據(jù),然后定義兩個新的接口函數(shù),如下所示:voidsendStringToCom(constQString&strCom);voidrecvStringFromCom(QString&strDat(a);(3)WorkPannel模塊設(shè)計WorkPannel模塊是最重要的部分,主要完成三方面的工作,一是協(xié)調(diào)各模塊接口數(shù)據(jù)的傳輸;二是實現(xiàn)用戶界面的交互;三是對顯示終端、控制面板以及工作流程的管理和控制。同時,此模塊需要送出的數(shù)據(jù)有兩種,包括顯示器模塊和串口模塊,分別由兩個函數(shù)來完成。voidloadFromSignals();//從信號源加載voidloadFromSerialPort();//從串口加載voidsendToDisplay();//推送到顯示器voidsendToSerialPort();//推送到串口為了實現(xiàn)更好的用戶交互界面和豐富的功能,本系統(tǒng)提高了多種槽函數(shù),以響應(yīng)用戶界面的控制和參數(shù)設(shè)置,如工作模式的切換、波形幅度周期的調(diào)整、數(shù)據(jù)源的選擇、數(shù)據(jù)類型的選擇、傳輸模式的切換等。voidselectDispChannel();//設(shè)置顯示通道voidselectSigChannel();//設(shè)置信號通道voidselectDataSource();//設(shè)置數(shù)據(jù)源voidselectDataFormat();//設(shè)置數(shù)據(jù)格式第五章實物展示5.1硬件總體及功能介紹硬件主要由下位機MiniSTM32和上位機(PC機)構(gòu)成。當(dāng)系統(tǒng)程序運行之后,在上位機終端操作顯示界面,先配置串口,比如串口端口、比特率、停止位、數(shù)據(jù)位以及校驗位,然后打開串口,與我們的下位機串口建立連接。這時我們選擇CH1(通道1)和波形,點擊確認(rèn),上位機通過串口將此指令傳給下位機。待下位機將信息傳送至上位機,通過QCustomPlot模塊把數(shù)據(jù)信息以波形的形式繪制出來。同時,在數(shù)值板塊得出我們的峰峰值、最大值、最小值和平均值,甚至可以將我們的波形截圖保存下來。通過調(diào)節(jié)板塊可以改變幅值、周期,改變Y1位移和Y2位移。想看其他波形點擊波形選擇按鈕,再點擊確認(rèn)就可以了。如圖5.1所示。圖5.1上位機操作顯示界面下位機主要就三大模塊:D/A、A/D和USART。程序運行之后,待上位機將指令傳送到,然后下位機開始工作。首先由D/A模塊模擬輸出信號,然后由ADC

溫馨提示

  • 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

提交評論