




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
.../...學(xué)號(hào)20142014-2015學(xué)年第二學(xué)期《嵌入式系統(tǒng)》課程設(shè)計(jì)報(bào)告題目:基于STM32的簡易數(shù)字電壓表專業(yè):網(wǎng)絡(luò)工程班級(jí):網(wǎng)絡(luò)工程12〔1姓名:盧東亞指導(dǎo)教師:馮康成績:計(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ù)說明828543.設(shè)計(jì)過程或程序代碼10164663.1.設(shè)計(jì)過程1038163.2.程序代碼12272754.設(shè)計(jì)結(jié)果與分析163168參考文獻(xiàn)17設(shè)計(jì)內(nèi)容及要求設(shè)計(jì)內(nèi)容本文以ARM系列的STM32芯片為核心設(shè)計(jì)了一個(gè)簡易數(shù)字電壓表。簡易數(shù)字電壓表采用模數(shù)轉(zhuǎn)換思想來實(shí)現(xiàn),通過硬件電路和軟件程序相結(jié)合,可輸出自定義測量電壓,通過調(diào)節(jié)模數(shù)轉(zhuǎn)換電位器使在一定范圍內(nèi)可任意改變。輸出的電壓格式和精度的改變通過軟件控制,輸出電壓的大小的改變通過硬件實(shí)現(xiàn)。介紹了的生成原理、硬件電路和軟件部分的設(shè)計(jì)原理。該簡易數(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í)開發(fā)板所用A/D轉(zhuǎn)換器的類型,將轉(zhuǎn)換成的數(shù)字量通過一定的算法轉(zhuǎn)換成相應(yīng)的電壓值。4、將轉(zhuǎn)換成電壓值通過學(xué)習(xí)開發(fā)板上的LCD顯示屏進(jìn)行顯示,要求顯示一位小數(shù)。設(shè)計(jì)要求利用STM32F103內(nèi)部A/D及2.8寸TFT液晶屏,設(shè)計(jì)完成一個(gè)數(shù)字電壓表。要求:數(shù)字電壓表可測量0-5V輸入電壓,電壓值通過液晶屏顯示。工作原理及設(shè)計(jì)思路:簡易數(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)的電壓值,并通過液晶屏輸出。數(shù)字電壓表的基本組成部分是A/D變換器+電子計(jì)數(shù)器。通常,被測直流電壓經(jīng)A/D轉(zhuǎn)換器變?yōu)榕c之成正比的閘門時(shí)間,在此閘門時(shí)間內(nèi)計(jì)數(shù),用數(shù)字顯示被測電壓值。可見A/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得集成特性。概要設(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)用場合:●電機(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的需要提供了低成本的平臺(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等待周期訪問<讀/寫>。嵌套的向量式中斷控制器<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ù),無需額外指令開銷該模塊以最小的中斷延遲提供靈活的中斷管理功能。外部中斷/事件控制器<EXTI>外部中斷/事件控制器包含19個(gè)邊沿檢測器,用于產(chǎn)生中斷/事件請(qǐng)求。每個(gè)中斷線都可以獨(dú)立地配置它的觸發(fā)事件<上升沿或下降沿或雙邊沿>,能夠單獨(dú)地被屏蔽;有一個(gè)掛起寄存器維持所有中斷請(qǐng)求的狀態(tài)。EXTI可以檢測到脈沖寬度小于內(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ǔ)器中,可以通過USART對(duì)閃存重新編程。供電方案●VDD=2.0至3.6V:VDD管腳提供I/O管腳和內(nèi)部調(diào)壓器的供電?!馰SSA,VDDA=2.0至3.6V:為ADC、復(fù)位模塊、RC振蕩器和PLL的模擬部分提供供電。使用ADC時(shí),VDD不得小于2.4V?!馰BAT=1.8至3.6V:當(dāng)<通過電源開關(guān)>關(guān)閉VDD時(shí),為RTC、外部32kHz振蕩器和后備寄存器供電。供電監(jiān)控器本產(chǎn)品內(nèi)部集成了上電復(fù)位<POR>/掉電復(fù)位<PDR>電路,該電路始終處于工作狀態(tài),保證系統(tǒng)在供電超過2V時(shí)工作;當(dāng)VDD低于設(shè)定的閥值<VPOR/PDR>時(shí),置器件于復(fù)位狀態(tài),而不必使用外部復(fù)位電路。器件中還有一個(gè)可編程電壓監(jiān)測器<PVD>,它監(jiān)視VDD供電并與閥值VPVD比較,當(dāng)VDD低于或高于閥值VPVD時(shí)將產(chǎn)生中斷,中斷處理程序可以發(fā)出警告信息或?qū)⑽⒖刂破鬓D(zhuǎn)入安全模式。需要通過程序開啟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)壓器可以被置于普通模式或低功耗模式??梢酝ㄟ^任一配置成EXTI的信號(hào)把微控制器從停機(jī)模式中喚醒,EXTI信號(hào)可以是16個(gè)外部I/O口之一、PVD的輸出、RTC鬧鐘或USB的喚醒信號(hào)?!翊龣C(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è)通道都有專門的硬件DMA請(qǐng)求邏輯,同時(shí)可以由軟件觸發(fā)每個(gè)通道;傳輸?shù)拈L度、傳輸?shù)脑吹刂泛湍繕?biāo)地址都可以通過軟件單獨(dú)設(shè)置。DMA可以用于主要的外設(shè):SPI、I2C、USART、通用和高級(jí)定時(shí)器TIMx和ADC。RTC<實(shí)時(shí)時(shí)鐘>和后備寄存器RTC和后備寄存器通過一個(gè)開關(guān)供電,在VDD有效時(shí)該開關(guān)選擇VDD供電,否則由VBAT管腳供電。后備寄存器<10個(gè)16位的寄存器>可以用于在VDD消失時(shí)保存數(shù)據(jù)。實(shí)時(shí)時(shí)鐘具有一組連續(xù)運(yùn)行的計(jì)數(shù)器,可以通過適當(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)是通過輸出一個(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秒長的時(shí)間基準(zhǔn)。獨(dú)立的看門狗獨(dú)立的看門狗是基于一個(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)成看門狗用于在發(fā)生問題時(shí)復(fù)位整個(gè)系統(tǒng),或作為一個(gè)自由定時(shí)器為應(yīng)用程序提供超時(shí)管理。通過選擇字節(jié)可以配置成是軟件看門狗或硬件看門狗。在調(diào)試模式,計(jì)數(shù)器可以被凍結(jié)。窗口看門狗窗口看門狗內(nèi)有一個(gè)7位的遞減計(jì)數(shù)器,并可以設(shè)置成自由運(yùn)行。它可以被當(dāng)成看門狗用于在發(fā)生問題時(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通道。它們還能通過定時(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)部結(jié)構(gòu)也相同,因此高級(jí)控制定時(shí)器可以通過定時(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接口兼容規(guī)范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管腳都可以由軟件配置成輸出<推拉或開路>、輸入<帶或不帶上拉或下拉>或其它的外設(shè)功能;多數(shù)GPIO管腳都與數(shù)字或模擬的外設(shè)功能管腳共用。所有的GPIO管腳都有大電流通過能力。在需要的情況下,I/O管腳的外設(shè)功能可以通過一個(gè)特定的操作鎖定,以避免意外的寫入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操作。模擬看門狗功能允許非常精準(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的開始觸發(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ù)說明1.函數(shù)ADC_DeInit函數(shù)名ADC_DeInit函數(shù)原形voidADC_DeInit<ADC_TypeDef*ADCx>功能描述將外設(shè)ADCx的全部寄存器重設(shè)為缺省值輸入?yún)?shù)1ADCx:x可以是1或者2來選擇ADC外設(shè)ADC1或ADC2輸出參數(shù)2無返回值無先決條件無被調(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來選擇ADC外設(shè)ADC1或ADC2輸出參數(shù)2ADC_InitStruct:指向結(jié)構(gòu)ADC_InitTypeDef的指針,包含了指定外設(shè)ADC的配置信息輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無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來選擇ADC外設(shè)ADC1或ADC2輸出參數(shù)2ADC_InjectedChannel:被轉(zhuǎn)換的ADC注入通道輸出參數(shù)無返回值轉(zhuǎn)換結(jié)果先決條件無被調(diào)用函數(shù)無例:/*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:指向結(jié)構(gòu)DMA_InitTypeDef的指針,包含了DMA通道x的配置信息輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無設(shè)計(jì)過程或程序代碼設(shè)計(jì)過程1、A/D變換原理◆采樣:間隔一定時(shí)間對(duì)信號(hào)進(jìn)行采樣,用信號(hào)序列來代替原來時(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)制編碼:量化與字長的關(guān)系。3、ADC的A/D轉(zhuǎn)換方式在查詢方式下,軟件可通過讀取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個(gè)通道可測量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。各通道的A/D轉(zhuǎn)換可以單次、連續(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í)鐘超過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è)通道,簡單來講就是需要觸發(fā)才能采集設(shè)置的通道ADC值。本設(shè)計(jì)選擇了采用規(guī)則組,設(shè)置了一個(gè)通道進(jìn)行自動(dòng)采集。5、此設(shè)計(jì)顯示電壓的特點(diǎn):本設(shè)計(jì)測量電壓值范圍為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ǔ)器存取用來提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無須CPU任何干預(yù),通過DMA數(shù)據(jù)可以快速地移動(dòng)。這就節(jié)省了CPU的資源來做其他操作。7、LCD控制電路〔1本設(shè)計(jì)所使用的LCD為3寸,400X240分辨率。LCD模塊使用STM32的FSMC接口控制。3TFT顯示屏焊接在奮斗顯示轉(zhuǎn)接板上,在屏上貼有觸摸屏,通過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ù)長度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é)長度的緩存區(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傳輸結(jié)束中斷*/ //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_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第7課 隋唐時(shí)期的科技與文化 教案2024-2025學(xué)年七年級(jí)歷史下冊(cè)新課標(biāo)
- 關(guān)于創(chuàng)意種植產(chǎn)品的調(diào)查問卷
- 穿孔鋁板吊頂施工方案
- 橋梁基礎(chǔ)加固施工方案
- 2025年磷礦石行業(yè)發(fā)展趨勢(shì)分析:我國磷礦石開采產(chǎn)能持續(xù)增長
- 2024年三季度報(bào)湖南地區(qū)A股每股經(jīng)營性現(xiàn)金流排名前十大上市公司
- 污水處理池改造施工方案
- 山東省青島市2025屆高三上學(xué)期部分學(xué)生調(diào)研檢測(1月)數(shù)學(xué)試題(解析版)
- 烤房土建施工方案
- 水電施工方案英文縮寫
- 預(yù)防性侵安全教育課件
- 《鋼鐵是怎樣煉成的》讀書分享課件
- 頸椎損傷的固定與搬運(yùn)操作流程課件
- 中國戲曲 昆曲學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 消毒隔離課件教學(xué)課件
- 中國旅游地理項(xiàng)目一二測試題
- 涉外法治視角下國際經(jīng)貿(mào)規(guī)則形成研究
- 低空經(jīng)濟(jì)公司的投融資方案
- 城市停車規(guī)劃規(guī)范
- 2022年集團(tuán)消防技能比賽項(xiàng)目、規(guī)則和評(píng)分標(biāo)準(zhǔn)
- 手機(jī)維修行業(yè)中的數(shù)字轉(zhuǎn)型
評(píng)論
0/150
提交評(píng)論