基于.STM32的簡(jiǎn)易數(shù)字電壓表_第1頁(yè)
基于.STM32的簡(jiǎn)易數(shù)字電壓表_第2頁(yè)
基于.STM32的簡(jiǎn)易數(shù)字電壓表_第3頁(yè)
基于.STM32的簡(jiǎn)易數(shù)字電壓表_第4頁(yè)
基于.STM32的簡(jiǎn)易數(shù)字電壓表_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

...wd......wd......wd...學(xué)號(hào)20142014-2015學(xué)年第二學(xué)期《嵌入式系統(tǒng)》課程設(shè)計(jì)報(bào)告題目:基于STM32的簡(jiǎn)易數(shù)字電壓表專業(yè):網(wǎng)絡(luò)工程班級(jí):網(wǎng)絡(luò)工程12〔1〕姓名:盧東亞指導(dǎo)教師:馮康成績(jī):計(jì)算機(jī)學(xué)院2015年5月22日目錄TOC\o"1-2"\h\z\u256471.設(shè)計(jì)內(nèi)容及要求135781.1.設(shè)計(jì)內(nèi)容1151451.2.設(shè)計(jì)要求1183272.概要設(shè)計(jì)2274642.1.硬件電路2221352.2.實(shí)驗(yàn)板中的連線圖2160252.3.STM32介紹3173652.4.主要函數(shù)說(shuō)明828543.設(shè)計(jì)過(guò)程或程序代碼10164663.1.設(shè)計(jì)過(guò)程1038163.2.程序代碼12272754.設(shè)計(jì)結(jié)果與分析163168參考文獻(xiàn)17設(shè)計(jì)內(nèi)容及要求設(shè)計(jì)內(nèi)容本文以ARM系列的STM32芯片為核心設(shè)計(jì)了一個(gè)簡(jiǎn)易數(shù)字電壓表。簡(jiǎn)易數(shù)字電壓表采用模數(shù)轉(zhuǎn)換思想來(lái)實(shí)現(xiàn),通過(guò)硬件電路和軟件程序相結(jié)合,可輸出自定義測(cè)量電壓,通過(guò)調(diào)節(jié)模數(shù)轉(zhuǎn)換電位器使在一定范圍內(nèi)可任意改變。輸出的電壓格式和精度的改變通過(guò)軟件控制,輸出電壓的大小的改變通過(guò)硬件實(shí)現(xiàn)。介紹了的生成原理、硬件電路和軟件局部的設(shè)計(jì)原理。該簡(jiǎn)易數(shù)字電壓表具有體積小、價(jià)格低、性能穩(wěn)定、功能齊全的優(yōu)點(diǎn)。1、將一模擬電壓信號(hào)輸入到A/D轉(zhuǎn)換器的任一通道。2、A/D轉(zhuǎn)換器將輸入的模擬電壓值轉(zhuǎn)換成數(shù)字量。3、根據(jù)學(xué)習(xí)開(kāi)發(fā)板所用A/D轉(zhuǎn)換器的類型,將轉(zhuǎn)換成的數(shù)字量通過(guò)一定的算法轉(zhuǎn)換成相應(yīng)的電壓值。4、將轉(zhuǎn)換成電壓值通過(guò)學(xué)習(xí)開(kāi)發(fā)板上的LCD顯示屏進(jìn)展顯示,要求顯示一位小數(shù)。設(shè)計(jì)要求利用STM32F103內(nèi)部A/D及2.8寸TFT液晶屏,設(shè)計(jì)完成一個(gè)數(shù)字電壓表。要求:數(shù)字電壓表可測(cè)量0-5V輸入電壓,電壓值通過(guò)液晶屏顯示。工作原理及設(shè)計(jì)思路:簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)由A/D轉(zhuǎn)換.數(shù)據(jù)處理及顯示控制等組成。利用STM32F103內(nèi)部A/D轉(zhuǎn)換器將模擬電壓轉(zhuǎn)換成數(shù)字量,經(jīng)STM32F103計(jì)算將數(shù)字量轉(zhuǎn)換成對(duì)應(yīng)的電壓值,并通過(guò)液晶屏輸出。數(shù)字電壓表的根本組成局部是A/D變換器+電子計(jì)數(shù)器。通常,被測(cè)直流電壓經(jīng)A/D轉(zhuǎn)換器變?yōu)榕c之成正比的閘門(mén)時(shí)間,在此閘門(mén)時(shí)間內(nèi)計(jì)數(shù),用數(shù)字顯示被測(cè)電壓值。可見(jiàn)A/D變換器是DVM的核心部件。本課設(shè)上采用的是單片A/D轉(zhuǎn)換器〔含模擬電路與數(shù)字電路〕集成在一片芯片上,配以LCD或LED數(shù)字器件后能顯示A/D轉(zhuǎn)換結(jié)果的集成電路。它們均屬于大規(guī)模的集成電路,能以最簡(jiǎn)的方式構(gòu)成DVM。在此采用ICL7106A/D轉(zhuǎn)換器。但由于STM32F103內(nèi)部集成了A/D轉(zhuǎn)換器,所以不需要外圍的A/D轉(zhuǎn)換器,這就表達(dá)了STM32得集成特性。概要設(shè)計(jì)硬件電路設(shè)計(jì)的核心STM32嵌入式處理器的硬件電路如圖1所示圖1STM32嵌入式處理器的硬件電路實(shí)驗(yàn)板中的連線圖連線圖如圖2所示。圖2硬件連接圖。STM32介紹STM32F103xx增強(qiáng)型系列使用高性能的ARMCortex-M332位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置高速存儲(chǔ)器(高達(dá)128K字節(jié)的閃存和20K字節(jié)的SRAM),豐富的增強(qiáng)I/O端口和聯(lián)接到兩條APB總線的外設(shè)。所有型號(hào)的器件都包含2個(gè)12位的ADC、3個(gè)通用16位定時(shí)器和一個(gè)PWM定時(shí)器,還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口:多達(dá)2個(gè)I2C和SPI、3個(gè)USART、一個(gè)USB和一個(gè)CAN。STM32F103xx增強(qiáng)型系列工作于-40°C至+105°C的溫度范圍,供電電壓2.0V至3.6V,一系列的省電模式保證低功耗應(yīng)用的要求。完整的STM32F103xx增強(qiáng)型系列產(chǎn)品包括從36腳至100腳的五種不同封裝形式;根據(jù)不同的封裝形式,器件中的外設(shè)配置不盡一樣。下面給出了該系列產(chǎn)品中所有外設(shè)的根本介紹。這些豐富的外設(shè)配置,使得STM32F103xx增強(qiáng)型微控制器適合于多種應(yīng)用場(chǎng)合:●電機(jī)驅(qū)動(dòng)和應(yīng)用控制●醫(yī)療和手持設(shè)備●PC外設(shè)和GPS平臺(tái)●工業(yè)應(yīng)用:可編程控制器、變頻器、打印機(jī)和掃描儀●警報(bào)系統(tǒng),視頻對(duì)講,和暖氣通風(fēng)空調(diào)系統(tǒng)ARM?的Cortex?-M3核心并內(nèi)嵌閃存和SRAMARM的Cortex-M3處理器是最新一代的嵌入式ARM處理器,它為實(shí)現(xiàn)MCU的需要提供了低本錢(qián)的平臺(tái)、縮減的管腳數(shù)目、降低的系統(tǒng)功耗,同時(shí)提供卓越的計(jì)算性能和先進(jìn)的中斷系統(tǒng)響應(yīng)。ARM的Cortex-M3是32位的RISC處理器,提供額外的代碼效率,在通常8和16位系統(tǒng)的存儲(chǔ)空間上得到了ARM核心的高性能。STM32F103xx增強(qiáng)型系列擁有內(nèi)置的ARM核心,因此它與所有的ARM工具和軟件兼容。圖一是該系列產(chǎn)品的功能框圖。內(nèi)置閃存存儲(chǔ)器●高達(dá)128K字節(jié)的內(nèi)置閃存存儲(chǔ)器,用于存放程序和數(shù)據(jù)。內(nèi)置SRAM多達(dá)20K字節(jié)的內(nèi)置SRAM,CPU能以0等待周期訪問(wèn)(讀/寫(xiě))。嵌套的向量式中斷控制器(NVIC)STM32F103xx增強(qiáng)型內(nèi)置嵌套的向量式中斷控制器,能夠處理多達(dá)43個(gè)可屏蔽中斷通道(不包括16個(gè)Cortex-M3的中斷線)和16個(gè)優(yōu)先級(jí)?!窬o耦合的NVIC能夠到達(dá)低延遲的中斷響應(yīng)處理●中斷向量入口地址直接進(jìn)入核心●緊耦合的NVIC接口●允許中斷的早期處理●處理晚到的較高優(yōu)先級(jí)中斷●支持中斷尾部鏈接功能●自動(dòng)保存處理器狀態(tài)●中斷返回時(shí)自動(dòng)恢復(fù),無(wú)需額外指令開(kāi)銷(xiāo)該模塊以最小的中斷延遲提供靈活的中斷管理功能。外部中斷/事件控制器(EXTI)外部中斷/事件控制器包含19個(gè)邊沿檢測(cè)器,用于產(chǎn)生中斷/事件請(qǐng)求。每個(gè)中斷線都可以獨(dú)立地配置它的觸發(fā)事件(上升沿或下降沿或雙邊沿),能夠單獨(dú)地被屏蔽;有一個(gè)掛起存放器維持所有中斷請(qǐng)求的狀態(tài)。EXTI可以檢測(cè)到脈沖寬度小于內(nèi)部APB2的時(shí)鐘周期。多達(dá)80個(gè)通用I/O口連接到16個(gè)外部中斷線。時(shí)鐘和啟動(dòng)系統(tǒng)時(shí)鐘的選擇是在啟動(dòng)時(shí)進(jìn)展,復(fù)位時(shí)內(nèi)部8MHz的RC振蕩器被選為默認(rèn)的CPU時(shí)鐘,隨后可以選擇外部的、具失效監(jiān)控的4~16MHz時(shí)鐘;當(dāng)外部時(shí)鐘失效時(shí),它將被隔離,同時(shí)會(huì)產(chǎn)生相應(yīng)的中斷。同樣,在需要時(shí)可以采取對(duì)PLL時(shí)鐘完全的中斷管理(如當(dāng)一個(gè)外接的振蕩器失效時(shí))。具有多個(gè)預(yù)分頻器用于配置AHB的頻率、高速APB(APB2)和低速APB(APB1)區(qū)域。AHB和高速APB的最高頻率是72MHz,低速APB的最高頻率為36MHz。自舉模式在啟動(dòng)時(shí),自舉管腳被用于選擇三種自舉模式中的一種:●從用戶閃存自舉●從系統(tǒng)存儲(chǔ)器自舉●從SRAM自舉自舉加載器存放于系統(tǒng)存儲(chǔ)器中,可以通過(guò)USART對(duì)閃存重新編程。供電方案●VDD=2.0至3.6V:VDD管腳提供I/O管腳和內(nèi)部調(diào)壓器的供電。●VSSA,VDDA=2.0至3.6V:為ADC、復(fù)位模塊、RC振蕩器和PLL的模擬局部提供供電。使用ADC時(shí),VDD不得小于2.4V。●VBAT=1.8至3.6V:當(dāng)(通過(guò)電源開(kāi)關(guān))關(guān)閉VDD時(shí),為RTC、外部32kHz振蕩器和后備存放器供電。供電監(jiān)控器本產(chǎn)品內(nèi)部集成了上電復(fù)位(POR)/掉電復(fù)位(PDR)電路,該電路始終處于工作狀態(tài),保證系統(tǒng)在供電超過(guò)2V時(shí)工作;當(dāng)VDD低于設(shè)定的閥值(VPOR/PDR)時(shí),置器件于復(fù)位狀態(tài),而不必使用外部復(fù)位電路。器件中還有一個(gè)可編程電壓監(jiān)測(cè)器(PVD),它監(jiān)視VDD供電并與閥值VPVD比擬,當(dāng)VDD低于或高于閥值VPVD時(shí)將產(chǎn)生中斷,中斷處理程序可以發(fā)出警告信息或?qū)⑽⒖刂破鬓D(zhuǎn)入安全模式。需要通過(guò)程序開(kāi)啟PVD。電壓調(diào)壓器調(diào)壓器有三個(gè)操作模式:主模式(MR)、低功耗模式(LPR)和關(guān)斷模式●主模式(MR)用于正常的運(yùn)行操作●低功耗模式(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增強(qiáng)型支持三種低功耗模式,可以在要求低功耗、短啟動(dòng)時(shí)間和多種喚醒事件之間達(dá)到最正確的平衡?!袼吣J皆谒吣J?,只有CPU停頓,所有外設(shè)處于工作狀態(tài)并可在發(fā)生中斷/事件時(shí)喚醒CPU?!裢C(jī)模式在保持SRAM和存放器內(nèi)容不喪失的情況下,停機(jī)模式可以到達(dá)最低的電能消耗。在停機(jī)模式下,停頓所有內(nèi)部1.8V局部的供電,PLL、HSI和HSE的RC振蕩器被關(guān)閉,調(diào)壓器可以被置于普通模式或低功耗模式。可以通過(guò)任一配置成EXTI的信號(hào)把微控制器從停機(jī)模式中喚醒,EXTI信號(hào)可以是16個(gè)外部I/O口之一、PVD的輸出、RTC鬧鐘或USB的喚醒信號(hào)。●待機(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ī)電路仍工作。從待機(jī)模式退出的條件是:NRST上的外部復(fù)位信號(hào)、IWDG復(fù)位、WKUP管腳上的一個(gè)上升邊沿或RTC的鬧鐘到時(shí)。注:在進(jìn)入停機(jī)或待機(jī)模式時(shí),RTC、IWDG和對(duì)應(yīng)的時(shí)鐘不會(huì)被停頓。DMA靈活的7路通用DMA可以管理存儲(chǔ)器到存儲(chǔ)器、設(shè)備到存儲(chǔ)器和存儲(chǔ)器到設(shè)備的數(shù)據(jù)傳輸;DMA控制器支持環(huán)形緩沖區(qū)的管理,防止了控制器傳輸?shù)竭_(dá)緩沖區(qū)結(jié)尾時(shí)所產(chǎn)生的中斷。每個(gè)通道都有專門(mén)的硬件DMA請(qǐng)求邏輯,同時(shí)可以由軟件觸發(fā)每個(gè)通道;傳輸?shù)拈L(zhǎng)度、傳輸?shù)脑吹刂泛湍繕?biāo)地址都可以通過(guò)軟件單獨(dú)設(shè)置。DMA可以用于主要的外設(shè):SPI、I2C、USART、通用和高級(jí)定時(shí)器TIMx和ADC。RTC(實(shí)時(shí)時(shí)鐘)和后備存放器RTC和后備存放器通過(guò)一個(gè)開(kāi)關(guān)供電,在VDD有效時(shí)該開(kāi)關(guān)選擇VDD供電,否則由VBAT管腳供電。后備存放器(10個(gè)16位的存放器)可以用于在VDD消失時(shí)保存數(shù)據(jù)。實(shí)時(shí)時(shí)鐘具有一組連續(xù)運(yùn)行的計(jì)數(shù)器,可以通過(guò)適當(dāng)?shù)能浖峁┤諝v時(shí)鐘功能,還具有鬧鐘中斷和階段性中斷功能。RTC的驅(qū)動(dòng)時(shí)鐘可以是一個(gè)使用外部晶體的32.768kHz的振蕩器、內(nèi)部低功耗RC振蕩器或高速的外部時(shí)鐘經(jīng)128分頻。內(nèi)部低功耗RC振蕩器的典型頻率為32kHz。為補(bǔ)償天然晶體的偏差,RTC的校準(zhǔn)是通過(guò)輸出一個(gè)512Hz的信號(hào)進(jìn)展。RTC具有一個(gè)32位的可編程計(jì)數(shù)器,使用比擬存放器可以產(chǎn)生鬧鐘信號(hào)。有一個(gè)20位的預(yù)分頻器用于時(shí)基時(shí)鐘,默認(rèn)情況下時(shí)鐘為32.768kHz時(shí)它將產(chǎn)生一個(gè)1秒長(zhǎng)的時(shí)間基準(zhǔn)。獨(dú)立的看門(mén)狗獨(dú)立的看門(mén)狗是基于一個(gè)12位的遞減計(jì)數(shù)器和一個(gè)8位的預(yù)分頻器,它由一個(gè)獨(dú)立的32kHz的內(nèi)部RC振蕩器提供時(shí)鐘,應(yīng)為這個(gè)RC振蕩器獨(dú)立于主時(shí)鐘,所以它可運(yùn)行于停機(jī)和待機(jī)模式。它可以被當(dāng)成看門(mén)狗用于在發(fā)生問(wèn)題時(shí)復(fù)位整個(gè)系統(tǒng),或作為一個(gè)自由定時(shí)器為應(yīng)用程序提供超時(shí)管理。通過(guò)選擇字節(jié)可以配置成是軟件看門(mén)狗或硬件看門(mén)狗。在調(diào)試模式,計(jì)數(shù)器可以被凍結(jié)。窗口看門(mén)狗窗口看門(mén)狗內(nèi)有一個(gè)7位的遞減計(jì)數(shù)器,并可以設(shè)置成自由運(yùn)行。它可以被當(dāng)成看門(mén)狗用于在發(fā)生問(wèn)題時(shí)復(fù)位整個(gè)系統(tǒng)。它由主時(shí)鐘驅(qū)動(dòng),具有早期預(yù)警中斷功能;在調(diào)試模式,計(jì)數(shù)器可以被凍結(jié)。系統(tǒng)時(shí)基定時(shí)器這個(gè)定時(shí)器是專用于操作系統(tǒng),也可當(dāng)成一個(gè)標(biāo)準(zhǔn)的遞減計(jì)數(shù)器。它具有下述特性:●24位的遞減計(jì)數(shù)器●重加載功能●可屏蔽的計(jì)數(shù)器為0中斷●可編程時(shí)鐘源通用定時(shí)器(TIMx)產(chǎn)品中內(nèi)置了多達(dá)3個(gè)同步的標(biāo)準(zhǔn)定時(shí)器。每個(gè)定時(shí)器都有一個(gè)16位的自動(dòng)加載遞加/遞減計(jì)數(shù)器、一個(gè)16位的預(yù)分頻器和4個(gè)獨(dú)立的通道,每個(gè)通道都可用于輸入捕獲、輸出比擬、PWM和單脈沖模式輸出,在最大的封裝配置中可提供最多12個(gè)輸入捕獲、輸出比擬或PWM通道。它們還能通過(guò)定時(shí)器鏈接功能與高級(jí)控制定時(shí)器共同工作,提供同步或事件鏈接功能。在調(diào)試模式下,計(jì)數(shù)器可以被凍結(jié)。任一標(biāo)準(zhǔn)定時(shí)器都能用于產(chǎn)生PWM輸出。每個(gè)定時(shí)器都有獨(dú)立的DMA請(qǐng)求機(jī)制。高級(jí)控制定時(shí)器(TIM1)高級(jí)控制定時(shí)器(TIM1)可以被看成是一個(gè)分配到6個(gè)通道的三相PWM發(fā)生器,它還可以被當(dāng)成一個(gè)完整的通用定時(shí)器。四個(gè)獨(dú)立的通道可以用于:●輸入捕獲●輸出比擬●產(chǎn)生PWM(邊緣或中心對(duì)齊模式)●單脈沖輸出●反相PWM輸出,具程序可控的死區(qū)插入功能配置為16位標(biāo)準(zhǔn)定時(shí)器時(shí),它與TIMx定時(shí)器具有一樣的功能。配置為16位PWM發(fā)生器時(shí),它具有全調(diào)制能力(0~100%)。在調(diào)試模式下,計(jì)數(shù)器可以被凍結(jié)。很多功能都與標(biāo)準(zhǔn)的TIM定時(shí)器一樣,內(nèi)部構(gòu)造也一樣,因此高級(jí)控制定時(shí)器可以通過(guò)定時(shí)器鏈接功能與TIM定時(shí)器協(xié)同操作,提供同步或事件鏈接功能。I2C總線多達(dá)2個(gè)I2C總線接口,能夠工作于多主和從模式,支持標(biāo)準(zhǔn)和快速模式。它們支持雙從地址尋址(只有7位)和主模式下的7/10位尋址。內(nèi)置了硬件CRC發(fā)生器/校驗(yàn)器。它們可以使用DMA操作并支持SM總線2.0版/PM總線通用同步/異步承受發(fā)送器(USART)其中一個(gè)USART接口通信速率可達(dá)4.5兆位/秒,其他USART接口通信速率可達(dá)2.25兆位/秒。接口具有硬件的CTS和RTS信號(hào)管理、支持IrDA的SIRENDEC、與ISO7816兼容并具有LIN主/從功能。USART接口可以使用DMA操作。串行外設(shè)接口(SPI)多達(dá)2個(gè)SPI接口,在從或主模式下,全雙工和半雙工的通信速率可達(dá)18兆位/秒。3位的預(yù)分頻器可產(chǎn)生8種主模式頻率,可配置成每幀8位或16位。硬件的CRC產(chǎn)生/校驗(yàn)支持根本的SD卡和MMC模式。2個(gè)SPI接口都可以使用DMA操作。控制器區(qū)域網(wǎng)絡(luò)(CAN)CAN接口兼容標(biāo)準(zhǔn)2.0A和2.0B(主動(dòng)),位速率達(dá)1兆位/秒。它可以接收和發(fā)送11位標(biāo)識(shí)符的標(biāo)準(zhǔn)幀,也接收和發(fā)送29位標(biāo)識(shí)符的擴(kuò)展幀。具有2個(gè)接收FIFOs,3級(jí)14個(gè)可調(diào)節(jié)的濾波器。內(nèi)部SRAM緩沖最多可處理32個(gè)報(bào)文對(duì)象。通用串行總線(USB)STM32F103xx增強(qiáng)型系列產(chǎn)品內(nèi)嵌一個(gè)USB設(shè)備,遵循USB全速標(biāo)準(zhǔn);USB接口實(shí)現(xiàn)全速(12兆位/秒)的設(shè)備功能;具有可軟件配置的端點(diǎn)和待機(jī)/恢復(fù)功能。專用的48MHz時(shí)鐘由內(nèi)部主PLL直接產(chǎn)生。通用輸入輸出接口(GPIO)每個(gè)GPIO管腳都可以由軟件配置成輸出(推拉或開(kāi)路)、輸入(帶或不帶上拉或下拉)或其它的外設(shè)功能;多數(shù)GPIO管腳都與數(shù)字或模擬的外設(shè)功能管腳共用。所有的GPIO管腳都有大電流通過(guò)能力。在需要的情況下,I/O管腳的外設(shè)功能可以通過(guò)一個(gè)特定的操作鎖定,以防止意外的寫(xiě)入I/O存放器。在APB2上的I/O腳可達(dá)18MHz的翻轉(zhuǎn)速度。ADC(模擬/數(shù)字轉(zhuǎn)換器)STM32F103xx增強(qiáng)型產(chǎn)品內(nèi)嵌2個(gè)12位的模擬/數(shù)字轉(zhuǎn)換器(ADC),每個(gè)ADC有多達(dá)16個(gè)外部通道,可以執(zhí)行單次或掃描轉(zhuǎn)換模式;在掃描模式下,轉(zhuǎn)換在一組選定的模擬輸入上自動(dòng)進(jìn)展。ADC接口上額外的邏輯功能允許:●同時(shí)采樣和保持●穿插采樣和保持●單次采樣ADC可以使用DMA操作。模擬看門(mén)狗功能允許非常精準(zhǔn)地監(jiān)視一路、多路或所有選中的被轉(zhuǎn)換電壓,當(dāng)被監(jiān)視的信號(hào)超出預(yù)置的閥值時(shí),將產(chǎn)生中斷。由標(biāo)準(zhǔn)定時(shí)器(TIMx)和高級(jí)控制定時(shí)器(TIM1)產(chǎn)生的事件,可以分別內(nèi)部級(jí)聯(lián)到ADC的開(kāi)場(chǎng)觸發(fā)、外部觸發(fā)和DMA觸發(fā),允許應(yīng)用程序同步AD轉(zhuǎn)換和時(shí)鐘的操作。溫度傳感器溫度傳感器產(chǎn)生一個(gè)隨溫度線性變化的電壓,轉(zhuǎn)換范圍在2V<VDDA<3.6V之間。溫度傳感器在內(nèi)部被連接到ADC12_IN16的輸入通道上,用于將傳感器的輸出轉(zhuǎn)換到數(shù)字?jǐn)?shù)值。串行線JTAG調(diào)試口(SWJ-DP)內(nèi)嵌ARM的SWJ-DP接口和JTAG接口,JTAG的TMS和TCK信號(hào)分別與SWDIO和SWCLK共用管腳,TMS腳上的一個(gè)特殊的信號(hào)序列用于在JTAG-DP和SWJ-DP間切換。主要函數(shù)說(shuō)明1.函數(shù)ADC_DeInit函數(shù)名ADC_DeInit函數(shù)原形voidADC_DeInit(ADC_TypeDef*ADCx)功能描述將外設(shè)ADCx的全部存放器重設(shè)為缺省值輸入?yún)?shù)1ADCx:x可以是1或者2來(lái)選擇ADC外設(shè)ADC1或ADC2輸出參數(shù)2無(wú)返回值無(wú)先決條件無(wú)被調(diào)用函數(shù)RCC_APB2PeriphClockCmd()例:/*ResetsADC2*/ADC_DeInit(ADC2);2.函數(shù)ADC_Init函數(shù)名ADC_Init函數(shù)原形voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct)功能描述根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設(shè)ADCx的存放器輸出參數(shù)1ADCx:x可以是1或者2來(lái)選擇ADC外設(shè)ADC1或ADC2輸出參數(shù)2ADC_InitStruct:指向構(gòu)造ADC_InitTypeDef的指針,包含了指定外設(shè)ADC的配置信息輸出參數(shù)無(wú)返回值無(wú)先決條件無(wú)被調(diào)用函數(shù)無(wú)ADC_InitTypeDefstructureADC_InitTypeDef定義于文件“stm32f10x_adc.h〞:typedefstruct{u32ADC_Mode;FunctionalStateADC_ScanConvMode;FunctionalStateADC_ContinuousConvMode;u32ADC_ExternalTrigConv;u32ADC_DataAlign;u8ADC_NbrOfChannel;}ADC_InitTypeDef函數(shù)ADC_GetInjectedConversionValue函數(shù)名ADC_GetInjectedConversionValue函數(shù)原形u16ADC_GetInjectedConversionValue(ADC_TypeDef*ADCx,u8ADC_InjectedChannel)功能描述返回ADC指定注入通道的轉(zhuǎn)換結(jié)果輸出參數(shù)1ADCx:x可以是1或者2來(lái)選擇ADC外設(shè)ADC1或ADC2輸出參數(shù)2ADC_InjectedChannel:被轉(zhuǎn)換的ADC注入通道輸出參數(shù)無(wú)返回值轉(zhuǎn)換結(jié)果先決條件無(wú)被調(diào)用函數(shù)無(wú)例:/*ReturntheADC1injectedchannel1converteddatavalue*/u16InjectedDataValue;InjectedDataValue=ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1);函數(shù)DMA_Init函數(shù)名DMA_Init函數(shù)原形voidDMA_Init(DMA_Channel_TypeDef*DMA_Channelx,DMA_InitTypeDef*DMA_InitStruct)功能描述根據(jù)DMA_InitStruct中指定的參數(shù)初始化DMA的通道x存放器輸出參數(shù)1DMAChannelx:x可以是1,2,3...輸出參數(shù)2DMA_InitStruct:指向構(gòu)造DMA_InitTypeDef的指針,包含了DMA通道x的配置信息輸出參數(shù)無(wú)返回值無(wú)先決條件無(wú)被調(diào)用函數(shù)無(wú)設(shè)計(jì)過(guò)程或程序代碼設(shè)計(jì)過(guò)程1、A/D變換原理◆采樣:間隔一定時(shí)間對(duì)信號(hào)進(jìn)展采樣,用信號(hào)序列來(lái)代替原來(lái)時(shí)間上連續(xù)的信號(hào)。均勻采樣:可完整地恢復(fù)原始信號(hào),其中,T為采樣時(shí)間間隔,fs表示采樣頻率,fm表示原始信號(hào)最大頻率?!袅炕喊巡杉降臄?shù)值送到量化器編碼成數(shù)字形式,每個(gè)樣值代表一次采樣所獲得的信號(hào)的瞬時(shí)幅度。A/D轉(zhuǎn)換器一般為標(biāo)量均勻量化。〔量化還可分為:標(biāo)量量化、矢量量化〕量化誤差〔與舍入方式相關(guān)〕:1LSB或1/2LSB◆編碼:A/D模擬/數(shù)字轉(zhuǎn)換器一般采用二進(jìn)制編碼,A/D變換后的結(jié)果到此可以表示為一個(gè)以0、1二進(jìn)制形式表示的比特流,單位時(shí)間內(nèi)可以傳輸?shù)亩M(jìn)制比特速率就是A/D之后的碼速率,數(shù)值上等于采樣頻率與量化比特?cái)?shù)值之乘積。二進(jìn)制編碼:量化與字長(zhǎng)的關(guān)系。3、ADC的A/D轉(zhuǎn)換方式在查詢方式下,軟件可通過(guò)讀取ADC模塊轉(zhuǎn)換完畢引腳EOC的狀態(tài)或狀態(tài)存放器中的轉(zhuǎn)換完成標(biāo)志位判斷本次A/D是否完畢;假設(shè)完畢則從數(shù)據(jù)總線或數(shù)據(jù)存放器中讀取A/D結(jié)果數(shù)據(jù)。2、ADC模擬/數(shù)字轉(zhuǎn)換器:STM32的ADC是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有18個(gè)通道可測(cè)量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或連續(xù)模式執(zhí)行。ADC的結(jié)果可以左對(duì)齊或右對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)存放器中。3、轉(zhuǎn)換特點(diǎn):STM32的ADC最大的轉(zhuǎn)換速率為1Mhz,也就是轉(zhuǎn)換時(shí)間為1us(ADCCLK=14M,采樣周期為1.5個(gè)ADC時(shí)鐘下得到),不能讓ADC的時(shí)鐘超過(guò)14M,否則將導(dǎo)致結(jié)果準(zhǔn)確度下降。4、STM32將ADC的轉(zhuǎn)換分為2個(gè)通道組:規(guī)則通道組和注入通道組。規(guī)則通道相當(dāng)于運(yùn)行的程序,而注入通道就相當(dāng)于中斷。在程序正常執(zhí)行的時(shí)候,中斷是可以打斷程序正常執(zhí)行的。同這個(gè)類似,注入通道的轉(zhuǎn)換可以打斷規(guī)則通道的轉(zhuǎn)換,在注入通道被轉(zhuǎn)換完成之后,規(guī)則通道才得以繼續(xù)轉(zhuǎn)換。規(guī)則組設(shè)置后,可以按照設(shè)置的通道順序?qū)Ω魍ǖ肋M(jìn)展依次采集。方便于對(duì)多路ADC通道的自動(dòng)采集。注入組最多設(shè)置4個(gè)通道,簡(jiǎn)單來(lái)講就是需要觸發(fā)才能采集設(shè)置的通道ADC值。本設(shè)計(jì)選擇了采用規(guī)則組,設(shè)置了一個(gè)通道進(jìn)展自動(dòng)采集。5、此設(shè)計(jì)顯示電壓的特點(diǎn):本設(shè)計(jì)測(cè)量電壓值范圍為0-3.3V的電壓,顯示誤差為±0.001V。LCD實(shí)時(shí)顯示電壓值,MicroSD卡對(duì)數(shù)據(jù)進(jìn)展同步存儲(chǔ)。6、DMA請(qǐng)求:在這次設(shè)計(jì)中用到了ADC轉(zhuǎn)換結(jié)果采用DMA傳遞方式。直接存儲(chǔ)器存取用來(lái)提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無(wú)須CPU任何干預(yù),通過(guò)DMA數(shù)據(jù)可以快速地移動(dòng)。這就節(jié)省了CPU的資源來(lái)做其他操作。7、LCD控制電路〔1〕本設(shè)計(jì)所使用的LCD為3寸,400X240分辨率。LCD模塊使用STM32的FSMC接口控制。3TFT顯示屏焊接在奮斗顯示轉(zhuǎn)接板上,在屏上貼有觸摸屏,通過(guò)40芯的接口與V3或者M(jìn)INI連接。程序代碼1、主程序:intmain(void) { u16len,c2len,c3len,c4len; u8c[]="Voltage"; u8c2[]=""; u8c3[]=""; u8c4[]=".V"; u16bkColor; len=sizeof(c)-1;//計(jì)算字節(jié)數(shù)長(zhǎng)度sizeof() c2len=sizeof(c2)-1; c3len=sizeof(c3)-1; c4len=sizeof(c2)-1; bkColor=White;RCC_Configuration(); //系統(tǒng)時(shí)鐘配置為72MHzUsart1_Init(); //串口1初始化ADC_Configuration(); //ADC初始化FSMC_LCD_Init(); //FSMC總線配置 lcd_Init(); //液晶初始化//lcd_PutChar(10,10,'g',0x0000,0xffff);//LCD_test();USART_OUT(USART1,"\r\nUSART1printAD_value\r\n"); while(1){ if(ticks++>=900000){//間隔時(shí)間顯示轉(zhuǎn)換結(jié)果 ticks=0; Clock1s=1; } if(Clock1s){Clock1s=0; USART_OUT(USART1,"ThecurrentADvalue=%d\r\n",ADC_ConvertedValue);//串口顯示字符段 //Delay(0xAFFFFf); Precent=(ADC_ConvertedValue*100/4096);//算出百分比,2的12次冪為0xfff Voltage=Precent*33;//Voltage為實(shí)際電壓值的1000倍. c4[3]=(Voltage/1000+'0'); //取千位數(shù)的整數(shù)局部 c4[5]=((Voltage%1000)/100+'0');//對(duì)千位數(shù)取余數(shù)后再取其百位的整數(shù)局部 c4[6]=(((Voltage%100)/10)+'0'); //對(duì)百位數(shù)取余數(shù)后再取其十位的整數(shù)局部 c4[7]=((Voltage%10)+'0'); //對(duì)百位數(shù)取余數(shù)后再取其個(gè)位的整數(shù)局部 lcd_PutStr_16x24_Center(0,c3,c4len,Black,bkColor); lcd_PutStr_16x24_Center(Line1,c,len,Black,bkColor); lcd_PutStr_16x24_Center(Line2,c3,c3len,Black,bkColor); lcd_PutStr_16x24_Center(Line3,c4,c4len,Black,bkColor); lcd_PutStr_16x24_Center(Line4,c2,c2len,Black,bkColor); USART_OUT(USART1,"Thevvalue=%d.%d%d%dV\r\n",c4[3]=(Voltage/1000),c4[5]=((Voltage%1000)/100),c4[6]=(Voltage%100)/10,c4[7]=(Voltage%10)); //顯示實(shí)際電壓值 LCD_test();}}} 2、ADC配置:ADC_Configuration函數(shù)用于配置ADC1的通道11,因?yàn)橹挥昧薃DC1所以采用了ADC獨(dú)立模式,設(shè)置通道11進(jìn)入規(guī)則組,規(guī)則組里的通道只有1個(gè),就是通道1,轉(zhuǎn)換用了掃描方式,軟件觸發(fā),轉(zhuǎn)換結(jié)果采用DMA方式傳遞到2字節(jié)長(zhǎng)度的緩存區(qū)里(ADC_ConvertedValue),默認(rèn)的ADCCLK為36MHz,采樣周期是55.5+12.5時(shí)鐘周期,相當(dāng)于采樣時(shí)間是間隔(68/36)us。voidADC_Configuration(void){ ADC_InitTypeDefADC_InitStructure; GPIO_InitTypeDefGPIO_InitStructure; DMA_InitTypeDefDMA_InitStructure;//設(shè)置AD模擬輸入端口為輸入1路AD規(guī)則通道 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_Init(GPIOC,&GPIO_InitStructure); /*EnableDMAclock*/RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);/*EnableADC1andGPIOCclock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); /*DMAchannel1configuration*/ //使能DMA DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address; //DMA通道1的地址 DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&ADC_ConvertedValue; //DMA傳送地址 DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; //傳送方向 DMA_InitStructure.DMA_BufferSize=1; //傳送內(nèi)存大小,100個(gè)16位 DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable; //傳送內(nèi)存地址遞增 DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord; //ADC1轉(zhuǎn)換的數(shù)據(jù)是16位 DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord; //傳送的目的地址是16位寬度 DMA_InitStructure.DMA_Mode=DMA_Mode_Circular; //循環(huán) DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA1_Channel1,&DMA_InitStructure); /*允許DMA1通道1傳輸完畢中斷*/ //DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE); //使能DMA通道1 DMA_Cmd(DMA1_Channel1,ENABLE); //ADC配置 ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; //ADC1工作在獨(dú)立模式 ADC_InitStructure.ADC_ScanConvMode=ENABLE; //模數(shù)轉(zhuǎn)換工作在掃描模式〔多通道〕還是單次〔單通道〕模式 ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; //模數(shù)轉(zhuǎn)換工作在掃描模式〔多通道〕還是單次〔單通道〕模式 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動(dòng) ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC數(shù)據(jù)右對(duì)齊 ADC_InitStructure.ADC_NbrOfChannel=1;//規(guī)定了順序進(jìn)展規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目。這個(gè)數(shù)目的取值范圍是1到16 ADC_Init(ADC1,&ADC_InitStructure); /*ADC1regularchannelsconfiguration[規(guī)則模式通道配置]*/ //ADC1規(guī)則通道配置 ADC_RegularChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_55Cycles5); //通道11采樣時(shí)間55.5

溫馨提示

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