【《基于STM32的便攜式數(shù)字示波器設(shè)計(jì)》13000字(論文)】_第1頁(yè)
【《基于STM32的便攜式數(shù)字示波器設(shè)計(jì)》13000字(論文)】_第2頁(yè)
【《基于STM32的便攜式數(shù)字示波器設(shè)計(jì)》13000字(論文)】_第3頁(yè)
【《基于STM32的便攜式數(shù)字示波器設(shè)計(jì)》13000字(論文)】_第4頁(yè)
【《基于STM32的便攜式數(shù)字示波器設(shè)計(jì)》13000字(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

緒論1.1研究目的及意義1.1.1研究目的示波器以來(lái)都是伴隨著每一位電子工程師身邊的測(cè)量三件套之一,他具有協(xié)助研究不同電現(xiàn)象的變化過(guò)程的功能。示波器的工作原理是通過(guò)高速電子束以打點(diǎn)的方式,將被采集到的電信號(hào)幅值以時(shí)間為坐標(biāo)繪制出來(lái)。部分功能較為齊全的示波器也會(huì)對(duì)被測(cè)量信號(hào)的電流、電壓、頻率、相位差、調(diào)幅度等參數(shù)進(jìn)行檢測(cè)。示波器大致分為普通、多用、多線、多蹤、取樣、記憶和數(shù)字7類。本次研究主要目的是將示波器的前級(jí)調(diào)理電路與單片機(jī)相結(jié)合,制作出一款簡(jiǎn)易便攜的波形顯示裝置。其工作原理是將經(jīng)過(guò)前級(jí)調(diào)理的被測(cè)信號(hào)由模數(shù)(A/D)轉(zhuǎn)換器進(jìn)行捕獲,隨后送入數(shù)據(jù)存儲(chǔ)器,最后通過(guò)軟件算法完成信號(hào)的處理與波形的繪制。傳統(tǒng)數(shù)字示波器功能非常強(qiáng)大,其不僅精度高,且可以直接對(duì)被測(cè)信號(hào)進(jìn)行加、減、乘、除、求平均值、求平方根和求均方根等操作。便攜式數(shù)字示波器得益于其體積較小,重量較輕,便于隨身攜帶的特點(diǎn),可以隨時(shí)使用,對(duì)于檢測(cè)環(huán)境的要求不高。但是相對(duì)的,傳統(tǒng)示波器的大體積、高集成的優(yōu)點(diǎn),在采樣頻率、模擬帶寬、采集精度和緩沖器深度上遠(yuǎn)強(qiáng)于便攜式示波器,同時(shí)一些后期的一些賦值計(jì)算、信號(hào)處理等功能也是便攜式示波器做不到的。因此便攜式示波器在保證其小巧的特點(diǎn)外,應(yīng)當(dāng)盡可能的提升其精度,拓展其功能。1.1.2研究意義傳統(tǒng)的示波器由于其工作原理的限制,體積較大,不便于攜帶。電子工程師在進(jìn)行測(cè)試時(shí)不一定具備類似于實(shí)驗(yàn)室的良好測(cè)量條件。甚至可能會(huì)需要隨時(shí)各地奔波或者狹小空間內(nèi)進(jìn)行測(cè)試,在這種環(huán)境下,傳統(tǒng)示波器的弊端就會(huì)顯現(xiàn)出來(lái)。于是,為了解決這一難題,便攜式示波器存在的意義就顯得至關(guān)重要。1.2國(guó)內(nèi)外研究現(xiàn)狀1.2.1國(guó)外研究現(xiàn)狀早在2012年,美國(guó)福祿克公司推出Fluke@190II系列500MHzScopeMeter測(cè)試工具,該款測(cè)試工具采樣速率達(dá)到了5GS/S,最大采用頻率為500KHz。該測(cè)量工具在工藝上也頗具優(yōu)點(diǎn),在設(shè)計(jì)之處就設(shè)定了較高的安全標(biāo)準(zhǔn),因此具堅(jiān)固可靠和待機(jī)時(shí)間長(zhǎng)等特色。在當(dāng)下,專業(yè)型電子排障工具具備高性能的帶寬和分辨率范圍,工作范圍越來(lái)越廣泛,工作場(chǎng)景要求越來(lái)越低[1]。2014年,來(lái)自美國(guó)的作者DanzerPaul[2]在QST:Devotedentirelytoamateurradio雜志上刊登了一篇關(guān)于Oscium發(fā)布的一款基于iMSO-204x的便攜式示波器。該款示波器體積很小,沒(méi)有顯示屏,但是可以通過(guò)Lighting接口來(lái)連接ipad和iPhone來(lái)達(dá)成顯示效果。硬件系統(tǒng)擁有采樣率為50Msps的兩個(gè)模擬通道和四個(gè)數(shù)字通道,具有5MHz的帶寬,并在200ns/DIV到10s/DIV的范圍內(nèi)進(jìn)行縮放。其對(duì)應(yīng)的應(yīng)用軟件名為imso2,可在AppStore免費(fèi)下載。但是該款示波器最大輸入數(shù)字電壓僅為-0.5V-7V,超出幅值則無(wú)法測(cè)量,存在一定缺陷。1.2.2國(guó)內(nèi)研究現(xiàn)狀在我國(guó)早在2006年就已經(jīng)有學(xué)者提出了基于ARM的數(shù)字示波器,但是由于當(dāng)時(shí)單片機(jī)行業(yè)還在發(fā)展階段,低成本芯片性能不足,高成本芯片得不償失,因此研究一直處于一個(gè)構(gòu)思與展望的階段,之后的十年里一直有新的便攜式示波器思路提出并發(fā)表。之后隨著ST公司32系列的高性能產(chǎn)品逐步上市,便攜式示波器便開(kāi)啟了屬于它的時(shí)代。2019年,徐建和唐胤兩位學(xué)者設(shè)計(jì)了以STM32微處理器作為控制核心,加入外部信號(hào)處理單元,利用DMA技術(shù)進(jìn)行采樣數(shù)據(jù)輸送,FSMC接口來(lái)驅(qū)動(dòng)LCD,并移植μ/COS-Ⅱ?qū)崟r(shí)操作系統(tǒng),該研究在功能上、體積上、成本上有著很大的優(yōu)勢(shì)。通過(guò)YB1605多用信號(hào)發(fā)生器測(cè)試的結(jié)果表明,這次研究的產(chǎn)品性價(jià)比高,使用方便而且可以實(shí)現(xiàn)波形的存儲(chǔ),以及斷電重啟后的波形重現(xiàn)功能,具有廣闊的應(yīng)用前景[3]。同樣在2019年,肖軍,涂強(qiáng),林月樺等幾位學(xué)者也利用STM32處理器加Qt上位機(jī)結(jié)合的開(kāi)發(fā)方式,研究了一款主要以教學(xué)展示為目的的便攜式混合信號(hào)示波器。該示波器不僅具備示波器的功能,還有邏輯分析儀的功能。該系統(tǒng)由下位機(jī)采集被測(cè)信號(hào),可以通過(guò)用戶指令來(lái)切換工作方式,最終利用USB-TTL接口將數(shù)據(jù)發(fā)送至上位機(jī)并完成波形的繪制。同時(shí)上位機(jī)具備自動(dòng)和手動(dòng)兩種工作方式來(lái)顯示的周期,幅值等參數(shù)[4]。2020年,丁磊、董標(biāo)、韓磊等幾位學(xué)者進(jìn)行了更加大膽的研究,在基于STM32的便攜式示波器上加入了太陽(yáng)能充電的功能。在前人的研究基礎(chǔ)上解決了需要隨時(shí)供電的缺陷,具備自充電功能使得戶外信號(hào)研究的方法逐漸多樣化。也使得便攜式示波器具備艱苦環(huán)境下的檢測(cè)的能力[5]。1.3研究?jī)?nèi)容及方法1.3.1研究?jī)?nèi)容本設(shè)計(jì)的研究目標(biāo)是以單片機(jī)和外圍電路的基礎(chǔ)上搭建一個(gè)完整的便攜式數(shù)字示波器系統(tǒng),以及結(jié)合嵌入式實(shí)時(shí)操作系統(tǒng)來(lái)完成系統(tǒng)程序的編寫(xiě)、系統(tǒng)處理程序的編寫(xiě)。本次便攜式數(shù)字示波器包含以下幾項(xiàng)功能指標(biāo):(1)通過(guò)在STM32上移植μ/COS-Ⅱ?qū)崟r(shí)操作系統(tǒng)在保證系統(tǒng)穩(wěn)定性;(2)完成前級(jí)調(diào)理電路的設(shè)計(jì),主要包括阻容衰減電路、阻抗變換電路、電平移位電路、程控增益電路以及低通濾波電路;(3)實(shí)時(shí)采樣頻率為1Msps,模擬頻帶寬度0—200KHz,精度為12Bit,取樣緩沖器深度1024字節(jié);(4)垂直靈敏度范圍要求10Mv/Div-5V/Div,水平時(shí)基范圍要求10us/Div-50s/Div;(5)要求可觀測(cè)觸發(fā)之前的波形(負(fù)延遲),可隨時(shí)凍結(jié)波形的顯示(HOLD功能);(6)頻率測(cè)量誤差不超過(guò)5%;1.3.2研究方法(1)調(diào)查法調(diào)查法即通過(guò)問(wèn)卷、談話、測(cè)驗(yàn)、案例探究等方式來(lái)搜集相關(guān)信息,并通過(guò)綜合、比較、歸納等方式得出結(jié)論。在本次研究中,我采訪了多位電子工程師以及大學(xué)教師,了解到了便攜式示波器的設(shè)計(jì)意義、設(shè)計(jì)需求和設(shè)計(jì)方式等。便攜式的數(shù)字示波器深受經(jīng)常在野外環(huán)境下工作的電子工程師青睞。同時(shí)大學(xué)教師也表示在教學(xué)過(guò)程中很多時(shí)候無(wú)需使用體積龐大的示波器,相對(duì)來(lái)說(shuō)便攜式更適合課堂環(huán)境。(2)文獻(xiàn)研究法文獻(xiàn)研究法即根據(jù)固定課題,尋找文獻(xiàn)的方式來(lái)研究。文獻(xiàn)研究法的概念較為廣泛,其科學(xué)性、體系性和適配性稍差。但隨著數(shù)字?jǐn)?shù)據(jù)庫(kù)和信息整合技術(shù)的成熟,根植于文獻(xiàn)研究的文獻(xiàn)計(jì)量、文獻(xiàn)社會(huì)網(wǎng)絡(luò)分析、文獻(xiàn)數(shù)字化研究,已經(jīng)納入社會(huì)科學(xué)研究范疇,逐步成為人文社科主要研究方法之一。[6](3)實(shí)驗(yàn)法實(shí)驗(yàn)法是理工類學(xué)科最為常用的研究方法。通過(guò)不斷的實(shí)驗(yàn)、記錄數(shù)據(jù)和對(duì)比歸納的方式[7],來(lái)研究便攜式示波器程序最為高校、最為科學(xué)的編寫(xiě)方法。同時(shí)外圍電路的器件參數(shù)需要通過(guò)多次實(shí)驗(yàn)來(lái)尋找最為合適的值。2便攜式數(shù)字示波器總體設(shè)計(jì)方案2.1便攜式數(shù)字示波器整體設(shè)計(jì)方案系統(tǒng)框圖如下圖2-1所示:圖2-1整體設(shè)計(jì)框圖整個(gè)系統(tǒng)分為四大部分,分別是前級(jí)調(diào)理電路模塊、核心控制模塊、液晶屏模塊、電源模塊組成。對(duì)于數(shù)字示波器而言,單片機(jī)的AD直接對(duì)輸入信號(hào)進(jìn)行采集是十分危險(xiǎn)的行為。因?yàn)榇郎y(cè)信號(hào)存在很強(qiáng)的不確定性,且其電壓值可能遠(yuǎn)遠(yuǎn)大于單片機(jī)引腳的工作電壓,導(dǎo)致?lián)舸?。因此必須要?duì)待測(cè)信號(hào)的相位和幅度做出線性處理[8]。其中前級(jí)調(diào)理電路分為阻容衰減、電平移位、程控增益和低通濾波四個(gè)部分。核心控制模塊主要有STM32單片機(jī)內(nèi)部的定時(shí)器、A/D采集和DMA構(gòu)成,作用在于采集信號(hào)并進(jìn)行處理,最終通過(guò)FSMC接口驅(qū)動(dòng)液晶屏顯示波形。2.2便攜式數(shù)字示波器硬件的選擇與論證2.2.1前級(jí)調(diào)理電路的論證與選擇在使用一款數(shù)字示波器對(duì)信號(hào)檢測(cè)時(shí),被測(cè)信號(hào)肯定是不能直接交由ADC來(lái)進(jìn)行采集。初始的被測(cè)信號(hào)必須要通過(guò)前級(jí)調(diào)理電路來(lái)對(duì)其相位和幅度等參數(shù)進(jìn)行一定線性處理后方可交由ADC采集。根據(jù)本次設(shè)計(jì)要求,前級(jí)信號(hào)調(diào)理電路作用有很多,一是對(duì)信號(hào)進(jìn)行補(bǔ)償,所以需要選擇阻容衰減電路。二需要防止信號(hào)出現(xiàn)失真,所以需要選擇OPA656集成運(yùn)放器來(lái)完成該功能,該芯片頻帶寬且增益穩(wěn)定,十分吻合本次設(shè)計(jì)需求。三是需要對(duì)微弱信號(hào)進(jìn)行程控增益,所以選擇了CD4051BC芯片來(lái)完成程控增益電路的設(shè)計(jì)。而信號(hào)最后的濾波處理,選取了UAF42濾波模塊,該模塊可以自主選擇低通、高通、帶通和帶阻的輸出方式來(lái)供使用者選擇,這樣被處理的信號(hào)即可交由ADC采集。2.2.2核心控制模塊的論證與選擇(1)STM32系列單片機(jī)STM32是當(dāng)下一款的熱門(mén)的主流單片機(jī),由意法半導(dǎo)體公司設(shè)計(jì)與開(kāi)發(fā)。其具有高性能、功耗低、成本低的特點(diǎn)。本次設(shè)計(jì)選取的STM32F103系列使用ARM公司的CortexM3架構(gòu),提供一流的外設(shè)來(lái)讓開(kāi)發(fā)者使用。盡管F1系列存在內(nèi)存較小,性能較弱的缺點(diǎn),且外圍電路需要自行設(shè)計(jì),但是得益于其優(yōu)秀的性價(jià)比和簡(jiǎn)單上手的難度,非常適合本次設(shè)計(jì)。Zynq系列可擴(kuò)展平臺(tái)ZYNQ系列是當(dāng)下炙手可熱的一款可擴(kuò)展處理平臺(tái),由賽靈思公司(Xilinx)推出。可編程邏輯基于賽靈思的FPGA架構(gòu)來(lái)設(shè)計(jì),并且板上集合一塊ARM核芯片,是一款片上系統(tǒng)(SOC)。FPGA和ARM之間的連線也是在芯片內(nèi)部完成,做一些嵌入式異構(gòu)計(jì)算的嵌入式系統(tǒng),不需要再去設(shè)計(jì)單片機(jī)和FPGA之間的數(shù)據(jù)總線。由于其片上系統(tǒng)的特點(diǎn),ZYNQ系列平臺(tái)可拓展性非常強(qiáng),可以先通過(guò)PS端對(duì)硬件上進(jìn)行邏輯設(shè)計(jì),再通過(guò)PL端的軟件設(shè)計(jì)完成最終產(chǎn)品。盡管該系列平臺(tái)性能強(qiáng)大,拓展性強(qiáng),但是成本較高且設(shè)計(jì)較為復(fù)雜,對(duì)于便攜式數(shù)字示波器來(lái)說(shuō)顯得有些性能過(guò)剩,得不償失。同時(shí)FPGA可擴(kuò)展平臺(tái)雖然方便好用但是不符合前級(jí)調(diào)理電路的要求。STM32F1系列單片機(jī)盡管性能有所欠缺,但是足以勝任本次研究。2.3系統(tǒng)軟件開(kāi)發(fā)環(huán)境簡(jiǎn)介2.3.1KeilMDK5在當(dāng)今所有的嵌入式開(kāi)發(fā)軟件中,德國(guó)-美國(guó)聯(lián)合的Keil公司下KeilSoftware部門(mén)所推出的KeilMDK5絕對(duì)是最為熱門(mén)的一款。該款開(kāi)發(fā)系統(tǒng)使用C/C++作為開(kāi)發(fā)語(yǔ)言,結(jié)構(gòu)性強(qiáng),靈活度高。Keil提供了不僅包括C語(yǔ)言所應(yīng)有的編譯器與鏈接器,還具備強(qiáng)大的實(shí)時(shí)仿真調(diào)試功能及庫(kù)管理功能。最終,將所有功能匯聚在一起并與μVision集成開(kāi)發(fā)環(huán)境結(jié)合,成為KeilMDK[9]。KeilMDK5是該公司于2013年推出的最新一款開(kāi)發(fā)系統(tǒng),它擯棄了傳統(tǒng)的將芯片資料嵌入到開(kāi)發(fā)環(huán)境的做法,而是直接以資料包的形式安裝進(jìn)開(kāi)發(fā)環(huán)境中。這樣的好處是有效的節(jié)省了存儲(chǔ)空間的占用,并給開(kāi)發(fā)者提供了很大的便利性。同時(shí),ST公司在近些年還推出了STM32CubeMx開(kāi)發(fā)工具,該款開(kāi)發(fā)工具覆蓋了STM32全系列芯片,支持MDK、IAR等多款開(kāi)發(fā)環(huán)境,主要以HAL庫(kù)開(kāi)發(fā)為基礎(chǔ)。開(kāi)發(fā)者在使用過(guò)程中可以進(jìn)行根據(jù)用戶需求來(lái)進(jìn)行圖形化外設(shè)配置,并自動(dòng)生成C語(yǔ)言項(xiàng)目程序,使用時(shí)可以將更多精力放在軟件算法的設(shè)計(jì)上,而不是在驅(qū)動(dòng)外設(shè)配置程序上花費(fèi)大量的時(shí)間。在本次設(shè)計(jì)中,我們采用了KeilMDK5加上CubeMx的組合。2.3.2C語(yǔ)言C語(yǔ)言1976年誕生于貝爾實(shí)驗(yàn)室,是面向過(guò)程,可直接操作內(nèi)存的一款高級(jí)語(yǔ)言。盡管作為一個(gè)高級(jí)語(yǔ)言但是其兼顧了匯編語(yǔ)言的特點(diǎn),可以直接對(duì)內(nèi)存或寄存器進(jìn)行操作,效率很高。通過(guò)有關(guān)測(cè)試證明,C語(yǔ)言西橫須僅僅比匯編語(yǔ)言的程序效率低大概10%~20%[10]。不過(guò)隨著計(jì)算機(jī)語(yǔ)言技術(shù)的突飛猛進(jìn),根據(jù)使用需求發(fā)展出來(lái)了更多偏向與軟件設(shè)計(jì)的語(yǔ)言。因此C語(yǔ)言現(xiàn)在的應(yīng)用場(chǎng)景更多的放在了底層,比如嵌入式、操作系統(tǒng)等。2.3.3UCOS-III嵌入式實(shí)時(shí)操作系統(tǒng)在最早的嵌入式開(kāi)發(fā)中是直接對(duì)裸機(jī)進(jìn)行操作,沒(méi)有其他程序的介入。這種開(kāi)發(fā)方式會(huì)通過(guò)將程序分為前臺(tái)和后臺(tái),分別指中斷服務(wù)程序和主循環(huán)。但隨著單片機(jī)的發(fā)展,裸機(jī)的操作方式會(huì)難以處理較為復(fù)雜的程序。同時(shí)單循環(huán)程序局限性非常大,不同功能直接回相互影響,因此才會(huì)有人開(kāi)發(fā)了嵌入式實(shí)時(shí)操作系統(tǒng)來(lái)解決該問(wèn)題。實(shí)時(shí)操作系統(tǒng)(RTOS)強(qiáng)調(diào)的是實(shí)時(shí)性,它將不同的任務(wù)劃分成一個(gè)個(gè)的線程,分開(kāi)運(yùn)行。通過(guò)時(shí)間片輪轉(zhuǎn)調(diào)度算法,給每個(gè)線程賦予固定的運(yùn)行時(shí)間,各個(gè)線程之間互不干擾,從而達(dá)到多任務(wù)運(yùn)行的結(jié)果。在本次設(shè)計(jì)中,也需要通過(guò)單片機(jī)來(lái)處理多個(gè)系統(tǒng)任務(wù),所以選擇了UCOS-III操作系統(tǒng)來(lái)完成設(shè)計(jì)。UCOS由Micrium公司出品的,目前有II和III兩個(gè)版本。它具備操作系統(tǒng)應(yīng)有的資源管理、同步、任務(wù)通信等功能。UCOS是采用以C語(yǔ)言為主體,匯編語(yǔ)言輔助的架構(gòu),即可向上便于開(kāi)發(fā),又可向下操作處理器,結(jié)構(gòu)相對(duì)簡(jiǎn)介,可讀性強(qiáng),非常便于開(kāi)發(fā),出現(xiàn)問(wèn)題時(shí)可以直接查閱底層,從根源尋找問(wèn)題。值得注意的是,和傳統(tǒng)的Windows或者Linux操作系統(tǒng)不同的是,嵌入式實(shí)時(shí)操作系統(tǒng)屬于將系統(tǒng)代碼嵌入到程序之中,對(duì)于單片機(jī)來(lái)說(shuō)還是裸機(jī)運(yùn)行,但是通過(guò)軟件來(lái)實(shí)現(xiàn)任務(wù)調(diào)度。3便攜式數(shù)字示波器硬件設(shè)計(jì)與實(shí)現(xiàn)3.1核心控制器及其外設(shè)設(shè)計(jì)與實(shí)現(xiàn)3.1.1STM32F103ZET6STM32是嵌入式系統(tǒng)開(kāi)發(fā)中最受歡迎的一款單片機(jī)。在本次設(shè)計(jì)中所選取的是其F1系列,工作頻率為72MHz,由2.0-3.6V的直流電源供電。片上集成有Flash和SRAM存儲(chǔ)器,芯片內(nèi)部擁有3個(gè)可以結(jié)合DMA使用的12位精度ADC,這是設(shè)計(jì)便攜式數(shù)字示波器是最為關(guān)鍵的外設(shè)。同時(shí)STM32F1還擁有普通定時(shí)器、高級(jí)定時(shí)器和看門(mén)狗定時(shí)器的外設(shè)。在本次設(shè)計(jì)中,由定時(shí)器產(chǎn)生的時(shí)間脈沖來(lái)使ADC進(jìn)行規(guī)律采集,并可以通過(guò)特定的脈沖來(lái)使DAC產(chǎn)生測(cè)試波形,形成自測(cè)試功能。本次設(shè)計(jì)硬件平臺(tái)正點(diǎn)原子精英版STM32開(kāi)發(fā)板,如圖3-1:圖3-1STM32F103ZET6開(kāi)發(fā)板3.1.2A/D轉(zhuǎn)換器(ADC)STM32F103系列有3個(gè)精度為12位的模數(shù)轉(zhuǎn)換器。在本次設(shè)計(jì)過(guò)程中所采用的ADC1擁有16個(gè)外部通道,各通道可以根據(jù)設(shè)計(jì)需求選擇單次、連續(xù)、掃描或間斷執(zhí)行的工作方式,最終可以選擇左對(duì)齊或者右對(duì)齊的方式將結(jié)果儲(chǔ)存至Flash。在STM32F1的時(shí)鐘樹(shù)里,ADC的時(shí)鐘頻率由PCLK2分頻產(chǎn)生,最大工作時(shí)鐘頻率不得超過(guò)14MHz,頻率過(guò)高會(huì)導(dǎo)致采樣精度嚴(yán)重下降。ADC輸入范圍為0-3.3V,采集幅值大于該值的信號(hào)可能會(huì)造成擊穿,在使用中應(yīng)當(dāng)特別注意。與通信協(xié)議類似,ADC也有其觸發(fā)信號(hào)。一是修改控制寄存器CR2的ADON位的電平來(lái)觸發(fā)信號(hào)采集的啟停。在STM32所提供的官方庫(kù)中有關(guān)于該寄存器的API函數(shù),直接調(diào)用即可進(jìn)行開(kāi)啟或關(guān)閉。二是通過(guò)中斷觸發(fā),可以使用定時(shí)器或者外部中斷來(lái)發(fā)送觸發(fā)信號(hào)。在本次設(shè)計(jì)中即采用定時(shí)器中斷來(lái)讓ADC進(jìn)行周期性的轉(zhuǎn)換。在ADC采集過(guò)程中,還需要注意的參數(shù)時(shí)輸入時(shí)鐘、采樣周期和轉(zhuǎn)換時(shí)間,他們之間的關(guān)系為轉(zhuǎn)換時(shí)間=采樣時(shí)間+12.5個(gè)周期,其中12.5個(gè)周期為常量不可更改。采集時(shí)鐘周期設(shè)置是完全建立在輸入時(shí)鐘周期之上進(jìn)行的,在初始化了輸入時(shí)鐘后才可確定采樣周期的數(shù)值。同時(shí)該系列單片機(jī)有一大特色是每個(gè)ADC通道可以配置不同的采樣周期,數(shù)值越小精度越高。在本次設(shè)計(jì)過(guò)程中,采用的是單通道單次采集的工作方式,ADC被分配的時(shí)鐘為是12M(該值已經(jīng)是最大值),采樣周期的值設(shè)置為239.5。3.1.3FSMC與TFTLCD(1)FSMCFlexiblestaticmemorycontroller(FSMC),即靈活的靜態(tài)存儲(chǔ)控制器。主要用途是在AHB總線和外設(shè)之間進(jìn)行數(shù)據(jù)通信事務(wù)轉(zhuǎn)換,并滿足不同設(shè)備訪問(wèn)的時(shí)序要求,經(jīng)常用于Flash的數(shù)據(jù)交互。在本次設(shè)計(jì)中,TFTLCD屏幕將通過(guò)FSMC的接口與STM32相連。但是FSMC有一個(gè)很明顯的缺點(diǎn)是一次只能訪問(wèn)一個(gè)外部器件,主要原因在于由于各個(gè)設(shè)備有屬于自己的片選信號(hào),一次只能選擇一個(gè)片選信號(hào)進(jìn)行交互[11]。圖3-2FSMC框圖及其寄存器(2)TFTLCD屏幕TFT(ThinFilmTransistor)即薄膜場(chǎng)效應(yīng)晶體管,屬于有源矩陣液晶顯示器。其工作原理是通過(guò)電信號(hào)來(lái)驅(qū)動(dòng)晶體管,每個(gè)晶體管為1個(gè)像素點(diǎn),最終通過(guò)軟件編程來(lái)將像素點(diǎn)組合成想要的畫(huà)面。該設(shè)備具備可靠性提高、環(huán)保特性好、適用范圍寬、制造技術(shù)簡(jiǎn)單、成本低的優(yōu)點(diǎn),廣泛用于各類嵌入式設(shè)備的屏幕顯示。在本次設(shè)計(jì)過(guò)程中,采用4.3寸的TFTLCD屏幕來(lái)進(jìn)行最終的波形顯示[12]。圖3-3TFTLCD顯示屏3.1.4DMADMA(DirectMemoryAccess,直接存儲(chǔ)器訪問(wèn))是單片機(jī)中一個(gè)用于節(jié)省CPU資源使用的外設(shè)。單片機(jī)在進(jìn)行工作時(shí),數(shù)據(jù)經(jīng)常需要在不同地址之間搬運(yùn)。正常情況下這個(gè)操作由CPU來(lái)完成,但是這會(huì)使CPU出現(xiàn)大量中斷負(fù)載,嚴(yán)重降低工作效率。而DMA存在的意義就是協(xié)助CPU完成不同地址間數(shù)據(jù)的傳輸。這樣的操作可以避免CPU將資源傾斜在無(wú)意義的數(shù)據(jù)搬運(yùn)上,從而有更多的精力去處理其他工作,這個(gè)功能對(duì)于高效能嵌入式系統(tǒng)算法和網(wǎng)絡(luò)是很重要的。正常情況下總線的控制權(quán)在CPU手上,但在使用DMA來(lái)傳輸數(shù)據(jù)時(shí),DMA會(huì)暫時(shí)獲得總線是使用權(quán)。因此在DMA傳輸過(guò)程中先要向CPU發(fā)起請(qǐng)求,得到CPU同意后DMA開(kāi)始響應(yīng),并開(kāi)始數(shù)據(jù)的傳輸。當(dāng)數(shù)據(jù)傳輸結(jié)束后會(huì)自動(dòng)將總線控制權(quán)歸還給CPU。整個(gè)傳輸作業(yè)大致分為請(qǐng)求、響應(yīng)、傳輸、結(jié)束4個(gè)步驟。在本次設(shè)計(jì)中,我們使用DMA2的4通道來(lái)響應(yīng)ADC或DAC的請(qǐng)求。3.1.5定時(shí)器STM32F1系列單片機(jī)的標(biāo)準(zhǔn)定時(shí)器掛載在APB1總線上,具備16位的向上、向下以及向上/下三種計(jì)數(shù)方式,擁有自動(dòng)裝載的功能;每個(gè)標(biāo)準(zhǔn)定時(shí)器都有4個(gè)獨(dú)立通道,可以通過(guò)設(shè)置預(yù)分頻值、自動(dòng)重裝載值的參數(shù)以及定時(shí)器中斷服務(wù)程序來(lái)完成不同的任務(wù)。標(biāo)準(zhǔn)定時(shí)器的工作過(guò)程圖如下:圖3-4標(biāo)準(zhǔn)定時(shí)器工作過(guò)程在本次設(shè)計(jì)中,使用了TIM2和TIM3兩個(gè)定時(shí)器。TIM2負(fù)責(zé)為ADC定時(shí)采集提供服務(wù)。TIM3為DAC產(chǎn)出測(cè)試波形服務(wù)。3.2前級(jí)調(diào)理電路設(shè)計(jì)(1)阻容衰減電路阻容衰減電路在本次設(shè)計(jì)過(guò)程中屬于前級(jí)調(diào)理電路最開(kāi)始的電路,其主要功能是完成對(duì)信號(hào)的補(bǔ)償。該電路的原理是利用電容在不同頻率交流信號(hào)下會(huì)產(chǎn)生不同的容抗,通過(guò)容抗之間的搭配來(lái)完成對(duì)最大工作電壓的限制和信號(hào)的補(bǔ)償。電容在本級(jí)電路中主要承擔(dān)的責(zé)任是限制電流和動(dòng)態(tài)分配電容器和負(fù)載兩端電壓。在本次設(shè)計(jì)過(guò)程中,必須首先確定負(fù)載最大工作電流,然后來(lái)計(jì)算電容值的取值。具體電路實(shí)現(xiàn)如圖:圖3-5阻容衰減電路設(shè)計(jì)(2)程控增益電路在實(shí)際應(yīng)用過(guò)程中待測(cè)信號(hào)也可能存在幅值過(guò)小的問(wèn)題,此時(shí)需要采用放大電路將信號(hào)放大至合理幅值內(nèi)后才可供單片機(jī)采集。在本次設(shè)計(jì)中,采用了的CD4051BC芯片來(lái)實(shí)現(xiàn)程控增益的功能。該芯片性能強(qiáng),性價(jià)比高。但是,該芯片帶寬不足,待測(cè)信號(hào)頻率過(guò)高可能導(dǎo)致失真。所以在進(jìn)行測(cè)試時(shí)要對(duì)信號(hào)帶寬以及增益系數(shù)等參數(shù),需要多加注意。CD4051BC引腳如圖:圖3-6CD4051BC引腳圖(3)阻抗變換電路阻抗變換電路的作用是為了防止信號(hào)通過(guò)電壓跟隨器后出現(xiàn)波形的失真,在本次設(shè)計(jì)過(guò)程中,選取了OPA656芯片來(lái)完成設(shè)計(jì)。該芯片具有頻帶寬、增益穩(wěn)定的優(yōu)點(diǎn)。同時(shí)原理簡(jiǎn)單、性價(jià)比高,十分吻合本次設(shè)計(jì)的需求。阻抗變換芯片及其外圍電路設(shè)計(jì)如圖:圖3-6電平移位電路設(shè)計(jì)(4)低通濾波電路被測(cè)信號(hào)在傳入單片機(jī)采集時(shí),難免會(huì)因?yàn)橥獠坑绊懚a(chǎn)生噪聲。不合理的噪聲會(huì)嚴(yán)重影響信號(hào)波形的顯示。因此本研究在所有前級(jí)調(diào)理電路的最后需要加裝一個(gè)有源濾波電路來(lái)過(guò)濾到這個(gè)過(guò)程中產(chǎn)生的噪聲。在本次設(shè)計(jì)過(guò)程中,選用了UAF42有源濾波器模塊。該款濾波器通用性強(qiáng),具備高通、低通、帶通、帶阻的輸出,不同輸出端有獨(dú)立的引腳,用戶可以根據(jù)需求選擇不同引腳作為輸出端。片內(nèi)集成有1000pF的電容,可以有效提高濾波效率。有源濾波電路的負(fù)載不影響濾波特性,一般由RC網(wǎng)絡(luò)組成,擁有一定的電壓放大與緩沖作用。盡管有源濾波器信號(hào)處理能力較強(qiáng),但相應(yīng)的對(duì)電源要求也比較高,在使用過(guò)程中應(yīng)當(dāng)注意電源質(zhì)量,否則可能會(huì)影響濾波質(zhì)量。模塊內(nèi)部結(jié)構(gòu)圖如下:圖3-7UAF42濾波器模塊內(nèi)部結(jié)構(gòu)圖根據(jù)芯片手冊(cè),本次設(shè)計(jì)過(guò)程中該模塊使用IN2來(lái)作為輸入端口,使用Low-passVo作為低通輸出端。3.3便攜式數(shù)字示波器的硬件最終方案本次設(shè)計(jì)最終采用STM32F103單片機(jī)作為系統(tǒng)的核心控制器,并通過(guò)ADC和DMA來(lái)采集經(jīng)過(guò)前級(jí)調(diào)理電路后的待測(cè)信號(hào),最終通過(guò)軟件算法來(lái)使最終信號(hào)波形顯示在TFT-LCD顯示屏上,該顯示屏通過(guò)FSMC接口與STM32連接。下圖3-4為本次設(shè)計(jì)的硬件系統(tǒng)實(shí)現(xiàn)框圖。圖3-8硬件系統(tǒng)實(shí)現(xiàn)框圖3.4便攜式數(shù)字示波器的硬件接口的實(shí)現(xiàn)在前文中已經(jīng)確認(rèn)了硬件的選用了下面我們將從STM32F103ZET6開(kāi)始搭建我們的實(shí)物。如下圖3-5所示,ZET6擁144個(gè)獨(dú)立IO,龐大的硬件資源非常繁多,本文僅就對(duì)使用的硬件資源進(jìn)行說(shuō)明。圖3-9STM32F103ZET6引腳圖(1)電源:電源和接地引腳用于為外部電路供電。STM32系列單片機(jī)可以直接使用2.0-3.6V的直流電供電,引腳可以兼容5V。本次設(shè)計(jì)所使用的開(kāi)發(fā)板既可以直接使用直流電源,也可以USB接口來(lái)為整個(gè)系統(tǒng)供電。兩種供電方式的詳細(xì)電路圖如下:圖3-10直流電源直接供電電路圖3-11USB接口供電電路(2)ADC:本次設(shè)計(jì)直接使用STM32自身攜帶的外設(shè)ADC1通道1(PA1)來(lái)負(fù)責(zé)采集待檢測(cè)信號(hào)。在使用時(shí)直接將被測(cè)信號(hào)接入該引腳即可。FSMC本次設(shè)計(jì)所使用的FSMC接口總共有34個(gè)引腳,包括3個(gè)VDD引腳、3個(gè)GND引腳、16個(gè)總線數(shù)據(jù)線引腳、接口背光控制腳、NOE總線引腳,NWE總線引腳、接口觸摸屏?xí)r鐘信號(hào)引腳、觸摸屏MOSI信號(hào)引腳、觸摸屏PEN信號(hào)引腳和觸摸屏CS信號(hào)引腳。該接口與TFT-LCD顯示屏連接原理圖如圖3-8:圖3-12FSMC接口與TFT-LCD連接原理圖4.便攜式數(shù)字示波器軟件設(shè)計(jì)與實(shí)現(xiàn)4.1便攜式數(shù)字示波器軟件設(shè)計(jì)在單片機(jī)ADC檢測(cè)到被測(cè)信號(hào)后,需要通過(guò)單片機(jī)中的程序進(jìn)行處理。本章將會(huì)從系統(tǒng)任務(wù)調(diào)度,波形采集算法和波形顯示算法等方面的軟件實(shí)現(xiàn)作出討論。4.1.1操作系統(tǒng)的任務(wù)分配與調(diào)度嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)給嵌入式開(kāi)發(fā)所帶來(lái)的的便利無(wú)疑是至關(guān)重要的。在裸機(jī)操作過(guò)程中,所有的任務(wù)通過(guò)一個(gè)反復(fù)循環(huán)的線性操作實(shí)現(xiàn),然而程序運(yùn)行時(shí)常常會(huì)因?yàn)橐恍┲袛嗷蛘咦兞砍霈F(xiàn)了異常導(dǎo)致整個(gè)系統(tǒng)宕機(jī)。而由于操作系統(tǒng)使用時(shí)間片輪轉(zhuǎn)算法,合理的安排多個(gè)任務(wù)的運(yùn)行時(shí)間,互不干擾。即使某一個(gè)任務(wù)出現(xiàn)了異常,也不會(huì)影響整個(gè)系統(tǒng)的正常工作。(1)時(shí)間片輪轉(zhuǎn)調(diào)度算法時(shí)間片輪轉(zhuǎn)算法是一種簡(jiǎn)單、公平的任務(wù)調(diào)度算法,被各類嵌入式實(shí)時(shí)操作系統(tǒng)廣泛應(yīng)用[13]。在操作系統(tǒng)中,時(shí)間片即每個(gè)任務(wù)得到的可以運(yùn)行的時(shí)間。當(dāng)前任務(wù)運(yùn)行的時(shí)間達(dá)到時(shí)間片長(zhǎng)度后,系統(tǒng)會(huì)強(qiáng)制將該任務(wù)掛起,開(kāi)始執(zhí)行下一個(gè)任務(wù)。當(dāng)最后一個(gè)任務(wù)執(zhí)行完畢后,從第一個(gè)任務(wù)開(kāi)始繼續(xù)執(zhí)行,形成一個(gè)“輪轉(zhuǎn)”。該算法本質(zhì)上將操作系統(tǒng)是將原本裸機(jī)的線性運(yùn)行方式賦予了更加智能化的切換。盡管在真正的任務(wù)調(diào)度過(guò)程中,真正的任務(wù)調(diào)度情況要比簡(jiǎn)單的時(shí)間片輪轉(zhuǎn)復(fù)雜得多,但是任何調(diào)度算法他都是以時(shí)間片輪轉(zhuǎn)調(diào)度算法為基本原理。需要注意的是,時(shí)間片的長(zhǎng)度設(shè)置需要謹(jǐn)慎一些,時(shí)間片太短會(huì)導(dǎo)致CPU將更多資源用于任務(wù)切換使工作效率降低;時(shí)間片太長(zhǎng)會(huì)使得交互感變差,延遲很高。具體時(shí)間片的長(zhǎng)度設(shè)置要根據(jù)芯片性能及任務(wù)需求來(lái)制定,在大多數(shù)項(xiàng)目開(kāi)發(fā)中將其設(shè)置為5ms至80ms。時(shí)間片輪轉(zhuǎn)算法的原理如圖4-1:圖4-1時(shí)間片輪轉(zhuǎn)算法原理在程序設(shè)計(jì)過(guò)程中,該算法由以下函數(shù)實(shí)現(xiàn):OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);在本次設(shè)計(jì)過(guò)程中,為了提高顯示效率,所以將時(shí)間片設(shè)置僅為一個(gè)時(shí)鐘節(jié)拍,即5ms。任務(wù)的分配得益于操作系統(tǒng)自動(dòng)分配任務(wù)的特點(diǎn),在進(jìn)行便攜式數(shù)字示波器的設(shè)計(jì)時(shí),應(yīng)當(dāng)將多個(gè)任務(wù)分為多個(gè)進(jìn)程,互不干擾。而根據(jù)設(shè)計(jì)所需的功能,程序在設(shè)計(jì)過(guò)程應(yīng)當(dāng)分為采集、顯示、功能切換和運(yùn)行提示四個(gè)板塊,為每個(gè)版塊再去進(jìn)行程序任務(wù)的設(shè)計(jì)。在本次設(shè)計(jì)過(guò)程中顯示使用了emWin圖形庫(kù),因此最重要的就是emWin界面顯示任務(wù),為了提高采集與顯示之間的效率,所以將采集任務(wù)和顯示任務(wù)進(jìn)行了結(jié)合,形成一個(gè)任務(wù)。其次,在本次設(shè)計(jì)中有波形的切換、暫停與保存的功能,這一部分內(nèi)容需要通過(guò)按鍵來(lái)實(shí)現(xiàn),因此應(yīng)當(dāng)將按鍵也設(shè)置為一個(gè)任務(wù)來(lái)隨時(shí)獲取使用者所下達(dá)的命令,并完成任務(wù)所需的程序。最后,在嵌入式開(kāi)發(fā)過(guò)程中,為了直觀的表明硬件是否通電及工作狀態(tài),需要添加指示燈的功能。所以單獨(dú)創(chuàng)建一個(gè)LED燈任務(wù)來(lái)顯示便攜式數(shù)字示波器的工作狀態(tài),一旦程序出現(xiàn)錯(cuò)誤或者硬件出現(xiàn)問(wèn)題,指示燈的閃爍狀態(tài)可以為使用者提供信息。4.1.2emWin圖形庫(kù)emWin是當(dāng)下一款非常實(shí)用的的嵌入式開(kāi)發(fā)圖形庫(kù),由來(lái)自德國(guó)的Segger公司進(jìn)行開(kāi)發(fā)。該款圖形庫(kù)非常適合LCD屏幕上的顯示開(kāi)發(fā),用戶可以通過(guò)調(diào)用圖形庫(kù)所提供的各式各樣API函數(shù)來(lái)完成自己的設(shè)計(jì),包括各種圖片或文字。該款圖形庫(kù)通常搭配操作系統(tǒng)進(jìn)行開(kāi)發(fā),使得開(kāi)發(fā)嵌入式UI變得非常方便高??旖荨T诒敬卧O(shè)計(jì)中所使用的STemWin是Segger公司為ST公司量身定制的emWin,專門(mén)為STM32單片機(jī)做出了獨(dú)特的優(yōu)化以供使用,為了稱呼簡(jiǎn)潔所以本文依舊稱之為emWin。emWin一些基礎(chǔ)的圖像繪制和傳統(tǒng)繪制圖像的用法是完全一致的,例如繪制線條、矩形、圓形等,也可以進(jìn)行填充顏色和簡(jiǎn)單的文字顯示。但是emWin的強(qiáng)大之處在于,其支持繪制更多的圖形,比如線圖和餅圖。同時(shí)emWin支持Alpha混合,可以通過(guò)三個(gè)初始色之間的相互混合組成更多色彩,并且可以根據(jù)混合比例來(lái)達(dá)到不同的色彩效果。同時(shí)最重要的是,emWin支持繪制流位圖,即無(wú)法預(yù)計(jì)繪制出來(lái)的圖像究竟是什么形狀時(shí),可以選擇使用流位圖。本質(zhì)上繪制流位圖就是將數(shù)據(jù)流以圖像的方式會(huì)指出來(lái),這對(duì)示波器顯示波形來(lái)說(shuō)簡(jiǎn)直太方便了!盡管我們示波器的波形繪制相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,但是該功能會(huì)大量占據(jù)CPU資源導(dǎo)致flash爆滿,尤其是對(duì)于ST32F1這種內(nèi)存較小系列的系列來(lái)說(shuō),這是一個(gè)不得不關(guān)注的問(wèn)題。最后,使用LCD屏幕顯示波形也要注意界面UI的問(wèn)題。在這一部分可以參考一些比較成熟的emWin界面直接調(diào)用即可。而且作為一款GUI繪制的庫(kù),其也支持按鍵的功能。直接使用按鍵來(lái)切換示波器的橫坐標(biāo)或者用于測(cè)試的信號(hào)頻率,非常的方便。4.1.3各次諧波賦值計(jì)算與快速傅里葉變換高次諧波對(duì)于電子設(shè)備的影響的嚴(yán)重程度是不言而喻的。而想要消除諧波的影響得到正確的幅值,必須將周期性非正弦交流量通過(guò)傅里葉級(jí)數(shù)分解。分解后得到的基波頻率整數(shù)倍的各次分量,即是諧波。諧波的產(chǎn)生主要有三個(gè)源頭,分別是電源端、輸送設(shè)備和系統(tǒng)非線性負(fù)載。在本次設(shè)計(jì)中,除去本身的待檢測(cè)系統(tǒng)中存在的諧波,由于輸送設(shè)備采用的是最普通杜邦線,且前級(jí)調(diào)理電路存在整流、降壓等操作,因此也可能存在便攜式示波器系統(tǒng)內(nèi)部的諧波。所以不單單要靠模擬電路來(lái)處理信號(hào),還需要軟件算法來(lái)實(shí)現(xiàn)信號(hào)處理功能。而軟件上處理信號(hào)最好的手段,就是快速傅里葉變換(FFT)。FFT其實(shí)是一系列方法的一個(gè)統(tǒng)稱,本質(zhì)是基于離散傅里葉變換(DFT)的,只是通過(guò)不同算法提高了其變換的效率?;驹硎菍⒃夹蛄蟹纸鉃槎鄠€(gè)子序列,最后再將各個(gè)子序列按照邏輯進(jìn)行組合,在組合的過(guò)程中要利用到對(duì)稱性和周期性。FFT的實(shí)現(xiàn)方法其實(shí)有很多種,但都可以實(shí)現(xiàn)去除冗余運(yùn)算的功能,大幅提高信號(hào)處理效率。在本次設(shè)計(jì)中,F(xiàn)FT的主要功能由STM32官方所發(fā)布的DSP庫(kù)實(shí)現(xiàn),所以首先要完成DSP庫(kù)的移植,該庫(kù)總共由4個(gè)文件組成,分別是兩個(gè)頭文件dsp.h、fft.h,以及256點(diǎn)和1024個(gè)點(diǎn)運(yùn)算的匯編文件,如圖4-2。圖4-2FFT文件移植值得注意的是,點(diǎn)數(shù)多少和采樣頻率沒(méi)有本質(zhì)上的聯(lián)系,點(diǎn)數(shù)只影響測(cè)量的分辨率。同時(shí)FFT有一個(gè)非常優(yōu)秀的點(diǎn)在于其可以測(cè)量幅值很低的信號(hào),單片機(jī)的IO口在進(jìn)行電平判定是,幅值必須高于2V才可被判斷識(shí)別到上升沿,而使用FFT后可以將檢測(cè)下限幅值降到20mV,這是直接使用ADC采集信號(hào)所做不到的。但是,F(xiàn)FT并不是完美無(wú)缺的。首先,在采樣率較高的情況下,F(xiàn)FT運(yùn)算會(huì)非常占用CPU資源的,且由于使用了DMA的數(shù)據(jù)輸送方式,單片機(jī)總線里至少二分之一帶寬會(huì)被占用。當(dāng)采樣頻率到達(dá)一定頻率后,定時(shí)器中斷會(huì)頻繁觸發(fā)導(dǎo)致主循環(huán)幾乎無(wú)法正常運(yùn)轉(zhuǎn)。因此在需要大量數(shù)據(jù)計(jì)算的場(chǎng)景下,往往不會(huì)去使用CPU來(lái)進(jìn)行浮點(diǎn)運(yùn)算,而是使用專門(mén)的DSP芯片來(lái)進(jìn)行數(shù)字信號(hào)的處理。其次,F(xiàn)FT測(cè)量超低頻信號(hào)非常耗時(shí)間,因?yàn)镕FT運(yùn)算在數(shù)值較小時(shí)效率提升并不明顯。在本次設(shè)計(jì)需求中,需要采樣緩沖區(qū)為1024,因此選擇1024的函數(shù)作為實(shí)現(xiàn)FFT的方法,函數(shù)名如下:voidcr4_fft_1024_stm32(void*pssOUT,void*pssIN,u16Nbin);該函數(shù)的共有三個(gè)參數(shù),*pssOUT是FFT之后輸出頻域的數(shù)組,*pssIN為輸入的時(shí)域采樣信號(hào)數(shù)組,Nbin為FFT點(diǎn)數(shù)。根據(jù)官方的開(kāi)發(fā)手冊(cè),輸入與輸出數(shù)組雖然是32位數(shù)據(jù)類型,但是被分為了兩個(gè)16位的區(qū)域,分別儲(chǔ)存實(shí)部和虛部。但要注意的是,此函數(shù)進(jìn)行最基礎(chǔ)的FFT運(yùn)算,其結(jié)果也不是真正的幅值。所以想要得到被測(cè)信號(hào)的參數(shù)還需計(jì)算各次諧波的幅值。而這一部分的計(jì)算就需要運(yùn)用到輸出數(shù)組的實(shí)部和虛部,通過(guò)計(jì)算實(shí)部與虛部的平方根即可得到正確的結(jié)果。4.2便攜式數(shù)字示波器的開(kāi)發(fā)環(huán)境搭建在前述部分完成了硬件部分的搭建,下面將著重展示軟件環(huán)境的搭建與實(shí)現(xiàn)。(1)UCOS-III操作系統(tǒng)移植根據(jù)設(shè)計(jì)要求,首先需要做的是在STM32單片機(jī)上完成UCOS-III操作系統(tǒng)的移植。UCOS-III操作系統(tǒng)總共包含6個(gè)文件夾,分別是板級(jí)支持包(BSP)、CPU、代碼庫(kù)(LIB)、內(nèi)核(CORE)、端口(PORT)和配置文件(CONFIG),移植完成之后,編譯項(xiàng)目,沒(méi)有警告和報(bào)錯(cuò),說(shuō)明UCOS操作系統(tǒng)移植成功。圖4-3編譯結(jié)果(2)emWin圖形庫(kù)移植在完成了UCOS操作系統(tǒng)的移植后,還需要進(jìn)行emWin圖形庫(kù)的移植,才可以真正進(jìn)行最后的軟件開(kāi)發(fā)。emWin圖形庫(kù)總共分為三個(gè)文件夾,分別是配置文件(CONFIG)、圖形庫(kù)文件(LIB)和示例文件(DEMO)。移植完成后將程序燒錄至開(kāi)發(fā)板,會(huì)直接運(yùn)行emWin自帶的Demo程序如圖4-2,證明移植成功。圖4-4emWin圖形庫(kù)示例至此完成了軟件開(kāi)發(fā)環(huán)境的搭建,待開(kāi)發(fā)的工程文件目錄如下圖4-3所示:圖4-5開(kāi)發(fā)環(huán)境工程目錄4.3便攜式數(shù)字示波器軟件實(shí)現(xiàn)及程序流程在主程序啟動(dòng)后會(huì)首先進(jìn)行操作系統(tǒng)、圖形庫(kù)及外設(shè)初始化操作,然后根據(jù)功能分別建立采集及顯示、功能切換和按鍵功能三個(gè)任務(wù)。下圖4-6即為軟件設(shè)計(jì)流程圖:圖4-6軟件設(shè)計(jì)流程圖5.系統(tǒng)性能測(cè)試5.1便攜式數(shù)字示波器的運(yùn)行測(cè)試首先,將STM32開(kāi)發(fā)板通過(guò)ST-LINK仿真器與開(kāi)發(fā)機(jī)進(jìn)行連接,隨后將編譯好的便攜示波器的程序燒錄至開(kāi)發(fā)板的Flash中。打開(kāi)電源開(kāi)關(guān)上電后,可以看到開(kāi)機(jī)畫(huà)面如圖5-1,證明系統(tǒng)可以正常工作。同時(shí)在開(kāi)機(jī)畫(huà)面上標(biāo)注了便攜式數(shù)字示波器工程名稱(MiniOCSTEST)和設(shè)計(jì)者的姓名、班級(jí)和年級(jí)。圖5-1開(kāi)機(jī)畫(huà)面開(kāi)機(jī)畫(huà)面大概持續(xù)2秒,隨后結(jié)束畫(huà)面并進(jìn)入示波器工作狀態(tài),顯示出工作界面,開(kāi)始準(zhǔn)備采集。由于現(xiàn)在還沒(méi)有接入波形,因此顯示區(qū)域沒(méi)有波形。在顯示區(qū)域的右側(cè)是波形的參數(shù)顯示,從上至下分別是工作狀態(tài)、幅值、峰峰值、最大電壓、最小電壓、波形頻率和采樣率。圖5-2工作界面

5.2便攜式數(shù)字示波器的性能測(cè)試5.2.1便攜式數(shù)字示波器的性能測(cè)試(1)不同波形的顯示測(cè)試在所有初始化完成之后,我們將信號(hào)發(fā)生器接在ADC引腳上并輸入100Hz的正弦波,并設(shè)置采樣頻率為10kHz。采樣結(jié)果如圖5-3所示:圖5-3正弦波測(cè)試可以看到波形被正常采集到的了,信號(hào)完整度較高。圖中信號(hào)斷裂處為示波器刷新線。為了驗(yàn)證示波器的采樣符合要求,還使用了三角波、和方波來(lái)測(cè)試,結(jié)果如圖5-4和圖5-5.圖5-4三角波測(cè)試圖5-5方波測(cè)試根據(jù)上述三張圖來(lái)看,示波器最基礎(chǔ)的波形顯示功能是完全沒(méi)有問(wèn)題的。(2)示波器精度測(cè)試根據(jù)奈奎斯特采樣定理可知,被測(cè)信號(hào)頻率最大值要小于或等于采樣頻率的二分之一。本次設(shè)計(jì)的便攜式示波器的最大采樣頻率為500KHz,因此理論上講可以測(cè)試頻率為250KHz以下的波形。首先我們隨機(jī)設(shè)置一個(gè)波形頻率為41KHz的方波,選取100KHz的采樣頻率,通過(guò)Debug來(lái)查看波形數(shù)組結(jié)果如圖5-6:圖5-6幅值數(shù)組可以看到,數(shù)組下標(biāo)為420的數(shù)據(jù)為該波形的最大值,通過(guò)信號(hào)頻率的計(jì)算公式算得頻率:f=(100K/1024)*420=41015Hz誤差為:(41015-41000)/41000*100%=0.03%誤差為0.03%,遠(yuǎn)小于設(shè)計(jì)需求中所要求的5%。盡管符合設(shè)計(jì)要求,但是還是有必要探究誤差來(lái)源的可能性。一是在FFT中,精度的計(jì)算公式為Fs(采樣頻率)/N(采樣點(diǎn)數(shù)),可以通過(guò)增大分母,即增大N的值來(lái)提高精度,因此在本次設(shè)計(jì)中N取值1024而非256。同時(shí)分子越大,即采樣頻率越大,也會(huì)導(dǎo)致誤差值邊打。因此在測(cè)量低頻信號(hào)時(shí),需要在保證奈奎斯特采樣定理的情況下,盡可能的降低采樣頻率。二是ADC采集也是需要消耗時(shí)間的,而非瞬間采集。從定時(shí)器發(fā)出ADC觸發(fā)信號(hào)到ADC完成采集是有一個(gè)過(guò)程時(shí)間,這樣采樣頻率就不是理想狀態(tài)下的采樣頻率,因此可能造成誤差。5.2.2便攜式數(shù)字示波器的功能測(cè)試在設(shè)計(jì)需求中,需要添加的一個(gè)功能為波形的暫停功能。在示波器的使用過(guò)程中,往往需要暫停波形來(lái)觀察分析當(dāng)前波形的情況。因此本設(shè)計(jì)加入了使用按鍵來(lái)暫停波形,同樣以上一個(gè)測(cè)試的100Hz正弦波信號(hào)為例,按下按鍵后如圖5-6:圖5-6波形暫停

溫馨提示

  • 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)論