《嵌入式系統(tǒng)》課程設(shè)計報告基于STM32的簡易數(shù)字電壓表

上傳人:仙*** 文檔編號:31657157 上傳時間:2021-10-12 格式:DOC 頁數(shù):20 大小:307KB
收藏 版權(quán)申訴 舉報 下載
《嵌入式系統(tǒng)》課程設(shè)計報告基于STM32的簡易數(shù)字電壓表_第1頁
第1頁 / 共20頁
《嵌入式系統(tǒng)》課程設(shè)計報告基于STM32的簡易數(shù)字電壓表_第2頁
第2頁 / 共20頁
《嵌入式系統(tǒng)》課程設(shè)計報告基于STM32的簡易數(shù)字電壓表_第3頁
第3頁 / 共20頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《嵌入式系統(tǒng)》課程設(shè)計報告基于STM32的簡易數(shù)字電壓表》由會員分享,可在線閱讀,更多相關(guān)《《嵌入式系統(tǒng)》課程設(shè)計報告基于STM32的簡易數(shù)字電壓表(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 學(xué)號 2014-2015學(xué)年 第二學(xué)期 1208020121 《嵌入式系統(tǒng)》 課程設(shè)計報告 題目: 基于STM32的簡易數(shù)字電壓表 專業(yè): 網(wǎng)絡(luò)工程 班級: 網(wǎng)絡(luò)工程12(1) 姓名: 指導(dǎo)教師: 成績: 計  算  機  學(xué)  院 2015年 5 月 22日 目錄 1. 設(shè)計內(nèi)容及要求 1 1.1. 設(shè)計內(nèi)容 1 1.2. 設(shè)計要求 1 2. 概要設(shè)計 2 2.1. 硬件電路 2 2.2. 實驗板中的連線圖 2 2.3. STM32介紹 3 2.4. 主要

2、函數(shù)說明 8 3. 設(shè)計過程或程序代碼 10 3.1. 設(shè)計過程 10 3.2. 程序代碼 12 4. 設(shè)計結(jié)果與分析 16 參考文獻 17 計算機學(xué)院 《嵌入式系統(tǒng)》課程設(shè)計報告 1. 設(shè)計內(nèi)容及要求 1.1. 設(shè)計內(nèi)容 本文以ARM系列的STM32芯片為核心設(shè)計了一個簡易數(shù)字電壓表。簡易數(shù)字電壓表采用模數(shù)轉(zhuǎn)換思想來實現(xiàn),通過硬件電路和軟件程序相結(jié)合,可輸出自定義測量電壓,通過調(diào)節(jié)模數(shù)轉(zhuǎn)換電位器使在一定范圍內(nèi)可任意改變。輸出的電壓格式和精度的改變通過軟件控制,輸出電壓的大小的改變通過硬件實現(xiàn)。介紹了的生成原理、硬件電路和軟件部分的設(shè)計原理。該簡易數(shù)字電壓表

3、具有體積小、價格低、性能穩(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、將轉(zhuǎn)換成電壓值通過學(xué)習(xí)開發(fā)板上的LCD顯示屏進行顯示,要求顯示一位小數(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ù)處理及顯示控制等組成。利用STM3

4、2F103內(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ù)字顯示被測電壓值??梢夾/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)換器,所以不需要外

5、圍的A/D轉(zhuǎn)換器,這就體現(xiàn)了STM32得集成特性。 2. 概要設(shè)計 2.1. 硬件電路 設(shè)計的核心STM32嵌入式處理器的硬件電路如圖1所示 圖1 STM32嵌入式處理器的硬件電路 2.2. 實驗板中的連線圖 連線圖如圖2所示。 圖2 硬件連接圖。 2.3. STM32介紹 STM32F103xx增強型系列使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置高速存儲器(高達128K字節(jié)的閃存和20K字節(jié)的SRAM),豐富的增強I/O端口和聯(lián)接到兩條APB總線的外設(shè)。所有型號的器件都包含2個12位的ADC、3個通用16

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

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

8、內(nèi)置閃存存儲器 ● 高達128K字節(jié)的內(nèi)置閃存存儲器,用于存放程序和數(shù)據(jù)。 內(nèi)置SRAM 多達20K字節(jié)的內(nèi)置SRAM,CPU能以0等待周期訪問(讀/寫)。 嵌套的向量式中斷控制器(NVIC) STM32F103xx增強型內(nèi)置嵌套的向量式中斷控制器,能夠處理多達43個可屏蔽中斷通道(不包括16個 Cortex-M3的中斷線)和16個優(yōu)先級。 ● 緊耦合的NVIC能夠達到低延遲的中斷響應(yīng)處理 ● 中斷向量入口地址直接進入核心 ● 緊耦合的NVIC接口 ● 允許中斷的早期處理 ● 處理 晚到的 較高優(yōu)先級中斷 ● 支持中斷尾部鏈接功能 ● 自動保存處

9、理器狀態(tài) ● 中斷返回時自動恢復(fù),無需額外指令開銷 該模塊以最小的中斷延遲提供靈活的中斷管理功能。 外部中斷/事件控制器(EXTI) 外部中斷/事件控制器包含19個邊沿檢測器,用于產(chǎn)生中斷/事件請求。 每個中斷線都可以獨立地配置它的觸發(fā)事件(上升沿或下降沿或雙邊沿),能夠單獨地被屏蔽;有一 個掛起寄存器維持所有中斷請求的狀態(tài)。EXTI可以檢測到脈沖寬度小于內(nèi)部APB2的時鐘周期。多 達80個通用I/O口連接到16個外部中斷線。 時鐘和啟動 系統(tǒng)時鐘的選擇是在啟動時進行,復(fù)位時內(nèi)部8MHz的RC振蕩器被選為默認的CPU時鐘,隨后可以 選擇外部的、具失效監(jiān)控的4~16MHz時鐘

10、;當外部時鐘失效時,它將被隔離,同時會產(chǎn)生相應(yīng)的中 斷。同樣,在需要時可以采取對PLL時鐘完全的中斷管理(如當一個外接的振蕩器失效時)。 具有多個預(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)

11、部調(diào)壓器的供電。 ● VSSA,VDDA = 2.0至3.6V:為ADC、復(fù)位模塊、RC振蕩器和PLL的模擬部分提供供電。使用 ADC時,VDD不得小于2.4V。 ● VBAT = 1.8至3.6V:當(通過電源開關(guān))關(guān)閉VDD時,為RTC、外部32kHz振蕩器和后備寄存器供電。 供電監(jiān)控器 本產(chǎn)品內(nèi)部集成了上電復(fù)位(POR)/掉電復(fù)位(PDR)電路,該電路始終處于工作狀態(tài),保證系統(tǒng)在供 電超過2V時工作;當VDD低于設(shè)定的閥值(VPOR/PDR)時,置器件于復(fù)位狀態(tài),而不必使用外部復(fù) 位電路。 器件中還有一個可編程電壓監(jiān)測器(PVD),它監(jiān)視VDD供電并與閥值VPVD比較,當

12、VDD低于或高 于閥值VPVD時將產(chǎn)生中斷,中斷處理程序可以發(fā)出警告信息或?qū)⑽⒖刂破鬓D(zhuǎn)入安全模式。需要通 過程序開啟PVD。 電壓調(diào)壓器 調(diào)壓器有三個操作模式:主模式(MR)、低功耗模式(LPR)和關(guān)斷模式 ● 主模式(MR)用于正常的運行操作 ● 低功耗模式(LPR)用于CPU的停機模式 ● 關(guān)斷模式用于CPU的待機模式:調(diào)壓器的輸出為高阻狀態(tài),內(nèi)核電路的供電切斷,調(diào)壓器處于 零消耗狀態(tài)(但寄存器和SRAM的內(nèi)容將丟失) 該調(diào)壓器在復(fù)位后始終處于工作狀態(tài),在待機模式下關(guān)閉處于高阻輸出。 低功耗模式 STM32F103xx增強型支持三種低功耗模式,可以在要求低功耗、短啟動時間

13、和多種喚醒事件之間達 到最佳的平衡。 ● 睡眠模式 在睡眠模式,只有CPU停止,所有外設(shè)處于工作狀態(tài)并可在發(fā)生中斷/事件時喚醒CPU。 ● 停機模式 在保持SRAM和寄存器內(nèi)容不丟失的情況下,停機模式可以達到最低的電能消耗。在停機模式 下,停止所有內(nèi)部1.8V部分的供電,PLL、HSI和HSE的RC振蕩器被關(guān)閉,調(diào)壓器可以被置于 普通模式或低功耗模式。 可以通過任一配置成EXTI的信號把微控制器從停機模式中喚醒,EXTI信號可以是16個外部I/O 口之一、PVD的輸出、RTC鬧鐘或USB的喚醒信號。 ● 待機模式 在待機模式下可以達到最低的電能消耗。內(nèi)部的電壓調(diào)壓器被關(guān)閉,因此所有

14、內(nèi)部1.8V部分的 供電被切斷;PLL、HSI和HSE的RC振蕩器也被關(guān)閉;進入待機模式后,SRAM和寄存器的 內(nèi)容將消失,但后備寄存器的內(nèi)容仍然保留,待機電路仍工作。 從待機模式退出的條件是:NRST上的外部復(fù)位信號、IWDG復(fù)位、WKUP管腳上的一個上升 邊沿或RTC的鬧鐘到時。 注:在進入停機或待機模式時, RTC 、 IWDG 和對應(yīng)的時鐘不會被停止。 DMA 靈活的7路通用DMA可以管理存儲器到存儲器、設(shè)備到存儲器和存儲器到設(shè)備的數(shù)據(jù)傳輸;DMA控 制器支持環(huán)形緩沖區(qū)的管理,避免了控制器傳輸?shù)竭_緩沖區(qū)結(jié)尾時所產(chǎn)生的中斷。 每個通道都有專門的硬件DMA請求邏輯,同時可以

15、由軟件觸發(fā)每個通道;傳輸?shù)拈L度、傳輸?shù)脑吹?址和目標地址都可以通過軟件單獨設(shè)置。 DMA可以用于主要的外設(shè):SPI、I2C、USART、通用和高級定時器TIMx和ADC。 RTC(實時時鐘)和后備寄存器 RTC和后備寄存器通過一個開關(guān)供電,在VDD有效時該開關(guān)選擇VDD供電,否則由VBAT管腳供 電。后備寄存器(10個16位的寄存器)可以用于在VDD消失時保存數(shù)據(jù)。 實時時鐘具有一組連續(xù)運行的計數(shù)器,可以通過適當?shù)能浖峁┤諝v時鐘功能,還具有鬧鐘中斷和 階段性中斷功能。RTC的驅(qū)動時鐘可以是一個使用外部晶體的32.768kHz的振蕩器、內(nèi)部低功耗RC 振蕩器或高速的外部時鐘經(jīng)12

16、8分頻。內(nèi)部低功耗RC振蕩器的典型頻率為32kHz。為補償天然晶體 的偏差,RTC的校準是通過輸出一個512Hz的信號進行。RTC具有一個32位的可編程計數(shù)器,使用 比較寄存器可以產(chǎn)生鬧鐘信號。有一個20位的預(yù)分頻器用于時基時鐘,默認情況下時鐘為32.768kHz 時它將產(chǎn)生一個1秒長的時間基準。 獨立的看門狗 獨立的看門狗是基于一個12位的遞減計數(shù)器和一個8位的預(yù)分頻器,它由一個獨立的32kHz的內(nèi)部 RC振蕩器提供時鐘,應(yīng)為這個RC振蕩器獨立于主時鐘,所以它可運行于停機和待機模式。它可以 被當成看門狗用于在發(fā)生問題時復(fù)位整個系統(tǒng),或作為一個自由定時器為應(yīng)用程序提供超時管理。 通過選

17、擇字節(jié)可以配置成是軟件看門狗或硬件看門狗。在調(diào)試模式,計數(shù)器可以被凍結(jié)。 窗口看門狗 窗口看門狗內(nèi)有一個7位的遞減計數(shù)器,并可以設(shè)置成自由運行。它可以被當成看門狗用于在發(fā)生 問題時復(fù)位整個系統(tǒng)。它由主時鐘驅(qū)動,具有早期預(yù)警中斷功能;在調(diào)試模式,計數(shù)器可以被凍 結(jié)。 系統(tǒng)時基定時器 這個定時器是專用于操作系統(tǒng),也可當成一個標準的遞減計數(shù)器。它具有下述特性: ● 24位的遞減計數(shù)器 ● 重加載功能 ● 可屏蔽的計數(shù)器為0中斷 ● 可編程時鐘源 通用定時器(TIMx) 產(chǎn)品中內(nèi)置了多達3個同步的標準定時器。每個定時器都有一個16位的自 動加載遞加/遞減計數(shù)器、

18、一個16位的預(yù)分頻器和4個獨立的通道,每個通道都可用于輸入捕獲、輸 出比較、PWM和單脈沖模式輸出,在最大的封裝配置中可提供最多12個輸入捕獲、輸出比較或 PWM通道。它們還能通過定時器鏈接功能與高級控制定時器共同工作,提供同步或事件鏈接功能。 在調(diào)試模式下,計數(shù)器可以被凍結(jié)。 任一標準定時器都能用于產(chǎn)生PWM輸出。每個定時器都有獨立的DMA請求機制。 高級控制定時器(TIM1) 高級控制定時器(TIM1)可以被看成是一個分配到6個通道的三相PWM發(fā)生器,它還可以被當成一個 完整的通用定時器。四個獨立的通道可以用于: ● 輸入捕獲 ● 輸出比較 ● 產(chǎn)生PWM(邊緣或中心對

19、齊模式) ● 單脈沖輸出 ● 反相PWM輸出,具程序可控的死區(qū)插入功能 配置為16位標準定時器時,它與TIMx定時器具有相同的功能。配置為16位PWM發(fā)生器時,它具有 全調(diào)制能力(0~100%)。 在調(diào)試模式下,計數(shù)器可以被凍結(jié)。 很多功能都與標準的TIM定時器相同,內(nèi)部結(jié)構(gòu)也相同,因此高級控制定時器可以通過定時器鏈接 功能與TIM定時器協(xié)同操作,提供同步或事件鏈接功能。 I 2C總線 多達2個I2C總線接口,能夠工作于多主和從模式,支持標準和快速模式。 它們支持雙從地址尋址(只有7位)和主模式下的7/10位尋址。內(nèi)置了硬件CRC發(fā)生器/校驗器。 它們可以使用DMA操作并支

20、持SM總線2.0版/PM總線 通用同步/異步接受發(fā)送器(USART) 其中一個USART接口通信速率可達4.5兆位/秒,其他USART接口通信速率可達2.25兆位/秒。接口具 有硬件的CTS和RTS信號管理、支持IrDA的 SIR ENDEC、與ISO7816兼容并具有LIN主/從功能。 USART接口可以使用DMA操作。 串行外設(shè)接口(SPI) 多達2個SPI接口,在從或主模式下,全雙工和半雙工的通信速率可達18兆位/秒。3位的預(yù)分頻器可 產(chǎn)生8種主模式頻率,可配置成每幀8位或16位。硬件的CRC產(chǎn)生/校驗支持基本的SD卡和MMC模 式。 2個SPI接口都可以使用DMA操作。

21、 控制器區(qū)域網(wǎng)絡(luò)(CAN) CAN接口兼容規(guī)范2.0A和2.0B (主動),位速率達1兆位/秒。它可以接收和發(fā)送11位標識符的標準 幀,也接收和發(fā)送29位標識符的擴展幀。具有2個接收FIFOs,3級14個可調(diào)節(jié)的濾波器。內(nèi)部SRAM 緩沖最多可處理32個報文對象。 通用串行總線(USB) STM32F103xx增強型系列產(chǎn)品內(nèi)嵌一個USB設(shè)備,遵循USB全速標準;USB接口實現(xiàn)全速(12兆位/ 秒)的設(shè)備功能;具有可軟件配置的端點和待機/恢復(fù)功能。專用的48MHz時鐘由內(nèi)部主PLL直接產(chǎn) 生。 通用輸入輸出接口(GPIO) 每個GPIO管腳都可以由軟件配置成輸出(推拉或

22、開路)、輸入(帶或不帶上拉或下拉)或其它的外設(shè)功 能;多數(shù)GPIO管腳都與數(shù)字或模擬的外設(shè)功能管腳共用。所有的GPIO管腳都有大電流通過能力。 在需要的情況下,I/O管腳的外設(shè)功能可以通過一個特定的操作鎖定,以避免意外的寫入I/O寄存器。 在APB2上的I/O腳可達18MHz的翻轉(zhuǎn)速度。 ADC(模擬/數(shù)字轉(zhuǎn)換器) STM32F103xx增強型產(chǎn)品內(nèi)嵌2個12位的模擬/數(shù)字轉(zhuǎn)換器(ADC),每個ADC有多達16個外部通道, 可以執(zhí)行單次或掃描轉(zhuǎn)換模式;在掃描模式下,轉(zhuǎn)換在一組選定的模擬輸入上自動進行。 ADC接口上額外的邏輯功能允許: ● 同時采樣和保持 ● 交叉采樣和保持

23、 ● 單次采樣 ADC可以使用DMA操作。 模擬看門狗功能允許非常精準地監(jiān)視一路、多路或所有選中的被轉(zhuǎn)換電壓,當被監(jiān)視的信號超出預(yù) 置的閥值時,將產(chǎ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 < 3.6V之間。溫度傳感器在內(nèi) 部被連接到ADC12_IN16的輸入通道上,用于將傳感器的輸出轉(zhuǎn)換到數(shù)字數(shù)值。 串行線JTAG調(diào)試口(SWJ-DP) 內(nèi)嵌ARM的SWJ-DP

24、接口和JTAG接口,JTAG的TMS和TCK信號分別與SWDIO和SWCLK共用管 腳,TMS腳上的一個特殊的信號序列用于在JTAG-DP和SWJ-DP間切換。 2.4. 主要函數(shù)說明 1.函數(shù) ADC_DeInit 函數(shù)名 ADC_DeInit 函數(shù)原形 void ADC_DeInit(ADC_TypeDef* ADCx) 功能描述 將外設(shè) ADCx 的全部寄存器重設(shè)為缺省值 輸入?yún)?shù) 1 ADCx:x 可以是 1 或者 2 來選擇 ADC 外設(shè) ADC1 或 ADC2 輸出參數(shù) 2 無 返回值 無 先決條件 無 被調(diào)用函數(shù) RCC_

25、APB2PeriphClockCmd() 例: /* Resets ADC2 */ ADC_DeInit(ADC2); 2. 函數(shù)ADC_Init 函數(shù)名 ADC_Init 函數(shù)原形 void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct) 功能描述 根據(jù) ADC_InitStruct 中指定的參數(shù)初始化外設(shè) ADCx 的寄存器 輸出參數(shù)1 ADCx:x 可以是 1 或者 2 來選擇 ADC 外設(shè) ADC1 或 ADC2 輸出參數(shù)2 ADC_InitStruct:指向結(jié)構(gòu) ADC_I

26、nitTypeDef 的指針,包含了指定外設(shè) ADC 的配置信息 輸出參數(shù) 無 返回值 無 先決條件 無 被調(diào)用函數(shù) 無 ADC_InitTypeDef structure ADC_InitTypeDef 定義于文件“stm32f10x_adc.h”: typedef struct { u32 ADC_Mode; FunctionalState ADC_ScanConvMode; FunctionalState ADC_ContinuousConvMode; u32 ADC_ExternalTrigConv; u32 ADC_DataAlign;

27、u8 ADC_NbrOfChannel; } ADC_InitTypeDef 3. 函數(shù)ADC_GetInjectedConversionValue 函數(shù)名 ADC_GetInjectedConversionValue 函數(shù)原形 u16 ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, u8 ADC_InjectedChannel) 功能描述 返回 ADC 指定注入通道的轉(zhuǎn)換結(jié)果 輸出參數(shù)1 ADCx:x 可以是 1 或者 2 來選擇 ADC 外設(shè) ADC1 或 ADC2 輸出參數(shù)2 ADC_Inject

28、edChannel:被轉(zhuǎn)換的 ADC 注入通道 輸出參數(shù) 無 返回值 轉(zhuǎn)換結(jié)果 先決條件 無 被調(diào)用函數(shù) 無 例: /* Return the ADC1 injected channel1 converted data value */ u16 InjectedDataValue; InjectedDataValue=ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1); 4. 函數(shù)DMA_Init 函數(shù)名 DMA_Init 函數(shù)原形 void DMA_Init(DMA_Chan

29、nel_TypeDef* DMA_Channelx, DMA_InitTypeDef* DMA_InitStruct) 功能描述 根據(jù) DMA_InitStruct 中指定的參數(shù)初始化 DMA 的通道 x 寄存器 輸出參數(shù)1 DMA Channelx :x 可以是1,2,3... 輸出參數(shù)2 DMA_InitStruct:指向結(jié)構(gòu) DMA_InitTypeDef 的指針,包含了 DMA 通道 x 的配 置信息 輸出參數(shù) 無 返回值 無 先決條件 無 被調(diào)用函數(shù) 無 3. 設(shè)計過程或程序代碼 3.1. 設(shè)計過程 1、A/D變換原理 ◆采樣:

30、 間隔一定時間對信號進行采樣,用信號序列來代替原來時間上連續(xù)的信號。 均勻采樣: 可完整地恢復(fù)原始信號,其中,T為采樣時間間隔,fs表示采樣頻率,fm表示原始信號最大頻率。 ◆量化: 把采集到的數(shù)值送到量化器編碼成數(shù)字形式,每個樣值代表一次采樣所獲得的信號的瞬時幅度。 A/D轉(zhuǎn)換器一般為標量均勻量化。(量化還可分為:標量量化、矢量量化) 量化誤差(與舍入方式相關(guān)):1LSB或 1/2LSB ◆編碼: A/D模擬/數(shù)字轉(zhuǎn)換器一般采用二進制編碼,A/D變換后的結(jié)果到此可以表示為一個以0、1二進制形式表示的比特流,單位時間內(nèi)可以傳輸?shù)亩M制比特速率就是A

31、/D之后的碼速率,數(shù)值上等于采樣頻率與量化比特數(shù)值之乘積。 二進制編碼:量化與字長的關(guān)系。 3、ADC的A/D轉(zhuǎn)換方式 在查詢方式下,軟件可通過讀取ADC模塊轉(zhuǎn)換完畢引腳EOC的狀態(tài)或狀態(tài)寄存器中的轉(zhuǎn)換完成標志位判斷本次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é)果可以左對齊

32、或右對齊方式存儲在16位數(shù)據(jù)寄存器中。 3、轉(zhuǎn)換特點: STM32的ADC最大的轉(zhuǎn)換速率為1Mhz,也就是轉(zhuǎn)換時間為1us(ADCCLK=14M,采樣周期為1.5個ADC時鐘下得到),不能讓ADC的時鐘超過14M,否則將導(dǎo)致結(jié)果準確度下降。 4、STM32將ADC的轉(zhuǎn)換分為2個通道組: 規(guī)則通道組和注入通道組。規(guī)則通道相當于運行的程序,而注入通道就相當于中斷。在程序正常執(zhí)行的時候,中斷是可以打斷程序正常執(zhí)行的。同這個類似,注入通道的轉(zhuǎn)換可以打斷規(guī)則通道的轉(zhuǎn)換,在注入通道被轉(zhuǎn)換完成之后,規(guī)則通道才得以繼續(xù)轉(zhuǎn)換。規(guī)則組設(shè)置后,可以按照設(shè)置的通道順序?qū)Ω魍ǖ肋M行依次

33、采集。方便于對多路ADC通道的自動采集。注入組最多設(shè)置4個通道,簡單來講就是需要觸發(fā)才能采集設(shè)置的通道ADC值。 本設(shè)計選擇了采用規(guī)則組,設(shè)置了一個通道進行自動采集。 5、此設(shè)計顯示電壓的特點: 本設(shè)計測量電壓值范圍為0-3.3V的電壓,顯示誤差為0.001V。 LCD實時顯示電壓值,MicroSD卡對數(shù)據(jù)進行同步存儲。 6、DMA請求: 在這次設(shè)計中用到了ADC轉(zhuǎn)換結(jié)果采用DMA傳遞方式。直接存儲器存取用來提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。無須CPU任何干預(yù),通過DMA數(shù)據(jù)可以快速地移動。這就節(jié)省了CPU的資源來做其他操作。 7、L

34、CD控制電路 (1)本設(shè)計所使用的LCD為3寸,400X240分辨率。LCD模塊使用STM32的FSMC接口控制。3TFT顯示屏焊接在奮斗顯示轉(zhuǎn)接板上,在屏上貼有觸摸屏,通過40芯的接口與V3或者MINI連接。 3.2. 程序代碼 1、主程序: int main(void) { u16 len, c2len,c3len,c4len; u8 c[] = " Voltage "; u8 c2[] = " "; u8 c3[] = " "; u8 c4[] = " . V "; u16 bkColor;

35、 len = sizeof(c)-1; //計算字節(jié)數(shù)長度sizeof() c2len = sizeof(c2)-1; c3len = sizeof(c3)-1; c4len = sizeof(c2)-1; bkColor = White; RCC_Configuration(); //系統(tǒng)時鐘配置為72MHz Usart1_Init(); //串口1初始化 ADC_Configuration(); //ADC初

36、始化 FSMC_LCD_Init(); //FSMC總線配置 lcd_Init(); //液晶初始化 // lcd_PutChar(10,10,g,0x0000,0xffff); // LCD_test(); USART_OUT(USART1,"\r\n USART1 print AD_value -------------------------- \r\n"); while (1) { if (ticks++ >= 900000) { //間隔時間顯示轉(zhuǎn)換結(jié)果

37、 ticks = 0; Clock1s = 1; } if (Clock1s) { Clock1s = 0; USART_OUT(USART1,"The current AD value = %d \r\n", ADC_ConvertedValue); //串口顯示字符段 //Delay(0xAFFFFf); Precent = (ADC_ConvertedValue*100/4096);// 算出百分比,2的12次冪為0xfff Voltage = Pr

38、ecent*33; // Voltage為實際電壓值的1000倍. c4[3]=(Voltage/1000+0) ; // 取千位數(shù)的整數(shù)部分 c4[5]=((Voltage%1000)/100+0) ; //對千位數(shù)取余數(shù)后再取其百位的整數(shù)部分 c4[6]=(((Voltage%100)/10)+0) ; //對百位數(shù)取余數(shù)后再取其十位的整數(shù)部分 c4[7]=((Voltage%10)+0) ; //對百位數(shù)取余數(shù)后再取其個位的整數(shù)部分 lcd_PutStr_16x24_Center(0, c3, c4len,Black, bk

39、Color); 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,"The v value = %d.%d%d%d

40、 V\r\n", c4[3]=(Voltage/1000),c4[5]=((Voltage%1000)/100),c4[6]=(Voltage%100)/10,c4[7]=(Voltage%10)); //顯示實際電壓值 LCD_test(); } } } 2、ADC配置: ADC_Configuration函數(shù)用于配置ADC1的通道11,因為只用了ADC1所以采用了ADC獨立模式,設(shè)置通道11進入規(guī)則組,規(guī)則組里的通道只有1個,就是通道1,轉(zhuǎn)換用了掃描方式,軟件觸發(fā),轉(zhuǎn)換結(jié)果采用DMA方式傳遞到2字節(jié)長度的緩存區(qū)里(ADC_Conve

41、rtedValue),默認的ADCCLK為36MHz,采樣周期是55.5+12.5時鐘周期,相當于采樣時間是間隔(68/36)us。 void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; DMA_InitTypeDef DMA_InitStructure; //設(shè)置AD模擬輸入端口為輸入 1路AD 規(guī)則通道 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GP

42、IO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOC, &GPIO_InitStructure); /* Enable DMA clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /* Enable ADC1 and GPIOC clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE); /* DMA channel1 configurati

43、on ----------------------------------------------*/ //使能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 = D

44、MA_DIR_PeripheralSRC; //傳送方向 DMA_InitStructure.DMA_BufferSize = 1; //傳送內(nèi)存大小,100個16位 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //傳送內(nèi)存地址遞增 DMA_InitStructure.DMA_Pe

45、ripheralDataSize = 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_M

46、2M = 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工作在獨立模式 ADC_InitStructure.ADC

47、_ScanConvMode = ENABLE; //模數(shù)轉(zhuǎn)換工作在掃描模式(多通道)還是單次(單通道)模式 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //模數(shù)轉(zhuǎn)換工作在掃描模式(多通道)還是單次(單通道)模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//ADC數(shù)據(jù)右對齊 ADC_Ini

48、tStructure.ADC_NbrOfChannel = 1; //規(guī)定了順序進行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目。這個數(shù)目的取值范圍是1到16 ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channels configuration [規(guī)則模式通道配置]*/ //ADC1 規(guī)則通道配置 ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_55Cycles5); //通道11采樣時間 55.5周期

49、 //使能ADC1 DMA ADC_DMACmd(ADC1, ENABLE); //使能ADC1 ADC_Cmd(ADC1, ENABLE); // 初始化ADC1校準寄存器 ADC_ResetCalibration(ADC1); //檢測ADC1校準寄存器初始化是否完成 while(ADC_GetResetCalibrationStatus(ADC1)); //開始校準ADC1 ADC_StartCalibration(ADC1); //檢測是否完成校準 while(ADC_GetCalibrationStatus(ADC1));

50、 //ADC1轉(zhuǎn)換啟動 ADC_SoftwareStartConvCmd(ADC1, ENABLE); } 4. 設(shè)計結(jié)果與分析 設(shè)計發(fā)現(xiàn):數(shù)字電壓表采用模數(shù)轉(zhuǎn)換思想來實現(xiàn),通過硬件電路和軟件程序相結(jié)合,可輸出自定義測量電壓,通過調(diào)節(jié)模數(shù)轉(zhuǎn)換電位器使在一定范圍內(nèi)可任意改變。輸出的電壓格式和精度的改變通過軟件控制,輸出電壓的大小的改變可以通過硬件實現(xiàn)。 參考文獻 [1]張旭,亓學(xué)廣,李世光等.基于STM32電力數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電子測量技術(shù),2010,33(11):90-93.DOI:10.3969/j.issn.1002-7300.2010.11.02

51、4. [2]孫啟富,孫運強,姚愛琴等.基于STM32的通用智能儀表設(shè)計與應(yīng)用[J].儀表技術(shù)與傳感器,2010,(10):34-36.DOI:10.3969/j.issn.1002-1841.2010.10.012. [3]董書成,張鴻飛,林勝釗等.基于 STM32幀轉(zhuǎn)移科學(xué)級 CCD 的時鐘驅(qū)動電路設(shè)計和實現(xiàn)[J].核電子學(xué)與探測技術(shù),2014,(8):1011-1015. [4]王鐵流,李宗方,陳東升等.基于STM32的USB數(shù)據(jù)采集模塊的設(shè)計與實現(xiàn)[J].測控技術(shù),2009,28(8):37-40. [5]盧軍,李振璧,曹明明等.基于STM32的掘進機控制系統(tǒng)設(shè)計[J].煤礦機械

52、,2013,34(1):265-267. [6]劉明貴,于謇,梁昊等.基于STM32的巖土工程無線采集系統(tǒng)[J].儀表技術(shù)與傳感器,2010,(5):95-97. [7]王愛林,劉榮華,嚴頂?shù)?基于STM32的CAN-USB轉(zhuǎn)換模塊[J].儀表技術(shù)與傳感器,2012,(6):69-70,73. [8]吳磊,翟云飛.基于STM32的NAND flash的塊分配框架設(shè)計[J].計算機測量與控制,2015,23(1):201-204. [9]肖林京,于鵬杰,于志豪等.基于STM32和emWin圖形庫的液晶顯示系統(tǒng)設(shè)計[J].電視技術(shù),2015,39(1):39-42,50. [10]董寶玉

53、,薛嚴冰,馬馳等.基于 AD9854與 STM32的頻率特性測試儀設(shè)計[J].化工自動化及儀表,2014,(6):655-659. [11]賀洪江,程琳.基于STM32和Modbus的電參數(shù)采集系統(tǒng)[J].自動化與儀表,2014,29(6):26-29. [12]王丹丹,宗振海,陳慧珊等.基于STM32的智能溫室遠程控制系統(tǒng)的設(shè)計[J].浙江農(nóng)業(yè)學(xué)報,2014,(3):791-796. [13]索猛,羅益民.基于STM32的循環(huán)水在線監(jiān)測系統(tǒng)設(shè)計[J].儀表技術(shù)與傳感器,2014,(12):78-79,83. [14]徐卓農(nóng),任嘉.一種多功能單片機綜合實驗裝置的研究與實現(xiàn)[J].中南林學(xué)院學(xué)報,2005,25(6):149-151. [15]張德榮,裘君,童有成等.嵌入式系統(tǒng)課程實踐教學(xué)模式探索與研究[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報,2010,09(6):68-69. 17

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!