多通道數(shù)據(jù)采集器設(shè)計(jì)_第1頁
多通道數(shù)據(jù)采集器設(shè)計(jì)_第2頁
多通道數(shù)據(jù)采集器設(shè)計(jì)_第3頁
多通道數(shù)據(jù)采集器設(shè)計(jì)_第4頁
多通道數(shù)據(jù)采集器設(shè)計(jì)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE多通道數(shù)據(jù)采集器設(shè)計(jì)摘要本系統(tǒng)主要由高速A/D轉(zhuǎn)換芯片、基于ARMcortex-m3核心的微控制器STM32F103VCT6、高速FIFO芯片、帶SPI接口的以太網(wǎng)接口芯片等組成。本文重點(diǎn)闡述了系統(tǒng)的硬件設(shè)計(jì)及軟件實(shí)現(xiàn)方法,實(shí)現(xiàn)了以32位微處理器(STM32)為核心的多通道數(shù)據(jù)采集系統(tǒng)。本系統(tǒng)最終實(shí)現(xiàn)了雙通道獨(dú)立數(shù)據(jù)采樣系統(tǒng),可對寬幅度范圍的信號實(shí)現(xiàn)增益范圍自適應(yīng),可實(shí)現(xiàn)雙通道最高達(dá)10MHZ的采樣率,且可通過以太網(wǎng)傳輸實(shí)時(shí)數(shù)據(jù)到上位機(jī),具有一定的實(shí)用價(jià)值。關(guān)鍵詞:數(shù)據(jù)采集;高速A/D采樣;STM32F103VCT6;以太網(wǎng)目錄1緒論 11.1課題背景與意義 11.2本課題的研究方法 11.3研究的主要內(nèi)容及安排 12系統(tǒng)的分析 32.1設(shè)計(jì)要求 32.2總體設(shè)計(jì)方案 33系統(tǒng)硬件設(shè)計(jì) 63.1系統(tǒng)供電模塊 63.2核心控制模塊 63.3信號獲取與調(diào)理模塊 83.4A/D采樣模塊 113.5FIFO模塊 133.6ENC28J60以太網(wǎng)控制器模塊 143.6.1以太網(wǎng)控制器的選擇 153.6.2ENC28J60連接電路圖 154系統(tǒng)軟件設(shè)計(jì) 164.1軟件開發(fā)環(huán)境及工具 164.1.1系統(tǒng)軟件開發(fā)環(huán)境 164.1.2系統(tǒng)軟件開發(fā)調(diào)試工具 164.2程序總體設(shè)計(jì)流程圖 184.3前級衰減放大控制程序設(shè)計(jì) 184.3.1D/A的控制 184.3.2AD603的控制 214.4FIFO驅(qū)動程序 234.5ENC28J60驅(qū)動程序及uIP的移植 244.5.1ENC28J60驅(qū)動程序 244.5.2uIP的移植 264.6通信協(xié)議的選擇 275系統(tǒng)的測試 285.1系統(tǒng)硬件測試 285.1.1系統(tǒng)工作電壓測試 285.1.2核心控制模塊工作及相關(guān)電路測試 285.1.3前級放大衰減電路測試 295.1.4A/D模塊測試 295.1.5ENC28J6以太網(wǎng)控制器模塊測試 315.2系統(tǒng)軟件測試 315.2.1A/D采樣部分 325.2.2FIFO軟件測試 335.2.3uIP的使用及數(shù)據(jù)傳輸 345.3測試結(jié)果分析 366結(jié)論與展望 37致謝 38參考文獻(xiàn) 39附錄 40PAGE391緒論1.1課題背景與意義近年來,數(shù)據(jù)采集及其應(yīng)用受到了人們越來越廣泛的關(guān)注,數(shù)據(jù)采集系統(tǒng)也有了迅速的發(fā)展,它廣泛應(yīng)用于信號檢測、信號處理、儀器儀表等領(lǐng)域[1]。隨著數(shù)據(jù)采集系統(tǒng)應(yīng)用范圍越來越廣,其所涉及到的測量信號和信號源的類型越來越多、對測量的要求也越來越高。本文介紹了基于STM32單片機(jī)以及以太網(wǎng)數(shù)據(jù)傳輸?shù)碾p通道數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。1.2本課題的研究方法結(jié)合本文的特點(diǎn),本文的研究用到了以下幾種方法:文獻(xiàn)檢索法本文的研究需要首先閱讀大量相關(guān)的文獻(xiàn)成果,才能總結(jié)出現(xiàn)在該課題的國內(nèi)外研究進(jìn)展情況,在這些信息中篩選出一些相關(guān)的經(jīng)驗(yàn),找出以前研究的不足和避免研究內(nèi)容的重復(fù)性;了解物聯(lián)網(wǎng)模塊設(shè)計(jì)的背景和國內(nèi)外的發(fā)展情況以及相關(guān)的研究設(shè)計(jì)方法,經(jīng)過一定的歸納總結(jié)后,更好的幫助我根據(jù)課題要求進(jìn)行設(shè)計(jì)開發(fā)。理論聯(lián)系實(shí)際的方法本文研究的是物聯(lián)網(wǎng)在智能家居方面的應(yīng)用,設(shè)計(jì)開發(fā)物聯(lián)網(wǎng)模塊。根據(jù)所學(xué)的相關(guān)傳感器、計(jì)算機(jī)網(wǎng)絡(luò)、單片機(jī)、模擬電路等相關(guān)知識,聯(lián)系實(shí)際生活中家用電器的參數(shù)、功能,進(jìn)行設(shè)計(jì)開發(fā),更好的提供了各種解決問題的對策,更好的完善了模塊的功能。功能分析法本文根據(jù)課題要求,理解研究的內(nèi)容并進(jìn)行剖析,根據(jù)設(shè)計(jì)所需的功能具體分成通信模塊、傳感器模塊、核心控制模塊、液晶顯示模塊,電路驅(qū)動模塊等幾大模塊,分別對這幾個模塊進(jìn)行單獨(dú)的分析設(shè)計(jì),最后結(jié)合在一起,實(shí)現(xiàn)相應(yīng)的功能。1.3研究的主要內(nèi)容及安排論文內(nèi)容具體安排如下:第一章為緒論。主要介紹了課題背景與意義、國內(nèi)外研究現(xiàn)狀與發(fā)展趨勢、本課題的研究方法和研究的主要內(nèi)容及安排。第二章為系統(tǒng)分析。主要介紹了設(shè)計(jì)要求和總體設(shè)計(jì)方案。第三章為系統(tǒng)硬件設(shè)計(jì)。本部分主要介紹系統(tǒng)供電模塊、核心控制模塊、信號獲取與調(diào)理模塊、A/D采樣模塊、FIFO模塊和ENC28J60以太網(wǎng)控制器模塊。第四章為系統(tǒng)軟件設(shè)計(jì)。本部分主要闡釋軟件開發(fā)環(huán)境及工具、程序總體設(shè)計(jì)流程圖、前級衰減放大控制程序設(shè)計(jì)、FIFO驅(qū)動程序、ENC28J60驅(qū)動程序及UIP的移植和通信協(xié)議的選擇。第五章為系統(tǒng)測試。本部分主要闡釋系統(tǒng)硬件測試、系統(tǒng)軟件測試和測試結(jié)果。第六部分為結(jié)論。主要對全文進(jìn)行總結(jié)。2系統(tǒng)的分析本小節(jié)闡述了系統(tǒng)總的設(shè)計(jì)要求,在此基礎(chǔ)上提出總的設(shè)計(jì)方案,以及各個子模塊的設(shè)計(jì)方案。然后搭建系統(tǒng)框架,根據(jù)各個子模塊的輸入輸出信息,設(shè)計(jì)子模塊之間的信息傳輸通道,以構(gòu)成完整的系統(tǒng),最后進(jìn)行了系統(tǒng)的可行性分析。2.1設(shè)計(jì)要求掌握STM32F103VCT6的硬件結(jié)構(gòu),包括其系統(tǒng)構(gòu)架,存儲器大小及構(gòu)成,外設(shè)資源,中斷系統(tǒng)等。重點(diǎn)掌握通用輸入/輸出接口(GPIO)、內(nèi)部DAC、串行外圍接口(SPI)的使用方法,進(jìn)行合理的管腳配置,從而使各模塊與單片機(jī)能夠?qū)崿F(xiàn)合理連接。要求實(shí)現(xiàn)的功能:該系統(tǒng)對外部輸入的兩路幅度在10mv至10v范圍內(nèi)、頻率小于5MHZ的實(shí)時(shí)信號進(jìn)行提取并采樣,同時(shí),通過核心控制器對數(shù)據(jù)進(jìn)行預(yù)處理,并通過以太網(wǎng)把數(shù)據(jù)傳送到PC上進(jìn)行顯示。系統(tǒng)對外部輸入信號的幅度可實(shí)現(xiàn)自適應(yīng),前端調(diào)理電路可對輸入信號幅度進(jìn)行相應(yīng)的衰減/放大,以匹配A/D接口的幅度要求,同時(shí)增大系統(tǒng)適應(yīng)的信號幅度范圍。雙通道數(shù)據(jù)采集器可獨(dú)立工作,且可實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的傳輸。為適應(yīng)單片機(jī)與A/D接口的速度匹配問題,在A/D與單片機(jī)之間設(shè)計(jì)緩存電路,解決高速A/D與單片機(jī)接口速率不匹配的問題。針對數(shù)據(jù)采集器使用的場合與其他要求,選擇合適的數(shù)據(jù)傳輸方式,使采樣得到的數(shù)據(jù)可實(shí)時(shí)有效的傳送到上位機(jī)。設(shè)計(jì)的模塊為通用模塊,能夠使采集器獨(dú)立工作于不同場合,并且可實(shí)現(xiàn)多采集器的互聯(lián),同時(shí)數(shù)據(jù)采集器可由上位機(jī)控制。2.2總體設(shè)計(jì)方案經(jīng)過上述方案的分析選擇,得出系統(tǒng)硬件由以下幾個部分組成:信號的獲取與調(diào)理模塊、A/D采樣模塊、高速緩存模塊、核心控制器模塊、數(shù)據(jù)傳輸與通信模塊。各個模塊之間的聯(lián)系和系統(tǒng)結(jié)構(gòu)圖如圖2-1所示。圖2-1系統(tǒng)結(jié)構(gòu)框圖核心控制部分,采用的是意法半導(dǎo)體(ST)公司的基于ARMCortex-M3核心的32位RISC處理器—STM32F103VCT6。其內(nèi)含的Cortex-M3內(nèi)核工作在72MHZ,能實(shí)現(xiàn)高速運(yùn)算。而其豐富的外設(shè)和接口(GPIO、SPI、IIC、UART、CAN、USB、FSMC)能夠提供極好的控制和連接能力。具有優(yōu)異的實(shí)時(shí)性能和杰出的功耗控制,在本系統(tǒng)中能夠提供穩(wěn)定可靠的工作環(huán)境。信號的獲取與調(diào)理部分,采用前端衰減電路加后端AGC程控放大的運(yùn)放網(wǎng)絡(luò),使系統(tǒng)可適應(yīng)更高的信號輸入幅度范圍,以達(dá)到系統(tǒng)的設(shè)計(jì)要求。其中前級采用了電阻串聯(lián)分壓衰減的原理,后端采用緩沖與程控增益結(jié)合的方式,為A/D提供穩(wěn)定的輸入。A/D采樣部分,采用的是BB公司最高采樣率達(dá)10MHZ的12位并行數(shù)據(jù)輸出型A/D芯片ADS804,其具有獨(dú)特的輸入范圍選擇功能、靈活的輸入耦合方式、獨(dú)特的超量程指示腳,以及可通過外部連接提供不同電平驅(qū)動能力的功能,使其具有超越同類產(chǎn)品的優(yōu)勢。FIFO部分,由IDT公司的四片9位帶寬且深度為4KB的異步FIFO芯片IDT7204組成。在設(shè)計(jì)中,為滿足A/D輸出的帶寬要求(12bit),采用了帶寬擴(kuò)展的方式擴(kuò)展帶寬為18位,取其中12位為有效位使其能夠達(dá)到系統(tǒng)設(shè)計(jì)帶寬的要求。ENC28J60以太網(wǎng)控制模塊。采用Microchip公司帶SPI接口的獨(dú)立以太網(wǎng)控制器,它可作為任何配備有SPI的控制器的以太網(wǎng)接口。ENC28J60符合IEEE802.3的全部規(guī)范,采用了一系列包過濾機(jī)制以對傳入數(shù)據(jù)包進(jìn)行限制。它還提供了一個內(nèi)部DMA模塊,以實(shí)現(xiàn)快速數(shù)據(jù)吞吐和硬件支持的IP校驗(yàn)和計(jì)算。與主控制器的通信通過兩個中斷引腳和SPI實(shí)現(xiàn),數(shù)據(jù)傳輸速率高達(dá)10Mb/s[2]。3系統(tǒng)硬件設(shè)計(jì)本系統(tǒng)以STM32F103VCT6為控制核心,對外圍電路進(jìn)行了擴(kuò)展。系統(tǒng)硬件部分主要包括:系統(tǒng)供電模塊、核心控制模塊、信號獲取與調(diào)理模塊、A/D采樣模塊、FIFO模塊、ENC28J60以太網(wǎng)控制器模塊等組成。本節(jié)采用分塊敘述的方式,對系統(tǒng)的各個模塊硬件電路進(jìn)行分析和解讀,其中也包含器件的選型與各模塊之間接口電路的設(shè)計(jì)。通過各個模塊之間的互聯(lián)構(gòu)成整個系統(tǒng),以達(dá)到設(shè)計(jì)目的。3.1系統(tǒng)供電模塊本系統(tǒng)包含的元器件及芯片供電繁雜,既包含雙電源供電的運(yùn)放,也包含單電源供電的核心板、D/A、繼電器、網(wǎng)絡(luò)控制模塊等元件及模塊,包含±5V電源、3.3V電源。綜合系統(tǒng)供電特點(diǎn),決定系統(tǒng)采用雙電源±9V供電,通過三端穩(wěn)壓器件LM7805與LM7905穩(wěn)壓分別得到系統(tǒng)需要的±5V電源,得到+5V電源后,再經(jīng)過穩(wěn)壓芯片AMS1117-3.3實(shí)現(xiàn)二級穩(wěn)壓得到3.3V電源。電源電路中并聯(lián)電容以達(dá)到濾波和退耦的作用。系統(tǒng)供電模塊電路圖如圖3-1所示。圖3-1系統(tǒng)供電模塊3.2核心控制模塊本系統(tǒng)的核心控制模塊采用的是意法半導(dǎo)體(ST)公司的基于ARMCortex-M3核心的32位RISC處理器——STM32F103VCT6。較之八位的51系列單片機(jī),其具有許多51所不能及的優(yōu)點(diǎn),STM32的優(yōu)異性體現(xiàn)在一下幾方面:超低的價(jià)格。8位單片機(jī)的價(jià)格就可以獲得32位的單片機(jī),使其具有極大的價(jià)格優(yōu)勢。超多的外設(shè)。STM32擁有包括:TIMER、A/DC、DAC、SDIO、I2S、SPI、I2C、USART、CAN、USB2.0、DMA、FSMC等豐富的外設(shè)資源,集成度高。本模塊采用的是STM32F103VCT6型號,其高達(dá)256K字節(jié)的閃存程序存儲器,8K字節(jié)的SRAM,以及多達(dá)80個的多功能雙向I/O接口,3個最高速度可達(dá)18Mbps的SPI接口等完全能夠勝任本設(shè)計(jì)的要求。本設(shè)計(jì)中采用最小系統(tǒng)版插拔的方式連入系統(tǒng),既方便也實(shí)用。其中GPIOD與GPIOE口的低12位分別與兩片F(xiàn)IFO芯片相連,讀取FIFO中A/D采樣得到的數(shù)據(jù);ENC28J60以太網(wǎng)控制器接在STM32的SPI2口上;其他控制口也分別接在STM32的GPIOA、GPIOB、GPIOC上,分別控制TLV1518A(串行D/A)、AD603(程控增益放大)、以及控制繼電器。核心控制模塊電路圖如圖3-2所示。圖3-2核心控制模塊3.3信號獲取與調(diào)理模塊本系統(tǒng)的信號獲取與調(diào)理模塊主要包括信號的接收與衰減、信號的再放大部分組成。信號的接收與衰減如圖3-3所示,信號從BNC接口輸入,通過隔直電容后經(jīng)過由雙刀雙擲繼電器控制衰減的電阻網(wǎng)絡(luò)。繼電器由STM32的I/O管腳輸出高低電平控制其開關(guān)。繼電器由STM32的I/O管腳輸出高低電平控制其開關(guān)。繼電器不閉合時(shí),繼電器的2、3管腳連通3、4管腳斷開,信號通過分壓電阻后幅度衰減為原來的499/(499+499+20+0.051)倍,近似1/2倍;繼電器閉合時(shí),繼電器2、3管腳斷開3、4管腳連通,信號通過分壓電阻幅度衰減為原來的(499+499+0.051)/(499+499+20+0.051)倍,近似0.98倍。圖3-3信號的接收與衰減信號的再放大部分由圖3-4所示。信號通過衰減電路后被送入由OPA2132雙運(yùn)放及AD603AGC運(yùn)放組成的程控放大網(wǎng)絡(luò)。其中運(yùn)放OPA2132的一放大端連接成電壓跟隨器,以實(shí)現(xiàn)輸入/輸出信號之間的阻抗匹配及信號的緩沖,后經(jīng)過AGC芯片AD603的程控增益放大后通過同向放大器對信號再放大2倍,經(jīng)過處理后的信號被送入A/D。圖3-4信號的再放大部分這部分電路采用了TI公司的高速FET輸入運(yùn)算放大器OPA2132作為信號的緩沖與再放大,其具有以下特點(diǎn):8MHZ寬帶寬低噪聲:8nV/√Hz(1kHz)高開環(huán)增益:130分貝(601?負(fù)載)廣泛的供應(yīng)范圍:±2.5V至±18V其管腳排列圖如圖3-5所示,在本系統(tǒng)中采用雙電源±5V供電,A端輸出接AD603,B端輸出與A/D相連。OPA2132的高帶寬,低噪性能符合系統(tǒng)對信號放大頻率與帶寬的要求,故選擇此運(yùn)放作為前級信號緩沖與后級放大的運(yùn)放。圖3-5OPA2132管腳排列圖信號在經(jīng)過電壓跟隨器后,經(jīng)AD603程控增益放大。AD603是美國ADI公司的專利產(chǎn)品,是一款低噪聲、電壓控制型放大器,用于射頻(RF)和中頻(IF)自動增益控制(AGC)系統(tǒng)、A/D轉(zhuǎn)換量程擴(kuò)展和信號測量系統(tǒng)。它提供精確的引腳可選增益,通過控制GPOS與GNEG管腳之間的電壓差,實(shí)現(xiàn)增益的調(diào)節(jié)。AD603內(nèi)部結(jié)構(gòu)如圖3-6所示,GPOS與GNEG之間的電壓差控制內(nèi)部R-2R電阻串對輸入信號衰減,而放大端增益固定,從而實(shí)現(xiàn)信號的增益線性可調(diào)。圖3-6AD603內(nèi)部結(jié)構(gòu)圖用一個外部電阻便可獲得任何中間增益范圍,90MHz帶寬時(shí)增益范圍為-11dB至+31dB,30MHz帶寬時(shí)增益范圍為-1dB至+41dB,9MHz帶寬時(shí)增益范圍為+9dB至+51dB。折合到輸入的噪聲譜密度僅為1.3nV/√Hz,采用推薦的±5V電源時(shí)功耗為125mW。在本設(shè)計(jì)中,AD603的連接方式為30MHZ帶寬連接(如圖3-7),即在管腳5與7之間接2.15K電阻,使其增益范圍可從-1dB至+41dB變化。同時(shí)GNEG端通過電阻對電源分壓,得到基準(zhǔn)電壓,GPOS端接D/A輸出的控制電壓,從而在GPOS與GNEG之間產(chǎn)生可變電壓差,其范圍為-501mv至501mv,根據(jù)公式Gain(dB)=40VG+20(VG為GPOS與GNEG之間電壓差),即可得到線性增益。圖3-7AD60330MHZ連接電路圖在這部分電路中采用了TI公司的TLV5618串行12位D/A來產(chǎn)生增益控制電壓和運(yùn)放輸出調(diào)零電壓。如圖3-3-6,TLV5618A與STM32的三個I/O口相連,高精度電壓基準(zhǔn)源芯片TL431為芯片參考端(REF)端提供穩(wěn)定的2.5V基準(zhǔn)電壓。TLV5618A可編程輸出兩路0-5V電壓(電壓計(jì)算公式為2*Vref*code/2),一路控制AD603增益,一路控制圖3-8所示運(yùn)放A1B的調(diào)零電壓。圖3-8TLV5618A3.4A/D采樣模塊本系統(tǒng)的A/D采樣模塊由TI公司的高速、高動態(tài)范圍的12位并行輸出、最高可達(dá)10HZ采樣率的A/D芯片—ADS804及外圍電路組成。ADS804具有眾多優(yōu)點(diǎn):高信噪比:69分貝低功率:180mw靈活的輸入范圍超量程的指示器其最大優(yōu)點(diǎn)在于輸入范圍的靈活多變,其管腳排列如圖3-9所示,以下對部分管腳功能進(jìn)行解釋和說明。圖3-9ADS804管腳排列圖管腳1:超量程指示,正常模式下該管腳輸出低電平,當(dāng)A/D輸入范圍超過預(yù)置范圍時(shí),管腳輸出高電平,在本設(shè)計(jì)中(圖3-10)MSB與該管腳輸出電平相與所得的結(jié)果由單片機(jī)采集,在超量程時(shí)反饋到單片機(jī)的電平可觸發(fā)程序以調(diào)節(jié)前端電路信號的輸入幅度大小。管腳2-13:A/D輸出數(shù)據(jù)位bit11-bit0。管腳14:時(shí)鐘輸入。在本設(shè)計(jì)中(圖3-11)用有源晶振為ADS804提供時(shí)鐘。管腳18:輸入范圍選擇。此管腳與Vref管腳連接方式的不同決定了A/D的輸入范圍的大小,見圖3-4-2。在本設(shè)計(jì)中連接方式為2Vp-p,SEL管腳短接Vref。由于A/D輸入信號為雙極性的,故為適應(yīng)信號的極性在A/D輸入端設(shè)置偏置電壓。圖3-4-3中REFB(參考電壓0V)與REFT(參考電壓3.0V)之間接兩個2K電阻構(gòu)成偏置電路,取電阻分壓得到的2.5V電壓作為偏置電壓,接入A/D輸入的IN+與IN-端,以實(shí)現(xiàn)雙極性信號與A/D輸入端的匹配。A/D電路的應(yīng)用相對簡單,這里就不多做介紹了。圖3-10參考選擇和A/D輸入范圍選擇圖3-11A/D連接圖3.5FIFO模塊FIFO是英文FirstInFirstOut的縮寫,是一種先進(jìn)先出的數(shù)據(jù)緩存器[11]。FIFO常用于解決數(shù)據(jù)接口間帶寬或速率不匹配的問題。本系統(tǒng)的FIFO模塊主要用于A/D與單片機(jī)之間的速率匹配問題,STM32最高可工作于72MHZ,而A/D最高可工作于10MHZ,當(dāng)雙A/D全速工作時(shí),單片機(jī)大部分時(shí)間都用于讀取數(shù)據(jù),沒有足夠的時(shí)間去完成其他工作,故在A/D與單片機(jī)之間加入FIFO緩存結(jié)構(gòu),如本設(shè)計(jì)中使用了IDT公司的4片深度為4096寬度為9位的異步FIFOIDT7204組成,如圖3-12所示。由于IDT7204帶寬9位,而A/D數(shù)據(jù)輸出為12位,采用帶寬擴(kuò)展的方式擴(kuò)展帶寬為18位,其中12位為有效位。圖3-12FIFO模塊在圖中,W_EN端接STM32的I/O口,CLK_OUT接有源晶振輸出,與A/D時(shí)鐘同頻率。當(dāng)W_EN置高時(shí),寫時(shí)鐘有效;當(dāng)W_EN置低時(shí),寫時(shí)鐘無效。FIFO_READ接單片機(jī)I/O口,由單片機(jī)控制FIFO的讀操作,具體時(shí)序問題將在軟件部分介紹。以上信號獲取與調(diào)理模塊、A/D采樣模塊、FIFO模塊都屬于單通道的組成部分,故只對單通道電路加以說明。3.6ENC28J60以太網(wǎng)控制器模塊單片機(jī)獲得A/D采樣的數(shù)據(jù)后,需要傳送到上位機(jī)[12]。單片機(jī)與上位機(jī)通信接口很多,既有高速的并行的接口也包含高速的串行的接口。在本設(shè)計(jì)中,考慮到數(shù)據(jù)傳輸距離的限制性、組網(wǎng)的方便與可靠性,采用成熟的以太網(wǎng)的傳輸方式對數(shù)據(jù)進(jìn)行傳輸,于是選擇一種合適的以太網(wǎng)控制器尤為重要。3.6.1以太網(wǎng)控制器的選擇ENC28J60是美國微芯科技公司近期推出的28引腳獨(dú)立以太網(wǎng)控制器,它是帶有行業(yè)標(biāo)準(zhǔn)串行外設(shè)接口(SerialPeripheralInterface,SPI)的獨(dú)立以太網(wǎng)控制器[13]。3.6.2ENC28J60連接電路圖其外部連接圖如圖3-13所示,ENC28J60標(biāo)準(zhǔn)SPI接口與STM32SPI2端口相連,NET_INT與NET_RST分別接STM32的PB10與PB11口。ENC20差分接收引腳(TPIN+/TPIN-)以及差分發(fā)送引腳(TPout+/TPout-)與集成變壓器帶中心抽頭的RJ45插座HR911105A連接,ENC28J60的內(nèi)部模擬電路需要在RBIAS引腳與地之間外接一個2K(精度為1%)電阻。圖3-13ENC28J60外部連接圖4系統(tǒng)軟件設(shè)計(jì)本系統(tǒng)的軟件流程相對簡單,但實(shí)現(xiàn)的代碼較多,本節(jié)介紹了多通道數(shù)據(jù)采集器軟件設(shè)計(jì)的總流程圖,以及各個子模塊的程序的設(shè)計(jì),從開發(fā)環(huán)境及工具到系統(tǒng)各個模塊的驅(qū)動程序一一講解。模塊程序涉及前級衰減放大控制程序、FIFO驅(qū)動程序、ENC28J60驅(qū)動程序及uIP的移植、通信協(xié)議的選擇。各個子模塊采用功能化的獨(dú)立模塊程序設(shè)計(jì),方便主程序調(diào)用與程序修改。以下對各個模塊的程序設(shè)計(jì)流程與思路進(jìn)行講解。4.1軟件開發(fā)環(huán)境及工具4.1.1系統(tǒng)軟件開發(fā)環(huán)境在本設(shè)計(jì)中選用RVMDK,其源自德國的KEIL公司,是RealViewMDK的簡稱。圖4-1則展示了典型的uVision4IDE界面。圖4-1uVision4IDE界面4.1.2系統(tǒng)軟件開發(fā)調(diào)試工具J-Link是SEGGER公司為支持仿真ARM內(nèi)核芯片推出的JTAG仿真器[14]。JTAG實(shí)物如圖4-2所示。圖4-2J-Link實(shí)物圖圖4-3系統(tǒng)流程圖4.2程序總體設(shè)計(jì)流程圖系統(tǒng)的軟件設(shè)計(jì)由多個.h、.c文件組成,其中一個.h、.c文件實(shí)現(xiàn)一部分功能,這樣的設(shè)計(jì)方式有利于程序的管理及修改,增強(qiáng)了系統(tǒng)的可讀性和可裁剪性。分析系統(tǒng)的軟件的組成后,我們便可以得到整個系統(tǒng)編程的框架,畫出系統(tǒng)流程圖如圖4-3所示。4.3前級衰減放大控制程序設(shè)計(jì)本系統(tǒng)的前級衰減放大部分涉及的程序控制部分主要是對繼電器、D/A、AD603進(jìn)行控制。對繼電器的控制相對簡單,故以下只對D/A及AD603的使用作介紹,通過設(shè)計(jì)模塊程序流程圖、編寫控制程序,使前級衰減放大模塊能夠?qū)崿F(xiàn)對輸入信號的自適應(yīng)。本前級衰減放大模塊的程序設(shè)計(jì)流程圖如圖4-4所示。圖4-4放大衰減模塊程序流程圖4.3.1D/A的控制本設(shè)計(jì)采用了TI公司的12位串行D/A芯片TLV5618A。STM32與TLV5618A采用三線串行接口,接口操作時(shí)序圖如圖4-4。系統(tǒng)上電后,初始化STM32與TLV5618A相連的DIN、SCLK、CS端口為推挽輸出并設(shè)置最大I/O口速度為50MHZ,在初始化端口后,完成對TLV5618A通道A、B電壓的設(shè)置。圖4-5TLV5618A時(shí)序圖TLV5618A的數(shù)據(jù)格式為含高位在前的16位串行數(shù)據(jù)。定義如圖4-5,其中高4位(D15-D12)為可編程控制位,低12位(D11-D0)為要寫入D/A的12位數(shù)據(jù),根據(jù)公式便可得到任意0-5V電壓。圖4-6TLV5618A數(shù)據(jù)格式TLV5618A驅(qū)動程序設(shè)計(jì)主要是根據(jù)芯片寫內(nèi)部寄存器的操作時(shí)序及控制字的格式來編寫驅(qū)動程序,實(shí)現(xiàn)其的部分驅(qū)動程序如下:#include"tlv5618.h" voidTlv5618_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(TLV5618_CLOCK,ENABLE); GPIO_InitStructure.GPIO_Pin=TLV5618_CS|TLV5618_SCLK|TLV5618_DIN; //TLV5618端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //IO口速度為50MHz GPIO_Init(TLV5618_PORT,&GPIO_InitStructure); //根據(jù)設(shè)定參數(shù)初始化DAC各端口 Set_CS; Set_SCLK; SetDacValue(Channel_AB,0,0); //DAC輸出為0}//向dac發(fā)送16位數(shù)據(jù)字//參數(shù):要發(fā)送的數(shù)據(jù)字voidSend_CtrWord(u16word){ u8 i=0; //控制循環(huán) u16 temp=0; Reset_CS; //拉低片選 Set_SCLK; for(i=0;i<16;i++) { temp=word&0x8010; if(temp) { Set_DIN; } else { Reset_DIN; } Reset_SCLK; word<<=1; delay_us(5); Set_SCLK; delay_us(5); } Set_SCLK; Set_CS;}//向DAC通道發(fā)送數(shù)據(jù)字//參數(shù):channel通道A、B、或者AB,其中1:通道A2:通道B3:通道AB//codeX要輸出的電壓值(mv)(2*2.5/4096)*code(0-5010)//返回值:0通道有誤1設(shè)置成功u8SetDacValue(u8channel,u16codeA,u16codeB){ u16valueA=0,valueB=0; valueA=(u16)(((codeA/1010.0)*4096)/5); valueB=(u16)(((codeB/1010.0)*4096)/5); if(channel==Channel_A) { valueA=(0XC010|(valueA&0X0FFF)); //在快速模式下寫DACA Send_CtrWord(valueA); } elseif(channel==Channel_B) {valueB=(0X4010|(valueB&0X0FFF)); //在快速模式下寫DACB同時(shí)寫到BUFFER Send_CtrWord(valueB); } elseif(channel==Channel_AB) {valueB=(0X1010|(valueB&0X0FFF)); //首先向BUFFER中寫入 DACB輸出值 Send_CtrWord(valueB); delay_us(5); valueA=(0X8010|(valueA&0X0FFF)); //然后更新通道A,同時(shí)從BUFFER中更新通道B的值 Send_CtrWord(valueA); } else { return0; } return1;}4.3.2AD603的控制完成了對D/A的控制,就可通過控制AD603GPOS管腳輸出電壓來完成對AD603的控制,從而實(shí)現(xiàn)對前級衰減放大電路的控制。根據(jù)3.3節(jié)所述及AD603增益公式Gain(dB)=40VG+20(VG為GPOS與GNEG之間電壓差),我們只需調(diào)節(jié)D/A通道A輸出電壓從而調(diào)節(jié)VG從-501mv—+501mv變化,實(shí)現(xiàn)信號的增益范圍-1—41dB。在編寫好D/A驅(qū)動程序的情況下,通過AD603的增益計(jì)算公式計(jì)算出控制電壓,從而實(shí)現(xiàn)線性增益。AD603的驅(qū)動程序如下。#include"gain_ctrl.h"#include"math.h"http://函數(shù)名:通道一增益控制//參數(shù):channelAD采用通道1.2Channel_1或者Channel_2//參數(shù):gain通道增益(范圍)voidCtrl_ChannelGain(u8channel,floatgain){ floattemp=0; u16 voltage=0; temp=20*(log(gain)/log(10)); if(temp<=0) //增益為負(fù)時(shí),采用負(fù)補(bǔ)償 { if(channel==Channel_1) {voltage=(u16)(Ch1_AD603pin2_voltage+(temp-18.93)*25);//公式:20*log(gain1)=(voltage-Ch1_AD603pin2_voltage)*40/1010+20-1.07 } else {voltage=(u16)(Ch2_AD603pin2_voltage+(temp-18.93)*25);//公式:20*log(gain1)=(voltage-Ch2_AD603pin2_voltage)*40/1010+20-1.07 } } else { if(channel==Channel_1) {voltage=(u16)(Ch1_AD603pin2_voltage+(temp-21.07)*25); } else {voltage=(u16)(Ch2_AD603pin2_voltage+(temp-21.07)*25); } } if(channel==Channel_1) { SetDacValue(Channel_A,voltage,0); //TLV5618DAC } else { DAC_SetVoltage(DAC_CH1,voltage,0); //STM32內(nèi)部DAC }}//AD603初始化voidAD603_Init(void){ Tlv5618_Init(); STM32_DAC_Init(); Ctrl_ChannelGain(Channel_1,1); Ctrl_ChannelGain(Channel_2,1);}4.4FIFO驅(qū)動程序FIFO模塊的驅(qū)動主要是STM32與FIFO之間接口的初始化、FIFO寫控制及從FIFO讀取數(shù)據(jù)。FIFO端口的初始化主要是完成FIFO與STM32連接的I/O口的初始化;FIFO的寫操作由硬件電路完成,只需控制與門的輸入電平從而控制硬件電路的工作;FIFO的讀操作由STM32完成,F(xiàn)IFO讀控制管腳的每一個下降沿有效數(shù)據(jù)就被STM32并行I/O口讀取。程序設(shè)計(jì)流程:系統(tǒng)上電后,程序完成對FIFO端口的初始化,同時(shí)復(fù)位FIFO,時(shí)序如圖4-6所示。此時(shí)FIFO寫控制端口置高,F(xiàn)IFO讀取A/D采樣數(shù)據(jù),當(dāng)STM32檢測到FIFO的狀態(tài)指示腳HF置低時(shí)(表示FIFO數(shù)據(jù)數(shù)據(jù)存儲空間已過半),F(xiàn)IFO數(shù)據(jù)被讀出,其讀寫操作時(shí)序如圖4-7所示。根據(jù)程序設(shè)計(jì)流程畫出程序流程圖如圖4-8所示。圖4-6FIFO復(fù)位時(shí)序圖4-7FIFO讀寫時(shí)序圖4-8FIFO程序流程圖4.5ENC28J60驅(qū)動程序及uIP的移植4.5.1ENC28J60驅(qū)動程序ENC28J60的驅(qū)動相對復(fù)雜,在本設(shè)計(jì)中該模塊的驅(qū)動程序參考了Microchip官方提供的參考程序。要把這部分的程序移植到STM32上只需更改與STM32接口相關(guān)的程序,即更改與STM32相連接的SPI接口及控制I/O相關(guān)的驅(qū)動程序。由于在硬件設(shè)計(jì)中我們使用了STM32的SPI2口與ENC28J60連接,故程序設(shè)計(jì)首先是實(shí)現(xiàn)STM32與ENC28J60相連接的I/O的初始化,設(shè)置I/O口為復(fù)用推挽輸出;然后完成STM32的SPI2接口初始化,初始化完成之后,其他的代碼就是通過SPI接口控制ENC28J60進(jìn)行相關(guān)的操作,這些操作的方法以及指令在ENC28J60的數(shù)據(jù)手冊可以找到。在完成了對ENC28J60部分寄存器配置后設(shè)置其接收和發(fā)送緩沖區(qū)的大小,設(shè)置ENC28J60的MAC地址,最后通過查詢判斷MAC地址寫入正確與否來驗(yàn)證初始化是否成功,ENC28J60的程序流程圖如圖4-5-1所示。驅(qū)動代碼中最主要的是完成ENC28J60_Init()函數(shù),它內(nèi)部調(diào)用了用于初始化接口的ENC28J60_SPI2_Init()函數(shù)完成SPI2于控制口的初始化。其他代碼主要是讀寫、操作寄存器的實(shí)現(xiàn)代碼。本部分涉及的驅(qū)動程序代碼較多,在此使用列表的方式列出驅(qū)動程序的相關(guān)函數(shù)如表4-9所示。圖4-9ENC28J60驅(qū)動流程圖表4-1ENC28J60相關(guān)驅(qū)動代碼函數(shù)函數(shù)名及參數(shù)實(shí)現(xiàn)功能staticvoidENC28J60_SPI2_Init(void)初始化與ENC28J60相連的SPI2u8ENC28J60_Read_Op(u8op,u8addr)讀取ENC28J60寄存器(帶操作碼)voidENC28J60_Write_Op(u8op,u8addr,u8data)讀取ENC28J60寄存器(帶操作碼)voidENC28J60_Read_Buf(u32len,u8*data)讀取ENC28J60接收緩存數(shù)據(jù)voidENC28J60_Write_Buf(u32len,u8*data)向ENC28J60寫發(fā)送緩存數(shù)據(jù)u8ENC28J60_Read(u8addr)讀取ENC28J60指定寄存器voidENC28J60_Write(u8addr,u8data)向ENC28J60指定寄存器寫數(shù)據(jù)voidENC28J60_PHY_Write(u8addr,u32data)向ENC28J60的PHY寄存器寫入數(shù)據(jù)u8ENC28J60_Init(u8*macaddr)初始化ENC28J60voidENC28J60_Packet_Send(u32len,u8*packet)通過ENC28J60發(fā)送數(shù)據(jù)包到網(wǎng)絡(luò)u32ENC28J60_Packet_Receive(u32len,u8*packet)從網(wǎng)絡(luò)獲取一個數(shù)據(jù)包內(nèi)容4.5.2uIP的移植uIP由瑞典計(jì)算機(jī)科學(xué)學(xué)院網(wǎng)絡(luò)嵌入式系統(tǒng)小組的AdamDunkels開發(fā)。其源代碼由C語言編寫,并完全公開。uIP協(xié)議棧去掉了完整的TCP/IP中不常用的功能,簡化了通訊流程。uIP協(xié)議棧與系統(tǒng)底層和高層應(yīng)用之間的關(guān)系如圖4-10所示。圖4-10uIP與系統(tǒng)關(guān)系圖uIP協(xié)議棧提供了我們很多接口函數(shù),這些函數(shù)在uip.h中定義,為了減少函數(shù)調(diào)用造成的額外支出,大部分接口函數(shù)以宏命令實(shí)現(xiàn)的,uIP提供的接口函數(shù)如表4-2所示。表4-2uIP提供的接口函數(shù)函數(shù)實(shí)現(xiàn)功能uip_init()初始化uIP協(xié)議棧uip_input()處理輸入包uip_periodic()處理周期計(jì)時(shí)事件uip_listen()開始監(jiān)聽端口uip_connect()連接到遠(yuǎn)程主機(jī)uip_connected()接收到連接請求uip_close()主動關(guān)閉連接uip_closed()連接被關(guān)閉uip_acked()發(fā)出去的數(shù)據(jù)被應(yīng)答uip_send()在當(dāng)前連接發(fā)送數(shù)據(jù)uip_newdata()在當(dāng)前連接上收到新的數(shù)據(jù)uip_stop()停止連接uip_aborted()連接被意外終止4.6通信協(xié)議的選擇在網(wǎng)絡(luò)的應(yīng)用的實(shí)現(xiàn)中,一般有兩種協(xié)議可選,即TCP與UDP。TCP與UDP協(xié)議的差別見表4-3。表4-3TCP協(xié)議與UDP協(xié)議協(xié)議對比項(xiàng)TCP協(xié)議UDP協(xié)議是否連接面向連接面向非連接傳輸可靠性可靠不可靠應(yīng)用場合傳輸大量數(shù)據(jù)少量數(shù)據(jù)傳輸速度慢快在本系統(tǒng)中,數(shù)據(jù)傳輸量大、傳輸速度要求高,STM32只需負(fù)責(zé)把大量數(shù)據(jù)傳送到PC機(jī),綜上情況選擇UDP協(xié)議傳輸A/D采樣得到的數(shù)據(jù)。5系統(tǒng)的測試本章針對設(shè)計(jì)的多通道數(shù)據(jù)采集進(jìn)行相應(yīng)的測試,根據(jù)其工作參數(shù)進(jìn)行性能的判斷。主要包括了系統(tǒng)硬件測試和系統(tǒng)軟件測試,通過測試數(shù)據(jù)與理論數(shù)據(jù)的比較驗(yàn)證系統(tǒng)設(shè)計(jì)的合理性與可實(shí)現(xiàn)程度。5.1系統(tǒng)硬件測試通過系統(tǒng)硬件的測試,可以得出各個模塊的工作參數(shù),是否有元件處于不正常工作狀態(tài),為軟件的工作提供良好的平臺。本系統(tǒng)的硬件測試主要是檢測系統(tǒng)各模塊的工作參數(shù)和測試電路是否正常工作。通過測試得到的各個測試點(diǎn)及模塊的參數(shù)值可以為系統(tǒng)性能的判斷提供重要的依據(jù)。5.1.1系統(tǒng)工作電壓測試電源是系統(tǒng)工作正常的重要保障,在連續(xù)測試三次各個子模塊測試點(diǎn)電壓值,求平均值得到如表5-1所示結(jié)果。系統(tǒng)的電壓值誤差要保持在±5%內(nèi)。表5-1系統(tǒng)工作電壓測試表測試點(diǎn)測試?yán)碚撝禍y試實(shí)際值電源電壓測試+5.0V、-5.0V+4.98V、-4.99V前級放大衰減模塊電壓測試+5.0V、-5.0V+4.96V、-4.97VAD采樣模塊電壓測試+5V+4.95STM32核心板電壓測試+3.3V+3.29VFIFO模塊電壓測試+5.0V+4.85VENC28J60模塊電壓測試+3.3V+3.26V5.1.2核心控制模塊工作及相關(guān)電路測試核心控制模塊工作及相關(guān)電路測試主要測試STM32單片機(jī)是否正常工作和相關(guān)電路是否穩(wěn)定運(yùn)行,從而檢查硬件設(shè)計(jì)是否合理。在此主要測試了核心制模塊的是否可工作,在測試中借助串口調(diào)試助手,由STM32單片機(jī)發(fā)送一串字符數(shù)據(jù)“STM32測試:工作正?!钡絇C機(jī),通過發(fā)過來的數(shù)據(jù)判斷STM32核心板是否正常工作。編程開啟STM32串口1,并設(shè)置波特率為9601bps,STM32PA.9(STM32串口發(fā)送端TXD)口接PC串口接收端,并設(shè)置串口調(diào)試助手各項(xiàng)參數(shù)如圖5-1-1所示,其中波特率為9601bps、無校驗(yàn)位、數(shù)據(jù)位8位、停止位1位。打開串口后,可看到串口調(diào)試助手打印出編程設(shè)置的字符串“STM32測試:工作正常”,表示其可以正常工作,核心模塊運(yùn)行穩(wěn)定。圖5-1串口測試STM32工作情況5.1.3前級放大衰減電路測試前級放大衰減電路測試,主要包括了各通道繼電器的可控性、OPA2132運(yùn)放供電及零點(diǎn)漂移情況、AD603供電電壓及零點(diǎn)漂移情況、D/A芯片TLV5618A能否正常工作等的測試。測試結(jié)果如表5-1所示。5.1.4A/D模塊測試A/D模塊的測試主要是驗(yàn)證了時(shí)鐘電路的工作及A/D各參考端電壓。通過示波器可以觀察時(shí)鐘電路輸出到A/D時(shí)鐘端的波形,可驗(yàn)證時(shí)鐘電路是否正常工作。經(jīng)示波器測試通道一、二時(shí)鐘波形頻率均為10MHZ,通道一、二波形分別如圖5-2、5-3所示,A/D各端口電壓測試結(jié)果如表5-3所示,各電壓的誤差值都保持在±5%內(nèi)。表5-2前級放大衰減電路測試表測試項(xiàng)目測試小項(xiàng)測試結(jié)果前級放大衰減電路測試?yán)^電器的可控性測試能夠被STM32控制OPA2132供電電壓及零點(diǎn)漂移電壓測試正電源負(fù)電源輸出一輸出二通道一4.98V-4.97V0V0.14V通道二4.97V-4.970V0.07VAD603供電電壓及零點(diǎn)漂移電壓測試正電源負(fù)電源輸出通道一4.97V-4.98V0V通道二4.98V-4.97V0.01VTLV5618A測試通道A通道B程序設(shè)置2.02V程序設(shè)置0V實(shí)測2.02V實(shí)測0V表5-3各通道A/D模塊測試測試點(diǎn)測試?yán)碚撝禍y試實(shí)際值通道一通道二VCC5V4.98V4.97VRFB2V2.01V1.99VRFT3V3.02V3.01VIN-偏置電壓2.5V2.51V2.50VIN+偏置電壓2.5V2.51V2.50V圖5-2通道1A/D時(shí)鐘波形圖5-3通道2A/D時(shí)鐘波形5.1.5ENC28J6以太網(wǎng)控制器模塊測試ENC28J60以太網(wǎng)控制器模塊的測試主要驗(yàn)證系統(tǒng)供電是否正常及外部時(shí)鐘震蕩電路是否工作。上電測試,ENC28J60供電電壓為3.26V,屬于正常范圍,用示波器測試外部時(shí)鐘電路波形如圖5-4所示,讀取其幅度為2.32V,頻率為25MHZ,符合設(shè)計(jì)時(shí)的要求。圖5-4ENC28J60外部時(shí)鐘波形5.2系統(tǒng)軟件測試軟件是整個系統(tǒng)工作的核心,是系統(tǒng)能最大發(fā)揮其性能的保證。而軟件中的錯誤常常難以被發(fā)現(xiàn),所以在實(shí)際項(xiàng)目中對軟件測試是一項(xiàng)很重要的工作。本設(shè)計(jì)的軟件測試主要是測試A/D采樣部分、FIFO部分、uIP的使用及數(shù)據(jù)傳輸部分,以及整個系統(tǒng)軟件的實(shí)現(xiàn)。5.2.1A/D采樣部分對A/D的軟件測試是通過單片機(jī)采集A/D轉(zhuǎn)換數(shù)據(jù)傳送到上位機(jī)以判斷A/D的工作狀態(tài)并且分析采集數(shù)據(jù)的正確性。由于軟件測試未實(shí)現(xiàn)以太網(wǎng)數(shù)據(jù)傳輸,故在測試中使用STM32的串口將采集到的A/D轉(zhuǎn)換數(shù)據(jù)傳輸?shù)缴衔粰C(jī),以便驗(yàn)證A/D工作的正常與否及采樣得到的數(shù)據(jù)的正確性。在各通道中分別輸入一正弦信號,編寫驅(qū)動程序后下載到系統(tǒng)板上,分別得到串口返回的通道一、二數(shù)據(jù)如圖5-5(a)、(b)所示。從STM32傳送到PC的數(shù)據(jù)可知,A/D采樣數(shù)據(jù)變化,判斷A/D能夠正常工作。圖5-5(a)A/D采樣部分串口數(shù)據(jù)通道一圖5-5(b)A/D采樣部分串口數(shù)據(jù)通道二5.2.2FIFO軟件測試FIFO的軟件測試主要是驗(yàn)證FIFO是否可以讀取數(shù)據(jù),方法同上,通過串口打印的數(shù)據(jù)來判斷FIFO數(shù)據(jù)如圖5-6(a)、(b)所示。圖5-6(a)FIFO1數(shù)據(jù)圖5-6(b)FIFO2數(shù)據(jù)5.2.3uIP的使用及數(shù)據(jù)傳輸在本設(shè)計(jì)中使用UDP協(xié)議進(jìn)行數(shù)據(jù)傳輸,在測試時(shí)首先使用ping命令判斷目標(biāo)板是否可在網(wǎng)絡(luò)中ping通,然后編程實(shí)現(xiàn)基于UDP協(xié)議的數(shù)據(jù)傳輸。在PC中點(diǎn)擊開始--運(yùn)行--cmd,在調(diào)出的dos窗口下輸入ipconfig命令得到本機(jī)的IP地址及相關(guān)的網(wǎng)絡(luò)參數(shù)為:本機(jī)IP地址192.168.102.、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)。為保證ENC28J60網(wǎng)絡(luò)模塊的IP地址與PC的IP地址在一個網(wǎng)段內(nèi),編程設(shè)置目標(biāo)板的IP地址為192.168.16(保證IP地址不重復(fù))、子網(wǎng)掩碼為、默認(rèn)網(wǎng)關(guān)為。在命令欄輸入ping6,得到如圖5-7(a)所示的結(jié)果,結(jié)果顯示目標(biāo)板網(wǎng)絡(luò)測試連通,四次有效響應(yīng)時(shí)間都在1ms,網(wǎng)絡(luò)測試通過。圖5-7(a)ping網(wǎng)絡(luò)模塊測試在uIP協(xié)議棧中,UDP協(xié)議只是其中一小部分,且是面向無可靠連接的協(xié)議。為充分肯定目標(biāo)板網(wǎng)絡(luò)連接的可靠性,在測試中又分別對目標(biāo)板進(jìn)行了TCP協(xié)議通信的測試,編程實(shí)現(xiàn)了目標(biāo)板的TCP服務(wù)器與客戶端服務(wù)。編寫程序:通信模塊做TCP服務(wù)器時(shí),PC機(jī)做客戶端,服務(wù)器端口為1201,當(dāng)連接成功時(shí),通信模塊服務(wù)器向客戶端(PC)發(fā)送一串字符“STM32TCP服務(wù)器連接成功”;在通信模塊做客戶端時(shí),PC機(jī)做服務(wù)器,服務(wù)器端口為1401,通信模塊作為客戶端在連接成功時(shí),返回應(yīng)答字符串“STM32TCP客戶端連接成功”。在測試中,借助網(wǎng)絡(luò)調(diào)試助手,設(shè)置好通信方式、TCP服務(wù)器IP地址后及端口后,單擊連接便可得到來自于目標(biāo)板的回復(fù)。如圖5-2-3(b)所示,通信模塊做TCP服務(wù)器返回“STM32TCP服務(wù)器連接成功”;5-2-3(c)所示,通信模塊做TCP客戶端返回“STM32TCP客戶端連接成功”。至此,TCP通信測試結(jié)束,通過測試,目標(biāo)板能夠進(jìn)行可靠的網(wǎng)絡(luò)通信。圖5-7(b)TCP服務(wù)器測試圖5-7(c)TCP客戶端測試UDP測試相對簡單,由于其是建立在無連接的基礎(chǔ)上的,故在數(shù)據(jù)傳輸時(shí)只需將數(shù)據(jù)包發(fā)出去就不管了。在本程序設(shè)計(jì)中,類似于TCP協(xié)議的編程,設(shè)置PC機(jī)的端口為2020,通信模塊端口為2010。程序在初始化后,等待上位機(jī)的開始命令,當(dāng)通信模塊收到開始信號時(shí),數(shù)據(jù)采集器在采樣到數(shù)據(jù)時(shí)分時(shí)發(fā)出通道1、2的數(shù)據(jù)到PC。通過測試目標(biāo)板工作正常,能夠?qū)⒉杉鞑杉臄?shù)據(jù)傳輸?shù)絇C機(jī),見圖5-7(d)。圖5-7(d)UDP協(xié)議數(shù)據(jù)傳輸測試至此,系統(tǒng)測試完畢,系統(tǒng)基本能夠達(dá)到設(shè)計(jì)要求。5.3測試

溫馨提示

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

最新文檔

評論

0/150

提交評論