<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于STM32的多路電壓測量設計方案

基于STM32的多路電壓測量設計方案

作者: 時(shí)間:2017-07-11 來(lái)源:網(wǎng)絡(luò ) 收藏

  本設計提出一種基于的多路電壓測量設計方案,測量范圍在0-10V之間。把內置A/D對多路電壓值進(jìn)行采樣,得到相應的數字量。然后按照數字量和模擬量的比例關(guān)系得到對應的模擬電壓值,通過(guò)TFTLCD顯示設備顯示出來(lái),同時(shí)將多路采集的數據存儲到SD卡中。

本文引用地址:http://dyxdggzs.com/article/201707/361582.htm

  1.引言

  近年來(lái),數據采集及其應用受到了人們越來(lái)越廣泛的關(guān)注,數據采集系統也有了迅速的發(fā)展,它可以廣泛的應用于各種領(lǐng)域。

  數據采集技術(shù)是信息科學(xué)的重要分支之一,數據采集也是從一個(gè)或多個(gè)信號獲取對象信息的過(guò)程。數據采集是工業(yè)控制等系統中的重要環(huán)節,通常采用一些功能相對獨立的單片機系統來(lái)實(shí)現,作為測控系統不可缺少的部分,數據采集的性能特點(diǎn)直接影響到整個(gè)系統。

  電壓的測量最為普遍性,研究設計并提高電壓測量精度的方法及儀器具有十分重要的意義。在電壓測量設計中,單片機作為控制器,是整個(gè)設計的核心。除此之外,設計中還必須有模數轉換器(ADC)。ADC用于直接采集模擬電壓并將模擬信號轉換成數字信號,它直接影響著(zhù)數據采集的精度和速度。

  2.系統概述

  本設計的微控制器采用單片機。

  STM32系列單片機是基于A(yíng)RM公司Cortex-M3內核設計的。它的時(shí)鐘頻率達到72MHz,是同類(lèi)產(chǎn)品中性能較高的產(chǎn)品,具有高性能、低成本、低功耗的優(yōu)點(diǎn),是嵌入式應用設計中良好的選擇。設計中的A/D轉換器采用STM32內置ADC.STM32的ADC是一種12位逐次逼近型模擬數字轉換器。

  它有多達18個(gè)通道,可測量16個(gè)外部和2個(gè)內部信號源。各通道的A/D轉換可以單次、連續、掃描或間斷模式執行。轉換結果可以左對齊或右對齊方式存儲在16位數據寄存器中。其輸入時(shí)鐘最大可達到14MHz.

  本設計可測量8通道電壓值,測量范圍為0-10V的電壓,顯示誤差為±0.001V.LCD實(shí)時(shí)顯示電壓值和波形圖,MicroSD卡對數據進(jìn)行同步存儲。系統原理框圖如圖1所示。

 

  3.系統硬件設計

  本設計的硬件主要包括STM32模塊,LCD模塊,SD卡模塊和按鍵模塊。STM32模塊不僅作為核心控制器,還包括ADC設備,它主要包括STM32最小系統電路。LCD模塊主要包括LCD驅動(dòng)接口電路。SD卡模塊主要是SD卡驅動(dòng)電路。除此之外,還有用于程序下載調試的J-Link接口電路和電源電路等。

  3.1 STM32最小系統

  本模塊主要介紹STM32和設計中用到的外設模塊。

  STM32最小系統使用外部高速時(shí)鐘,外接8M晶振。STM32的兩個(gè)BOOT引腳都接低電平,以使用戶(hù)閃存存儲器為程序啟動(dòng)區域。采用J - L i n k下載模式,也可以進(jìn)行硬件調試。STM32的電源引腳都接了濾波電容以確保單片機電源的穩定。

  STM32F103VET6擁有3個(gè)ADC,這些ADC可以獨立使用,也可以使用雙重模式(提高采樣率)。STM32的ADC是12位逐次逼近型的模擬數字轉換器。它有18個(gè)通道可測量16個(gè)外部和2個(gè)內部信號源。各通道的A/D轉換可以單次、連續、掃描或間斷模式執行。ADC的結果可以左對齊或右對齊方式存儲在16位數據寄存器中。STM32的ADC最大的轉換速率為1Mhz,也就是轉換時(shí)間為1us(ADCCLK=14M,采樣周期為1.5個(gè)ADC時(shí)鐘下得到),不能讓ADC的時(shí)鐘超過(guò)14M,否則將導致結果準確度下降。STM32將ADC的轉換分為2個(gè)通道組:規則通道組和注入通道組。規則通道相當于運行的程序,而注入通道就相當于中斷。在程序正常執行的時(shí)候,中斷是可以打斷程序正常執行的。同這個(gè)類(lèi)似,注入通道的轉換可以打斷規則通道的轉換,在注入通道被轉換完成之后,規則通道才得以繼續轉換。

  本設計中ADC采集的數據使用DMA進(jìn)行傳輸,以達到高速實(shí)時(shí)的目的。

  3.2 ADC控制電路

  STM32的數字/模擬轉換模塊(DAC)是12位數字輸入,電壓輸出的數字/模擬轉換器。本設計中使用DAC來(lái)控制ADC匹配電路的增益。

  在打開(kāi)DAC模塊電源和配置好DAC所需GPIO的基礎上,往DAC通道的數據DAC_DHRx寄存器寫(xiě)入數據,如果沒(méi)有選中硬件觸發(fā),存入寄存器DAC_DHRx的數據會(huì )在一個(gè)APB1時(shí)鐘周期后自動(dòng)傳至寄存器DAC_DORx.一旦數據從DAC_DHRx寄存器裝入DAC_DORx寄存器,在經(jīng)過(guò)一定時(shí)間之后,輸出即有效,這段時(shí)間的長(cháng)短依電源電壓和模擬輸出負載的不同會(huì )有所變化。

  為了擴大測量范圍和測量精度,本設計在STM32的ADC前加入匹配電路。在A(yíng)DC控制電路中,輸入信號先經(jīng)過(guò)射極電壓跟隨電路,然后經(jīng)過(guò)分壓電路,使輸入信號滿(mǎn)足AD603的輸入要求。然后再經(jīng)過(guò)射極電壓跟隨電路,輸入ADC輸入端。AD603的控制輸入使用STM32的DAC,可以滿(mǎn)足增益的要求。

  匹配電路以AD603為核心。AD603為單通道、低噪聲、增益變化范圍線(xiàn)性連續可調的可控增益放大器。帶寬90MHz時(shí),其增益變化范圍為-10dB~+30dB;帶寬為9M時(shí)范圍為10~50dB.

  將V O U T與F D B K短路,即為寬頻帶模式(90MHz寬頻帶),AD603的增益設置為-11.07dB~+31.07dB.AD603的5、7腳相連,單片AD603的可調范圍為-10dB~30dB.AD603的增益與控制電壓成線(xiàn)性關(guān)系,其增益控制端輸入電壓范圍為±500mv,增益調節范圍為40dB,當步進(jìn)5dB時(shí),控制端電壓需增大:

    

 

  ADC匹配電路的電路圖如圖2所示。

    

 

  3.3 LCD控制電路

  本設計所使用的LCD為2.4寸,320×240分辨率。LCD模塊使用STM32的FSMC接口控制。

  FSMC(Flexible Static Memory Controller)即可變靜態(tài)存儲控制器,是STM32系列中內部集成256KB以上Flash,后綴為xC、xD和xE的高存儲密度微控制器特有的存儲控制機制。通過(guò)對特殊功能寄存器的設置,FSMC能夠根據不同的外部存儲器類(lèi)型,發(fā)出相應的數據/地址/控制信號類(lèi)型以匹配信號的速度,從而使得STM32系列微控制器不僅能夠應用各種不同類(lèi)型、不同速度的外部靜態(tài)存儲器,而且能夠在不增加外部器件的情況下同時(shí)擴展多種不同類(lèi)型的靜態(tài)存儲器,滿(mǎn)足系統設計對存儲容量、產(chǎn)品體積以及成本的綜合要求。

  在STM32內部,FSMC的一端通過(guò)內部高速總線(xiàn)AHB連接到內核Cortex-M3,另一端則是面向擴展存儲器的外部總線(xiàn)。內核對外部存儲器的訪(fǎng)問(wèn)信號發(fā)送到AHB總線(xiàn)后,經(jīng)過(guò)FSMC轉換為符合外部存儲器通信規約的信號,送到外部存儲器的相應引腳,實(shí)現內核與外部存儲器之間的數據交互。F S M C起到橋梁作用,既能夠進(jìn)行信號類(lèi)型的轉換,又能夠進(jìn)行信號寬度和時(shí)序的調整,屏蔽掉不同存儲類(lèi)型的差異,使之對內核而言沒(méi)有區別。

  FSMC可以連接NOR/PSRAM/NAND/PC卡等設備,并且擁有FSMC_A[25:0]共26條地址總線(xiàn),FSMC[15:0]共16條數據總線(xiàn)。另外,FSMC擴展的存儲空間被分成8個(gè)塊。通過(guò)地址線(xiàn)選擇操作的塊。這樣,LCD將被看作一個(gè)擁有一塊地址空間的存儲器進(jìn)行操作。

  3.4 SD卡驅動(dòng)電路

  本設計中使用的SD卡為MicroSD,也稱(chēng)TF卡。MicroSD卡是一種極細小的快閃存儲器卡,主要應用于移動(dòng)電話(huà),但因它的體積微小和儲存容量的不斷提升,現在已經(jīng)使用于GPS設備、便攜式音樂(lè )播放器、數碼相機和一些快閃存儲器盤(pán)中。MicroSD卡引腳圖如圖9所示。

  MicroSD卡與SD卡一樣,有SPI和SDIO兩種操作時(shí)總線(xiàn)。SPI總線(xiàn)相對于SDIO總線(xiàn)接口簡(jiǎn)單,但速度較慢。我們使用SDIO模式。

  MicroSD卡在SDIO模式時(shí)有4條數據線(xiàn)。

  其實(shí),MicroSD在SDIO模式時(shí)有1線(xiàn)模式和4線(xiàn)模式,也就是分別使用1根或4根數據線(xiàn)。當然,4線(xiàn)模式的速度要快于1線(xiàn)模式,但操作卻較復雜。本設計中使用的是SDIO的4線(xiàn)模式。MicroSD卡的硬件連接圖如圖3所示。

    

 

  3.5 觸摸屏電路

  本設計在測量的通道和顯示設置上,除了使用按鍵設置,還使用觸摸屏進(jìn)行設置。

  觸摸屏使用芯片TSC2046控制,其硬件連接圖如圖4所示。

    

 

  在圖4中,TSC2046可以采集觸摸屏的點(diǎn)坐標,從而確定觸摸的位置,進(jìn)行人機交互。

  STM32單片機通過(guò)SPI總線(xiàn)與TSC2046通信,可以得到觸摸信息。本設計使用觸摸屏進(jìn)行測量通道數的設置和測量速度的設置。

  4.系統軟件設計

  4.1 軟件流程

  系統軟件部分使用C語(yǔ)言編程,同時(shí)使用STM32官方提供的固件庫,使用的版本為3.5版。STM32固件庫也稱(chēng)固件函數庫或標準外設庫,是一個(gè)固件函數包,它由程序、數據結構和宏組成,包括了微控制器所有外設的性能特征。該函數庫還包括每一個(gè)外設的驅動(dòng)描述和應用實(shí)例,為開(kāi)發(fā)者訪(fǎng)問(wèn)底層硬件提供了一個(gè)中間API,通過(guò)使用固件函數庫,無(wú)需深入掌握底層硬件細節,開(kāi)發(fā)者就可以輕松應用每一個(gè)外設。因此,使用固態(tài)函數庫可以大大減少用戶(hù)的程序編寫(xiě)時(shí)間,進(jìn)而降低開(kāi)發(fā)成本。每個(gè)外設驅動(dòng)都由一組函數組成,這組函數覆蓋了該外設所有功能。簡(jiǎn)單的說(shuō),使用標準外設庫進(jìn)行開(kāi)發(fā)最大的優(yōu)勢就在于可以使開(kāi)發(fā)者不用深入了解底層硬件細節就可以靈活規范的使用每一個(gè)外設。

  軟件部分為了方便存儲數據的查看和讀取,在MicroSD卡部分使用了fatfs文件系統。

  FAFFS是面向小型嵌入式系統的一種通用的FAT文件系統。FATFS完全是由AISI C語(yǔ)言編寫(xiě)并且完全獨立于底層的I/O介質(zhì)。因此它可以很容易地不加修改地移植到其他的處理器當中,如8051、PIC、AVR、SH、Z80、H8、ARM等。

  FATFS支持FAT12、FAT16、FAT32等格式,所以我們利用前面寫(xiě)好的SDIO驅動(dòng),把FATFS文件系統代碼移植到工程之中,就可以利用文件系統的各種函數,對已格式化的SD卡進(jìn)行讀寫(xiě)文件了。

  以上是系統軟件設計的兩個(gè)主要部分,其他還有LCD驅動(dòng)程序,ADC和DMA驅動(dòng)程序,按鍵中斷程序等。

  4.2 軟件文件結構

  文件main.c是整個(gè)程序的入口文件,也是主要文件。global.c和global.h主要是共用的函數和全局性的宏定義。LCD_Disp.c和LCD_Disp.h是基于STM32固件庫的對LCD的底層驅動(dòng)函數。Lcdfunc.c和lcdfunc.h是為了主程序更方便的操作LCD而編寫(xiě)的一些常用的復雜的對LCD底層函數的封裝函數。sdio_sdcard.c和sdio_sdcard.h是基于STM32固件庫的對MicroSD卡的底層驅動(dòng)函數。fat文件系統在STM32上的使用需要針對具體類(lèi)型的硬件進(jìn)行配置,所以它是基于MicroSD卡的底層驅動(dòng)程序的。fatfunc.c和fatfunc.h是對fat文件操作接口的一些封裝,是針對本設計中對文件的操作編寫(xiě)的。其余的按鍵中斷和ADC等操作的函數是直接基于STM32固件庫的,并直接被主程序調用。

  5.總結

  STM32在速度、功耗方面性能都更加優(yōu)越,其豐富的外設也更加方便設計。另外,STM32價(jià)格較低,在成本上也有優(yōu)勢。STM32適合于控制電子設備的設計。設計中使用的ADC是STM32上的12位ADC,能夠滿(mǎn)足一定的測量精度,對于較高的測量要求,則需要使用更高精確度的ADC.但是使用高精度ADC和DSP芯片,將很大的增加開(kāi)發(fā)成本。本設計方案完成了多路電壓測量的各項功能,但是還需要在使用中檢測其穩定可靠性,以使設計更加完善。



關(guān)鍵詞: STM32 芯片

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>