基于STM32的簡易數(shù)字電壓表_第1頁
基于STM32的簡易數(shù)字電壓表_第2頁
基于STM32的簡易數(shù)字電壓表_第3頁
基于STM32的簡易數(shù)字電壓表_第4頁
基于STM32的簡易數(shù)字電壓表_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學(xué)號12080201212014-2015學(xué)年 第二學(xué)期嵌入式系統(tǒng)課程設(shè)計報告基于STM32的簡易數(shù)字電壓表網(wǎng)絡(luò)工程網(wǎng)絡(luò)工程12( 1)盧東亞指導(dǎo)教師:機(jī) 學(xué) 院2015年5月22日目錄.1. .1.1. .2.2. .2.3. .8.1.01.0.1.2.1.6. .1.7.1. 設(shè)計內(nèi)容及要求 1.1. 設(shè)計內(nèi)容 1.2. 設(shè)計要求 2. 概要設(shè)計 2.1. 硬件電路 2.2. 實驗板中的連線圖2.3. STM32 介紹2.4. 主要函數(shù)說明 3. 設(shè)計過程或程序代碼 3.1. 設(shè)計過程 3.2. 程序代碼 4. 設(shè)計結(jié)果與分析 參考文獻(xiàn) 計算機(jī)學(xué)院嵌入式系統(tǒng)課程設(shè)計報告1.設(shè)計內(nèi)容及要求

2、本文以ARM系列的STM32芯片為核心設(shè)計了一個簡易數(shù)字電壓表。 簡易數(shù) 字電壓表采用模數(shù)轉(zhuǎn)換思想來實現(xiàn),通過硬件電路和軟件程序相結(jié)合,可輸出自定 義測量電壓,通過調(diào)節(jié)模數(shù)轉(zhuǎn)換電位器使在一定范圍內(nèi)可任意改變。輸出的電壓 格式和精度的改變通過軟件控制,輸出電壓的大小的改變通過硬件實現(xiàn)。 介紹了 的生成原理、硬件電路和軟件部分的設(shè)計原理。該簡易數(shù)字電壓表具有體積小、 價格低、性能穩(wěn)定、功能齊全的優(yōu)點。1、將一模擬電壓信號輸入到A/D轉(zhuǎn)換器的任一通道。2、A/D轉(zhuǎn)換器將輸入的模擬電壓值轉(zhuǎn)換成數(shù)字量。3、根據(jù)學(xué)習(xí)開發(fā)板所用A/D轉(zhuǎn)換器的類型,將轉(zhuǎn)換成的數(shù)字量通過一定的算法 轉(zhuǎn)換成相應(yīng)的電壓值。4、 將

3、轉(zhuǎn)換成電壓值通過學(xué)習(xí)開發(fā)板上的 LCD顯示屏進(jìn)行顯示,要求顯示一位 小數(shù)。1.2. 設(shè)計要求利用STM32F103內(nèi)部A/D及2.8寸TFT液晶屏,設(shè)計完成一個數(shù)字電壓表。 要求:數(shù)字電壓表可測量0-5V輸入電壓,電壓值通過液晶屏顯示。 工作原理及設(shè)計思路:簡易數(shù)字電壓表的設(shè)計由A/D轉(zhuǎn)換.數(shù)據(jù)處理及顯示控制等組成。利用 STM32F103內(nèi)部A/D轉(zhuǎn)換器將模擬電壓轉(zhuǎn)換成數(shù)字量,經(jīng) STM32F103計算將數(shù)字量轉(zhuǎn)換成對應(yīng)的電壓值,并通過液晶屏輸出。數(shù)字電壓表的基本組成部分是 A/D變換器+電子計數(shù)器。通常,被測直流電壓 經(jīng)A/D轉(zhuǎn)換器變?yōu)榕c之成正比的閘門時間,在此閘門時間內(nèi)計數(shù),用數(shù)字顯示

4、被測電壓值??梢夾/D變換器是DVM的核心部件。本課設(shè)上采用的是單片 A/D 轉(zhuǎn)換器(含模擬電路與數(shù)字電路)集成在一片芯片上,配以LCD或LED數(shù)字器件后能顯示A/D轉(zhuǎn)換結(jié)果的集成電路。它們均屬于大規(guī)模的集成電路,能以最 簡的方式構(gòu)成DVM。在此采用ICL7106A/D轉(zhuǎn)換器。但由于STM32F103內(nèi)部集 成了 A/D轉(zhuǎn)換器,所以不需要外圍的A/D轉(zhuǎn)換器,這就體現(xiàn)了 STM32得集成特 性。1計算機(jī)學(xué)院嵌入式系統(tǒng)課程設(shè)計報告a52.1.硬件電路2.概要設(shè)計設(shè)計的核心STM32嵌入式處理器的硬件電路如圖1所示VIB0T71PAIIJ7Z0恤T$-ADCCBl ETKRAV-VT2_Rn.ADC

5、_INlTlM:_CHJPA2 U5AE!.T:_TXADC_i T1U;_CK3PAiJTIX1 TTM2_CH2 SH1_SCKPS山JESTTBISCHlSPIl MIW西貧就CH2融I?B5ECl_SCLTWi_CHl VSART1_TXPB.-CC rSEA KMCCH; VSiART 匸 EXPBSTMi CH5 I2C1 SCLCANR工PS 弘mtctt斗口 ciMda CANTKPBID EC2_Sa.VSACIj_rKTTM:jCK3PSll EC;_SDAUARr3_RX TM2_tH4 ?llS?Il-NSSr;C MEAVSARfa CKiTIM BEIK rl 汕曲

6、0:1;$血 MCTSTBUjmK P914 ?E_MSOUSJUiI3_RTSi_Cn2NPBli 5P12 MOSI-EMl CESKPDO OSC ESPDPOSciFn亠J7*y3o4c寸4o-onrpiqRilVwrJ IDKfIKTXDl0-o oKi:3:圖2硬件連接圖。2.3. STM32 介紹位的RISC內(nèi)核,STM32F103XX增強型系列使用高性能的 ARM Cortex-M3 32工作頻率為72MHz,內(nèi)置高速存儲器(高達(dá)128K字節(jié)的閃存和20K字節(jié)的 SRAM),豐富的增強I/O端口和聯(lián)接到兩條APB總線的外設(shè)。所有型號的器件 都包含2個12位的ADC、3個通用16

7、位定時器和一個PWM定時器,還包含標(biāo) 準(zhǔn)和先進(jìn)的通信接口:多達(dá)2個I2C和SPI、3個USART、一個USB和一個CAN。STM32F103XX增強型系列工作于-40 C至+105 C的溫度范圍,供電電壓2.0V 至3.6V, 系列的省電模式保證低功耗應(yīng)用的要求。完整的STM32F103XX增強型系列產(chǎn)品包括從 36腳至100腳的五種不同封裝 形式;根據(jù)不同的封裝形式,器件中的外設(shè)配置不盡相同。 下面給出了該系列產(chǎn) 品中所有外設(shè)的基本介紹。這些豐富的外設(shè)配置,使得 STM32F103XX增強型微 控制器適合于多種應(yīng)用場合:電機(jī)驅(qū)動和應(yīng)用控制醫(yī)療和手持設(shè)備PC外設(shè)和GPS平臺工業(yè)應(yīng)用:可編程控制

8、器、變頻器、打印機(jī)和掃描儀 警報系統(tǒng),視頻對講,和暖氣通風(fēng)空調(diào)系統(tǒng)ARM?的Cortex?-M3核心并內(nèi)嵌閃存和 SRAM ARM的Cortex-M3處理器是 最新一代的嵌入式ARM處理器,它為實現(xiàn)MCU的需要提供了低成本的平 臺、 縮減的管腳數(shù)目、降低的系統(tǒng)功耗,同時提供卓越的計算性能和先進(jìn)的中斷系統(tǒng) 響應(yīng)。ARM的Cortex-M3是32位的RISC處理器,提供額外的代碼效率,在 通常8和16位系統(tǒng)的存儲空間上得 到了 ARM核心的高性能。STM32F103xx 增強型系列擁有內(nèi)置的ARM核心,因此它與所有的ARM工具和軟件兼容。圖 一是該系列產(chǎn)品的功能框圖。高達(dá)128K字節(jié)的內(nèi)置閃存存儲

9、器,用于存放程序和數(shù)據(jù)。內(nèi)置SRAM多達(dá)20K字節(jié)的內(nèi)置SRAM,CPU能以0等待周期訪問(讀/寫)。嵌套的向量式中斷控制器(NVIC) STM32F103XX增強型內(nèi)置嵌套的向量式中斷 控制器,能夠處理多達(dá)43個可屏蔽中斷通道(不包括16個Cortex-M3的中斷線) 和16個優(yōu)先級。內(nèi)置閃存存儲器緊耦合的NVIC能夠達(dá)到低延遲的中斷響應(yīng)處理 中斷向量入口地址直接進(jìn)入核心緊耦合的NVIC接口 允許中斷的早期處理 處理晚到的較高優(yōu)先級中斷 支持中斷尾部鏈接功能 自動保存處理器狀態(tài) 中斷返回時自動恢復(fù),無需額外指令開銷 該模塊以最小的中斷延遲提供靈活的中斷管理功能。外部中斷/事件控制器(EXTI

10、)外部中斷/事件控制器包含19個邊沿檢測器,用 于產(chǎn)生中斷/事件請求。 每個中斷線都可以獨立地配置它的觸發(fā)事件(上升沿或下降沿或雙邊沿),能夠單獨地被屏蔽;有一 個掛起寄存器維持所有中斷請求的 狀態(tài)。EXTI可以檢測到脈沖寬度小于內(nèi)部 APB2的時鐘周期。多達(dá)80個通用 I/O 口連接到16個外部中斷線。時鐘和啟動系統(tǒng)時鐘的選擇是在啟動時進(jìn)行,復(fù)位時內(nèi)部 8MHz的RC振蕩 器被選為默認(rèn)的CPU時鐘,隨后可以 選擇外部的、具失效監(jiān)控的416MHz時 鐘;當(dāng)外部時鐘失效時,它將被隔離,同時會產(chǎn)生相應(yīng)的中斷。同樣,在需要時可以采取對PLL時鐘完全的中斷管理(如當(dāng)一個外接的振蕩器失效時)。具有 多個

11、預(yù)分頻器用于配置AHB的頻率、高速APB(APB2)和低速APB(APB1)區(qū)域。 AHB和高速APB的最高頻率是72MHz,低速APB的最高頻率為36MHz。自舉模式在啟動時,自舉管腳被用于選擇三種自舉模式中的一種:從用戶閃存自舉從系統(tǒng)存儲器自舉從SRAM自舉自舉加載器存放于系統(tǒng)存儲器中,可以通過USART對閃存重新編程。供電方案 VDD = 2.0至3.6V: VDD管腳提供I/O管腳和內(nèi)部調(diào)壓器的供電。 VSSA,VDDA = 2.0至3.6V:為ADC、復(fù)位模塊、RC振蕩器和PLL的模擬 計算機(jī)學(xué)院嵌入式系統(tǒng)課程設(shè)計報告部分提供供電。使用 ADC時,VDD不得小于2.4V。 VBAT

12、= 1.8至3.6V :當(dāng)(通過電源開關(guān))關(guān)閉VDD時,為RTC、外部32kHz 振蕩器和后備寄存器供電。供電監(jiān)控器本產(chǎn)品內(nèi)部集成了上電復(fù)位(POR)/掉電復(fù)位(PDR)電路,該電路始終處于工作狀 態(tài),保證系統(tǒng)在供 電超過2V時工作;當(dāng)VDD低于設(shè)定的閥值(VPOR/PDR)時, 置器件于復(fù)位狀態(tài),而不必使用外部復(fù) 位電路。器件中還有一個可編程電壓監(jiān) 測器(PVD),它監(jiān)視VDD供電并與閥值VPVD比較,當(dāng)VDD低于或高 于閥值 VPVD時將產(chǎn)生中斷,中斷處理程序可以發(fā)出警告信息或?qū)⑽⒖刂破鬓D(zhuǎn)入安全模 式。需要通過程序開啟PVD。電壓調(diào)壓器調(diào)壓器有三個操作模式:主模式(MR)、低功耗模式(LP

13、R)和關(guān)斷模 式主模式(MR)用于正常的運行操作低功耗模式(LPR)用于CPU的停機(jī)模式關(guān)斷模式用于CPU的待機(jī)模式:調(diào)壓器的輸出為高阻狀態(tài),內(nèi)核電路的供電 切斷,調(diào)壓器處于 零消耗狀態(tài)(但寄存器和SRAM的內(nèi)容將丟失)該調(diào)壓器在復(fù) 位后始終處于工作狀態(tài),在待機(jī)模式下關(guān)閉處于高阻輸出。低功耗模式STM32F103XX增強型支持三種低功耗模式,可以在要求低功耗、短 啟動時間和多種喚醒事件之間達(dá)到最佳的平衡。睡眠模式 在睡眠模式,只有CPU停止,所有外設(shè)處于工作狀態(tài)并可在發(fā)生 中斷/事件時喚醒CPU。停機(jī)模式在保持SRAM和寄存器內(nèi)容不丟失的情況下,停機(jī)模式可以達(dá)到 最低的電能消耗。在停機(jī)模式 下

14、,停止所有內(nèi)部1.8V部分的供電,PLL、HSI 和HSE的RC振蕩器被關(guān)閉,調(diào)壓器可以被置于 普通模式或低功耗模式。可以通過任一配置成EXTI的信號把微控制器從停機(jī)模式中喚醒,EXTI信號可以 是16個外部I/O 口之一、PVD的輸出、RTC鬧鐘或USB的喚醒信號。待機(jī)模式 在待機(jī)模式下可以達(dá)到最低的電能消耗。內(nèi)部的電壓調(diào)壓器被關(guān) 閉,因此所有內(nèi)部1.8V部分的 供電被切斷;PLL、HSI和HSE的RC振蕩器也 被關(guān)閉;進(jìn)入待機(jī)模式后,SRAM和寄存器的 內(nèi)容將消失,但后備寄存器的內(nèi) 容仍然保留,待機(jī)電路仍工作。RTC、從待機(jī)模式退出的條件是:NRST上的外部復(fù)位信號、IWDG復(fù)位、WKUP

15、管腳 上的一個上升 邊沿或RTC的鬧鐘到時。注:在進(jìn)入停機(jī)或待機(jī)模式時, IWDG和對應(yīng)的時鐘不會被停止。DMA靈活的7路通用DMA可以管理存儲器到存儲器、設(shè)備到存儲器和存儲器 到設(shè)備的數(shù)據(jù)傳輸;DMA控 制器支持環(huán)形緩沖區(qū)的管理,避免了控制器傳輸?shù)?達(dá)緩沖區(qū)結(jié)尾時所產(chǎn)生的中斷。每個通道都有專門的硬件 DMA請求邏輯,同時可以由軟件觸發(fā)每個通道;傳輸?shù)拈L度、傳輸?shù)脑吹刂泛湍繕?biāo)地址都可以通過軟件單獨設(shè)置。 DMA可以用于主要的外設(shè):SPI、I2C、USART、通用和高 級定時器TIMx和ADC。RTC(實時時鐘)和后備寄存器 RTC和后備寄存器通過一個開關(guān)供電,在VDD有 效時該開關(guān)選擇VDD供

16、電,否則由VBAT管腳供 電。后備寄存器(10個16位 的寄存器)可以用于在VDD消失時保存數(shù)據(jù)。實時時鐘具有一組連續(xù)運行的計數(shù)器,可以通過適當(dāng)?shù)能浖峁┤諝v時鐘功能, 還具有鬧鐘中斷和 階段性中斷功能。RTC的驅(qū)動時鐘可以是一個使用外部晶體 的32.768kHz的振蕩器、內(nèi)部低功耗RC振蕩器或高速的外部時鐘經(jīng)128分頻。 內(nèi)部低功耗RC振蕩器的典型頻率為32kHz。為補償天然晶體的偏差,RTC的 校準(zhǔn)是通過輸出一個512Hz的信號進(jìn)行。RTC具有一個32位的可編程計數(shù)器, 使用 比較寄存器可以產(chǎn)生鬧鐘信號。有一個20位的預(yù)分頻器用于時基時鐘,默 認(rèn)情況下時鐘為32.768kHz時它將產(chǎn)生一個

17、1秒長的時間基準(zhǔn)。獨立的看門狗獨立的看門狗是基于一個12位的遞減計數(shù)器和一個8位的預(yù)分頻器,它由一個 獨立的32kHz的內(nèi)部RC振蕩器提供時鐘,應(yīng)為這個 RC振蕩器獨立于主時鐘, 所以它可運行于停機(jī)和待機(jī)模式。它可以 被當(dāng)成看門狗用于在發(fā)生問題時復(fù)位 整個系統(tǒng),或作為一個自由定時器為應(yīng)用程序提供超時管理。 通過選擇字節(jié)可 以配置成是軟件看門狗或硬件看門狗。在調(diào)試模式,計數(shù)器可以被凍結(jié)。窗口看門狗窗口看門狗內(nèi)有一個7位的遞減計數(shù)器,并可以設(shè)置成自由運行。它可以被當(dāng)成 看門狗用于在發(fā)生 問題時復(fù)位整個系統(tǒng)。它由主時鐘驅(qū)動,具有早期預(yù)警中斷 功能;在調(diào)試模式,計數(shù)器可以被凍 結(jié)。系統(tǒng)時基定時器這個定

18、時器是專用于操作系統(tǒng),也可當(dāng)成一個標(biāo)準(zhǔn)的遞減計數(shù)器。它具有下述特 性:24位的遞減計數(shù)器重加載功能可屏蔽的計數(shù)器為0中斷 可編程時鐘源通用定時器(TIMx)產(chǎn)品中內(nèi)置了多達(dá)3個同步的標(biāo)準(zhǔn)定時器。每個定時器都有一個16位的自 動加 載遞加/遞減計數(shù)器、一個16位的預(yù)分頻器和4個獨立的通道,每個通道都可用 于輸入捕獲、輸 出比較、PWM和單脈沖模式輸出,在最大的圭寸裝配置中可提 供最多12個輸入捕獲、輸出比較或 PWM通道。它們還能通過定時器鏈接功能 與高級控制定時器共同工作,提供同步或事件鏈接功能。在調(diào)試模式下,計數(shù)器可以被凍結(jié)。任一標(biāo)準(zhǔn)定時器都能用于產(chǎn)生 PWM輸出。每個定時器都有獨 立的DM

19、A請求機(jī)制。高級控制定時器(TIM1)高級控制定時器(TIM1)可以被看成是一個分配到6個通道的三相PWM發(fā)生器, 它還可以被當(dāng)成一個完整的通用定時器。四個獨立的通道可以用于:輸入捕獲 輸出比較 產(chǎn)生PWM(邊緣或中心對齊模式) 單脈沖輸出反相PWM輸出,具程序可控的死區(qū)插入功能配置為16位標(biāo)準(zhǔn)定時器時,它與TIMx定時器具有相同的功能。配置為16位PWM發(fā)生器時,它具有 全調(diào) 制能力(0100%)。在調(diào)試模式下,計數(shù)器可以被凍結(jié)。很多功能都與標(biāo)準(zhǔn)的TIM定時器相同,內(nèi)部結(jié)構(gòu)也相同,因此高級控制定時器可以通過定時器鏈接功能與TIM定時器協(xié)同操作,提供同步或事件鏈接功能。I 2C總線多達(dá)2個I2

20、C總線接口,能夠工作于多主和從模式,支持標(biāo)準(zhǔn)和快速模式。SM總線2.0版/PM總線它們支持雙從地址尋址(只有7位)和主模式下的7/10位尋址。內(nèi)置了硬件 CRC 發(fā)生器/校驗器。它們可以使用DMA操作并支持通用同步/異步接受發(fā)送器(USART)其他USART接口通信速率可 信號管理、支持IrDA的SIRUSART接口可以使用DMA其中一個USART接口通信速率可達(dá)4.5兆位/秒,達(dá)2.25兆位/秒。接口具 有硬件的CTS和RTSENDEC、與ISO7816兼容并具有LIN主/從功能。操作。串行外設(shè)接口(SPI)多達(dá)2個SPI接口,在從或主模式下,全雙工和半雙工的通信速率可達(dá)18兆位/秒。3位的

21、預(yù)分頻器可 產(chǎn)生8種主模式頻率,可配置成每幀8位或16位。硬件 的CRC產(chǎn)生/校驗支持基本的SD卡和MMC模式。2個SPI接口都可以使用 DMA操作。控制器區(qū)域網(wǎng)絡(luò)(CAN)CAN接口兼容規(guī)范2.0A和2.0B (主動),位速率達(dá)1兆位/秒。它可以接收和發(fā) 送11位標(biāo)識符的標(biāo)準(zhǔn) 幀,也接收和發(fā)送29位標(biāo)識符的擴(kuò)展幀。具有2個接收 FIFOs, 3級14個可調(diào)節(jié)的濾波器。內(nèi)部SRAM緩沖最多可處理32個報文對象。通用串行總線(USB)STM32F103XX增強型系列產(chǎn)品內(nèi)嵌一個 USB設(shè)備,遵循USB全速標(biāo)準(zhǔn);USB 接口實現(xiàn)全速(12兆位/秒)的設(shè)備功能;具有可軟件配置的端點和待機(jī) /恢復(fù)功

22、能。專用的48MHz時鐘由內(nèi)部主PLL直接產(chǎn) 生。通用輸入輸出接口(GPIO)每個GPIO管腳都可以由軟件配置成輸出(推拉或開路)、輸入(帶或不帶上拉或下 拉)或其它的外設(shè)功 能;多數(shù)GPIO管腳都與數(shù)字或模擬的外設(shè)功能管腳共用。 所有的GPIO管腳都有大電流通過能力。在需要的情況下,I/O管腳的外設(shè)功能可以通過一個特定的操作鎖定,以避免意外的寫入I/O寄存器。 在APB2上的I/O腳可達(dá)18MHz的翻轉(zhuǎn)速度。ADC(模擬/數(shù)字轉(zhuǎn)換器)STM32F103XX增強型產(chǎn)品內(nèi)嵌2個12位的模擬/數(shù)字轉(zhuǎn)換器(ADC),每個ADC 有多達(dá)16個外部通道,可以執(zhí)行單次或掃描轉(zhuǎn)換模式;在掃描模式下,轉(zhuǎn)換在

23、一組選定的模擬輸入上自動進(jìn)行。ADC接口上額外的邏輯功能允許:同時采樣和保持交叉采樣和保持單次采樣ADC可以使用DMA操作。模擬看門狗功能允許非常精準(zhǔn)地監(jiān)視一路、 多路或所有選中的被轉(zhuǎn)換電壓,當(dāng)被 監(jiān)視的信號超出預(yù) 置的閥值時,將產(chǎn)生中斷。由標(biāo)準(zhǔn)定時器(TIMx)和高級控制 定時器(TIM1)產(chǎn)生的事件,可以分別內(nèi)部級聯(lián)到 ADC的開始觸發(fā)、 外部觸發(fā) 和DMA觸發(fā),允許應(yīng)用程序同步 AD轉(zhuǎn)換和時鐘的操作。溫度傳感器溫度傳感器產(chǎn)生一個隨溫度線性變化的電壓,轉(zhuǎn)換范圍在2V VDDA D0 D1 D2 D3 D4 D5 D6 D7 J數(shù)據(jù)輸出一開始轉(zhuǎn)換 SOC結(jié)束轉(zhuǎn)換 EOC輸出使能在查詢方式下,

24、軟件可通過讀取 ADC模塊轉(zhuǎn)換完畢引腳EOC的狀態(tài)或狀 態(tài)寄存器中的轉(zhuǎn)換完成標(biāo)志位判斷本次 A/D是否結(jié)束;若結(jié)束則從數(shù)據(jù)總線或數(shù)據(jù)寄存器中讀取 A/D結(jié)果數(shù)據(jù)。2、ADC模擬/數(shù)字轉(zhuǎn)換器:STM32的ADC是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有 18個通道可測 量16個外部和2個內(nèi)部信號源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間 斷模式執(zhí)行。ADC的結(jié)果可以左對齊或右對齊方式存儲在 16位數(shù)據(jù)寄存器中。3、轉(zhuǎn)換特點:STM32的ADC最大的轉(zhuǎn)換速率為1Mhz,也就是轉(zhuǎn)換時間為 1us(ADCCLK=14M,采樣周期為1.5個ADC時鐘下得到),不能讓ADC的時鐘超 過14M,否則將導(dǎo)致

25、結(jié)果準(zhǔn)確度下降。4、STM32將ADC的轉(zhuǎn)換分為2個通道組:規(guī)則通道組和注入通道組。規(guī)則通道相當(dāng)于運行的程序,而注入通道就相當(dāng) 于中斷。在程序正常執(zhí)行的時候,中斷是可以打斷程序正常執(zhí)行的。同這個類似, 注入通道的轉(zhuǎn)換可以打斷規(guī)則通道的轉(zhuǎn)換, 在注入通道被轉(zhuǎn)換完成之后,規(guī)則通 道才得以繼續(xù)轉(zhuǎn)換。規(guī)則組設(shè)置后,可以按照設(shè)置的通道順序?qū)Ω魍ǖ肋M(jìn)行依次 采集。方便于對多路ADC通道的自動采集。注入組最多設(shè)置 4個通道,簡單來 講就是需要觸發(fā)才能采集設(shè)置的通道 ADC值。本設(shè)計選擇了采用規(guī)則組,設(shè)置了一個通道進(jìn)行自動采集。5、此設(shè)計顯示電壓的特點:本設(shè)計測量電壓值范圍為 0-3.3V的電壓,顯示誤差為

26、0.001V。 LCD實時顯示電壓值,MicroSD卡對數(shù)據(jù)進(jìn)行同步存儲。6、DMA請求:在這次設(shè)計中用到了 ADC轉(zhuǎn)換結(jié)果采用DMA傳遞方式。直接存儲器存取 用來提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。無須 CPU任何干預(yù),通過DMA數(shù)據(jù)可以快速地移動。這就節(jié)省了 CPU的資源來做 其他操作。7、LCD控制電路(1)本設(shè)計所使用的LCD為3寸,400X24(分辨率。LCD模塊使用STM3的 FSMC接口控制。3TFT顯示屏焊接在奮斗顯示轉(zhuǎn)接板上,在屏上貼有觸摸屏,通過40芯的接口與V3或者M(jìn)INI連接。32程序代碼1、主程序:int main(v oid)u16 len,

27、 c2le n,c3le n,c4le n;Voltage ;u8 c= u8 c2= u8 c3= u8 c4= u16 bkColor;len = sizeof(c)-1; c2le n = sizeof(c2)-1; c3le n = sizeof(c3)-1; c4le n = sizeof(c2)-1; bkColor = White;H.H.11./計算字節(jié)數(shù)長度sizeofO19系統(tǒng)時鐘配置為72MHz串口1初始化/ADC初始化/FSMC總線配置/液晶初始化RCC_Co nfiguratio n();Usart1_I nit();ADC_Co nfiguratio n();FSM

28、C_LCD_I nit();lcd_ln it();/ lcd_PutChar(10,10,g,0x0000,0xffff);/ LCD_test();USART_OUT(USART1,rn USART1 print AD_valuern);while (1)/間隔時間顯示轉(zhuǎn)換結(jié)果if (ticks+ = 900000) ticks = 0; Clock1s = 1;if (Clock1s) Clock1s = 0;%d rn.USART_OUT(USART1,The curre nt AD valueADC_Co nvertedValue); / 串口顯示字符段/Delay(0xAFFFFf

29、);Precent = (ADC_ConvertedValue*100/4096);/ 算出百分比,2 的 12 次幕 為 0xfffVoltage = Precent*33; / Voltage 為實際電壓值的 1000 倍. c43=(Voltage/1000+0) ;/取千位數(shù)的整數(shù)部分c45=(Voltage%1000)/100+0) ;/對千位數(shù)取余數(shù)后再取其百位的整數(shù)部分c46=(Voltage%100)/10)+0) ;/對百位數(shù)取余數(shù)后再取其十位的整數(shù)部分c47=(Voltage%10)+0); 對百位數(shù)取余數(shù)后再取其個位的整數(shù)部分lcd_P utStr_16x24_Ce nt

30、er(0, c3, c4le n,Black, bkColor);lcd_P utStr_16x24_Ce nter(L in e1, c, le n,Black, bkColor);lcd_P utStr_16x24_Ce nter(L in e2, c3, c3le n,Black, bkColor);lcd_P utStr_16x24_Ce nter(L in e3, c4, c4le n,Black, bkColor);lcd_P utStr_16x24_Ce nter(Li ne4, c2, c2le n,Black,bkColor);USART_OUT(USART1,The v v

31、alue =%d.%d%d%dVrn,c43=(Voltage/1000),c 45=(Voltage%1000)/100),c46=(Voltage%100)/10,c47=( Voltage%10); 顯示實際電壓值LCD_test();2、ADC配置:ADC_Configuration函數(shù)用于配置ADC1的通道11,因為只用了 ADC1所以采用了 ADC獨立模式,設(shè)置通道11進(jìn)入規(guī)則組,規(guī)則組里的通道只有1個,就是通道1,轉(zhuǎn)換用了掃描方式,軟件觸發(fā),轉(zhuǎn)換結(jié)果采用 DMA方式傳遞到2字節(jié)長度的緩存區(qū)里(ADC_ConvertedValue),默認(rèn)的ADCCLK為36MHz,采樣 周期是55

32、.5+12.5時鐘周期,相當(dāng)于采樣時間是間隔(68/36)us。void ADC_Co nfigurati on (void) ADC _ln itTy peDef ADC _ln itStructure; GP IO_I ni tTy peDef GPIO_ln itStructure; DMA_I nitTy peDef DMA_I ni tStructure;/設(shè)置AD模擬輸入端口為輸入1路AD規(guī)則通道GP IO_I ni tStructure.G PIO_Pin = GPIO_P in_1;GPIO_ln itStructure.G PIO_Mode = GP IO_Mode_AIN;

33、GP IO_I ni t(G PIOC, &GP IO _ln itStructure);/* En able DMA clock */RCC_AHB Perip hClockCmd(RCC_AHB Peri ph_DMA1, ENABLE);/* En able ADC1 and GPIOC clock */RCC_A PB2 Perip hClockCmd(RCC_A PB2 Perip h_ADC1 , ENABLE);*/* DMA cha nn el1 con figuration - 使能DMADMA_DeI ni t(DMA1_Cha nn el1);DMA_I nitStruc

34、ture.DMA_Peri pheralBaseAddr = ADC1_DR_Address;/DMA通道1的地址DMA_I nitStructure.DMA_MemoryBaseAddr = (u32 )&ADC_C on vertedValue; /DMA傳送地址DMA_I nitStructure.DMA_DIR = DMA_DIR_ Perip heralSRC;傳送方向DMA_I nitStructure.DMA_BufferSize = 1;傳送內(nèi)存大小,100個16位DMA_I nitStructure.DMA_ Perip heralI nc = DMA_ Peri phera

35、lI nc_Disable;DMA_I nitStructure.DMA_MemoryI nc = DMA_MemoryI nc_En able;傳送內(nèi)存地址遞增DMA_I nitStructure.DMA_Peri pheralDataSize=DMA_Peri pheralDataSize_HalfWord; /ADC1 轉(zhuǎn)換的數(shù)據(jù)是 16 位DMA_I nitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;傳送的目的地址是16位寬度DMA_I nitStructure.DMA_Mode = DMA_Mode_Circula

36、r;循環(huán)DMA_I nitStructure.DMA_Priority = DMA_Priority_High;DMA InitStructure.DMA M2M = DMA M2M Disable;DMA_I nit(DMA1_Cha nn el1, & DMA_I nitStructure);/*允許DMA1通道1傳輸結(jié)束中斷*/DMA_ITCo nfig(DMA1_Cha nn el1,DMA_IT_TC, ENABLE);使能DMA通道1 DMA_Cmd(DMA1_Cha nn el1, ENABLE);/ADC配置ADC_I ni tStructure.ADC_Mode = ADC_

37、Mode_I nde pendent;/ADC1 工作在獨立模式/模數(shù)轉(zhuǎn)換工作在ADC_I ni tStructure.ADC_Sca nCon vMode = ENABLE;掃描模式(多通道)還是單次(單通道)模式ADC _ln itStructure.ADC_Co ntin uousC on vMode = ENABLE;模數(shù)轉(zhuǎn)換工作在掃描模式(多通道)還是單次(單通道)模式ADC_I ni tStructure.ADC_ExternalTrigCo nv = ADC_ExternalTrigCo nv_No ne;/轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動ADC_lnitStructure.ADC_

38、DataAlign = ADC_DataAlign_Right;/ADC 數(shù)據(jù)右對 齊/規(guī)定了順序進(jìn)ADC InitStructure.ADC NbrOfChannel = 1;行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目。這個數(shù)目的取值范圍是 1到16ADC _ln it(ADC1, &ADC_I ni tStructure);/* ADC1 regular channels configuration 規(guī)則模式通道配置*/ADC1規(guī)則通道配置1,ADC_RegularCha nn elCo nfig(ADC1,ADC_Cha nn el_11,ADC_SampleTime_55Cycles5);通道 11 采樣時間 55.5 周期使能 ADC1 DMAADC_DMACmd(ADC1, ENABLE);使能ADC1ADC_Cmd(ADC1, ENABLE);/初始化ADC1校準(zhǔn)寄存器 ADC_ResetCalibratio n(ADC1);檢測ADC1校準(zhǔn)寄存器初始化是否完成while(ADC_GetResetCalibratio nStatus(ADC1);開始校準(zhǔn)A

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論