【STM32】ADC模數轉換器

1?ADC簡介

ADC(Analog-Digital Converter)模擬-數字轉換器

ADC可以將引腳上連續變化的模擬電壓轉換為內存中存儲的數字變量,建立模擬電路到數字電路的橋梁

STM32是數字電路,只有高低電平,沒有幾V電壓的概念,想讀取電壓值,就需要借助ADC模數轉換器了。DAC則是相反的功能。

12位逐次逼近型ADC1us轉換時間

分辨率:一般用多少位來表示,0?~ 2 ^ 12 - 1(量化結果0~4095)
轉換時間:也是轉換頻率,從轉換開始到產生結果需要花1us時間,即轉換頻率是1MHz

輸入電壓范圍:0~3.3V,轉換結果范圍:0~4095

線性對應

18個輸入通道,可測量16個外部和2個內部信號源

16個GPIO口、內部溫度傳感器(測量CPU的溫度)和內部參考電壓(1.2V的基準電壓)

規則組和注入組兩個轉換單元

模擬看門狗自動監測輸入電壓范圍

STM32F103C8T6 ADC資源:ADC1ADC210個外部輸入通道

1.1?逐次逼近型ADC

ADC0809的內部結構圖,獨立的8位逐次逼近型ADC芯片。

左邊是8路輸入通道,通過通道選擇開關,選中一路,輸入到比較器前進行轉換;下面是地址鎖存和譯碼(想選中哪個通道,就把通道號放在這三個引腳上,再給一個鎖存信號,上面對應的通路開關就可以自動撥好了,相當于38譯碼器)

比較器有兩個輸入端,一個是待測電壓,另一個是DAC(數模轉換器)的電壓輸出端;如果DAC輸出的電壓比較大,就調小DAC數據;如果DAC輸出的電壓比較小,就增大DAC數據;直到DAC輸出的電壓和外部通道輸入的電壓近似相等,這樣DAC輸入的數據就是外部電壓的編碼數據了,這就是DAC的實現原理。一般使用二分法調節。

1.2?ADC框圖

具體的

有溫度傳感器、內部參考電壓,總共18個輸入通道,接到模擬多路開關,其輸出接到模數轉換器,即逐次比較,轉換結果放在數據寄存器里。

普通的的流程是:多路開關選中某一個通道,開始轉換,等待轉換完成,取出結果。

這里比較高級,可以同時選中多個,而且在轉換的時候,還分成了兩個組,規則通道組注入通道組其中規則組可以一次性最多選擇16個通道,注入組一次最多選擇4個通道。規則組的數據寄存器只能存儲一個結果,如果不想之前的結果被覆蓋,那在轉換完成之后,要盡快把結果拿走(使用DMA轉運數據);注入組可以存4個結果,不用擔心數據覆蓋。

左下角是觸發轉換部分,對于STM32的ADC,觸發ADC開始轉換的信號有兩種:一種是軟件觸發,程序中調用一條代碼;另一種是硬件觸發,就是這些觸發源。上面是注入組觸發源,下面是規則組觸發源。這些觸發源主要來自定時器,有定時器的各個通道,還有TRGO定時器主模式的輸出。定時器可以通向ADC、DAC這些外設,用于觸發轉換。因為ADC經常需要過一個固定的時間段轉換一次,正常的思路是:用定時器,每隔1ms申請一次中斷,在中斷里手動開始一次轉換;但是頻繁進中斷對程序是有影響的,所以對這種需要頻繁進中斷,并且在中斷里只完成簡單的工作的情況,一般都會有硬件的支持。還可以選擇外部中斷引腳來觸發轉換。

VREF+、VREF-是ADC的參考電壓,決定了ADC的輸入電壓范圍,VDDA、VSSA是ADC的供電引腳,一般情況下VREF+接VDDA,VREF-接VSSA。

右邊這里是ADCCLK是ADC的時鐘,是用于驅動內部逐次比較的時鐘,這個時鐘來自ADC的預分頻器,而ADC預分頻器來自RCC的。

模擬看門狗里面可以存儲閾值高限和閾值底限,如果指定了模擬看門狗,并且指定了看門的通道,越限之后,它就會亂叫,在上面申請一個模擬看門狗中斷,最后通向NVIC。

對于規則組和注入組,轉換完成之后,也會有一個EOC轉換完成的信號,EOC是規則組的完成信號,JEOC是注入組完成的信號,這兩個信號會在狀態寄存器里置一個標志位,讀取這個標志位就可以知道是不是轉換完成了;同時這兩個標志位也可以去到NVIC,申請中斷,如果開啟了NVIC對應的通道,它們就會觸發中斷。

1.3?ADC基本結構

左邊是輸入通道,16個GPIO口外加兩個內部通道,然后進入AD轉換器。AD轉換器里有兩個組,一個是規則組,一個是注入組,規則組最多選擇16個通道,注入組最多選擇4個通道,然后轉換的結果存在AD數據寄存器里,其中規則組只有一個數據寄存器,而注入組有4個數據寄存器。下面有觸發控制,觸發控制可以選擇軟件觸發和硬件觸發,硬件觸發主要是來自定時器,當然也可以選擇外部中斷的引腳;右邊是來自RCC的ADC時鐘CLOCK,ADC逐次比較的功能就是這個時鐘推動的。然后上面可以布置一個模擬看門狗用于檢測轉換結果的范圍,如果超出設定的閾值,就通過中斷輸出控制,向NVIC申請中斷。另外規則組和注入組完成之后會有個EOC信號,它會置一個標志位,當然也可以通向NVIC。右下角有個開關控制,在庫函數中就是ADC_Cmd,用于給ADC上電的。

1.4?輸入通道

通道

ADC1

ADC2

ADC3

通道0

PA0

PA0

PA0

通道1

PA1

PA1

PA1

通道2

PA2

PA2

PA2

通道3

PA3

PA3

PA3

通道4

PA4

PA4

PF6

通道5

PA5

PA5

PF7

通道6

PA6

PA6

PF8

通道7

PA7

PA7

PF9

通道8

PB0

PB0

PF10

通道9

PB1

PB1

通道10

PC0

PC0

PC0

通道11

PC1

PC1

PC1

通道12

PC2

PC2

PC2

通道13

PC3

PC3

PC3

通道14

PC4

PC4

通道15

PC5

PC5

通道16

溫度傳感器

通道17

內部參考電壓

ADC通道和引腳復用的關系。

ADC12_IN0的意思是ADC1和ADC2的IN0都是在PA0上的。以此類推。雙ADC模式。

1.5?規則組的轉換模式

在ADC初始化中會有兩個參數,一個是選擇單次轉換還是連續轉換;另一個是掃描模式還是非掃描

1.5.1?單次轉換,非掃描模式

這個列表就是規則組里面的菜單,有16個空位。可以在這里寫入要轉換的通道,比如通道2,在非掃描的模式下,這個菜單就只有第一個序列1的位置有效。這時菜單同時選中一組的方式就退化成簡單地選中一個的方式了,在這里可以在序列1的位置指定想轉換的通道,比如通道2,然后觸發轉換,ADC就會對通道2進行模數轉換,過一小段時間后,轉換完成,轉換結果放在數據寄存器里,同時給EOC標志位置1,整個轉換過程就結束了。判斷EOC標志位來確定轉換是否完成。如果想再啟動一次轉換,那就需要再觸發一次,轉換結束,置EOC標志位,讀結果。如果想換一個通道轉換,那就在轉換之前把第一個位置的通道2改成其他通道,再啟動轉換就可以了。這就是單次轉換、非掃描的轉換模式。

1.5.2?連續轉換,非掃描模式

首先還是非掃描模式。所以菜單列表就只用第一個,然后與上一個單次轉換不同的是它在一次轉換結束后不會停止,而是立刻開始下一輪的轉換,然后一直持續下去。只觸發一次就可以轉換了。

好處是:開始轉換之后不需要等待一段時間,因為一直在轉換,所以也不需要手動開始轉換,也不用判斷是否結束,想要讀AD值的時候,直接從寄存器取就是了。

1.5.3?單次轉換,掃描模式

單次轉換,每觸發一次,轉換結束后,就會停下來。掃描模式會用到菜單列表,選擇通道,可以任意指定,可以重復,初始化結構體中有個參數指定通道數目。這里為了防止數據被覆蓋,就需要用DMA及時將數據挪走,7個通道轉換完成之后,產生EOC信號,轉換結束。再觸發下一次,開始新的轉換。

1.5.4?連續轉換,掃描模式

在上一個模式的基礎上變了,就是一次轉換完成后,立刻開始下一次轉換。

還有間斷模式,每隔幾個轉換,暫停一次需要再次觸發才能繼續。

1.6?觸發控制

這個表是規則組的觸發源,有來自定時器的信號,也有來自外部引腳/片上外設的信號,具體需要AFIO重映射。還有軟件觸發。這些觸發信號通過右邊寄存器的位來完成。

1.7?數據對齊

ADC是12位的,但是數據寄存器是16位的,因此存在一個數據對齊的問題

數據右對齊(一般是這個)

數據左對齊

有點像大端模式,小端模式

1.8?轉換時間

AD轉換的步驟:采樣,保持,量化,編碼

STM32 ADC的總轉換時間為:TCONV = 采樣時間 + 12.5ADC周期(12位)

例如:當ADCCLK=14MHz,采樣時間為1.5ADC周期

TCONV = 1.5 + 12.5 = 14ADC周期 = 1μs

1.9?校準

ADC有一個內置自校準模式。校準可大幅減小因內部電容器組的變化而造成的準精度誤差。校準期間,在每個電容器上都會計算出一個誤差修正碼(數字值),這個碼用于消除在隨后的轉換中每個電容器上產生的誤差

建議在每次上電后執行一次校準

啟動校準前, ADC必須處于關電狀態超過至少兩個ADC時鐘周期

1.10?硬件電路

第一個是電位器產生一個可調的電壓,這里電位器的兩個固定端,一個接3.3,一個接GND,這樣中間的滑動端就可以輸出一個0~3.3的可調電壓輸出了。這里可以接ADC的輸入通道,比如PA0口;滑動端往上滑時,電壓增大,往下滑時,電壓減小。阻值不宜太小。

第二個是傳感器輸出電壓的電路,一般是光敏電阻、熱敏電阻、紅外接收管、麥克風等。串聯分壓,當傳感器阻值變小時,下拉作用變強,輸出端電壓就下降;反之,輸出端電壓增大。

第三個是電壓轉換電路,比如想測0~5V的VIN電壓,但是ADC只能接收0~3.3V的電壓,分壓。

手冊

2?AD單通道

3?AD多通道

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212886.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212886.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212886.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安裝 DevEco Studio 后不能用本地 Node.js 打開

安裝 DevEco Studio 后第一次打開時,不能用本地 Node.js 打開 答:因為本地 Node.js 文件夾名字中有空格 Node.js路徑只能包含字母、數字、“。”、“_”、“-”、“:”和“V” 解決方法: 1.修改文件夾名稱 2.重新下載 注意:找一…

Qt 通過命令行編譯程序

前言 從服務器拉代碼到編譯成可執行文件一個腳本解決問題。使用的項目文件見上一個文章 Qt生成動態鏈接庫并使用動態鏈接庫 腳本代碼 為了方便易懂這是一個很簡單的Qt編譯腳本 call E:\vs2015\VC\vcvarsall.bat x86 rmdir /s /q my-project git clone gitgitee.com:wenbai1…

【CF245H】Queries for Number of Palindromes(字符串區間dp)

Queries for Number of Palindromes - 洛谷 # Queries for Number of Palindromes ## 題面翻譯 題目描述 給你一個字符串s由小寫字母組成,有q組詢問,每組詢問給你兩個數,l和r,問在字符串區間l到r的字串中,包含多少…

1-3算法基礎-標準模板庫STL

1.pair pair用于存儲兩個不同類型的值&#xff08;元素&#xff09;作為一個單元。它通常用于將兩個值捆綁在一起&#xff0c;以便一起傳遞或返回。 #include <iostream> #include <utility> using namespace std; int main() {pair<int, string> person m…

TailwindCSS 多主題色配置

TailwindCSS 多主題色配置 現在大多數網站都支持主題色變換&#xff0c;比如切換深色模式。那么我們該如何進行主題色配置呢&#xff1f; tailwind dark tailwind 包含一個 dark變體&#xff0c;當啟用深色模式時&#xff0c;可以為網站設置不同樣式 <div class"bg-whi…

ThingWorx 9.2 Windows安裝

參考官方文檔安裝配置 1 PostgreSQL 13.X 2 Java, Apache Tomcat, and ThingWorx PTC Help Center 參考這里安裝 數據庫 C:\ThingworxPostgresqlStorage 設置為任何人可以full control 數據庫初始化 pgadmin4 創建用戶twadmin并記錄口令password Admin Userpostgres Thin…

漏刻有時百度地圖API實戰開發(9)Echarts使用bmap.js實現軌跡動畫效果

Bmap.js是Echarts和百度地圖相結合開發的一款JavaScript API&#xff0c;它可以幫助用戶在web應用中獲取包括地圖中心點、地圖縮放級別、地圖當前視野范圍、地圖上標注點等在內的地圖信息&#xff0c;并且支持在地圖上添加控件&#xff0c;提供包括智能路線規劃、智能導航(駕車…

C# WPF上位機開發(通訊協議的編寫)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 作為上位機&#xff0c;它很重要的一個部分就是需要和外面的設備進行數據溝通的。很多時候&#xff0c;也就是在這個溝通的過程當中&#xff0c;上…

PyQt下使用OpenCV實現人臉檢測與識別

背景&#xff1a; 一 數字圖像處理與識別警務應用模型 基于前期所學知識&#xff0c;與公安實踐相結合&#xff0c;綜合設計數字圖像處理與識別警務應用模型,從下列4個研究課題中選擇2個進行實驗實現&#xff1a;圖像增強與復原、人臉檢測與識別、虹膜內外圓檢測與分割、車牌…

Html轉PDF,前端JS實現Html頁面導出PDF(html2canvas+jspdf)

Html轉PDF&#xff0c;前端JS實現Html頁面導出PDF&#xff08;html2canvasjspdf&#xff09; 文章目錄 Html轉PDF&#xff0c;前端JS實現Html頁面導出PDF&#xff08;html2canvasjspdf&#xff09;一、背景介紹二、疑問三、所使用技術html2canvasjspdf 四、展示開始1、效果展示…

C語言----文件操作(一)

一&#xff1a;C語言中文件的概念 對于文件想必大家都很熟悉&#xff0c;無論在windows上還是Linux中&#xff0c;我們用文件去存儲資料&#xff0c;記錄筆記&#xff0c;常見的如txt文件&#xff0c;word文檔&#xff0c;log文件等。那么&#xff0c;在C語言中文件是什么樣的存…

threadpool github線程池學習

參考項目 https://github.com/progschj/ThreadPool 源碼分析 // 常規頭文件保護宏, 避免重復 include #ifndef THREAD_POOL_H #define THREAD_POOL_H// 線程池, 存儲線程對象; #include <vector>// 任務隊列, 雙向都可操作隊列, queue 不能刪除首個元素 #include <…

微信小程序制作-背單詞的小程序制作

微信小程序–背單詞的 好久沒有發過文章了&#xff0c;但是不代表著我不去學習了嘍&#xff0c;以下是我最近做的東西&#xff0c;前端的UI由朋友設計的&#xff0c;目前這個是前端使用的是微信小程序后端是Python的一個輕量型框架&#xff0c;FastApi&#xff0c;嗯&#xff…

MyBatis 四大核心組件之 Executor 源碼解析

&#x1f680; 作者主頁&#xff1a; 有來技術 &#x1f525; 開源項目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 倉庫主頁&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 歡迎點贊…

List 接口

1 List 接口 java.util 中的集合類包含 Java 中某些最常用的類。最常用的集合類是 List 和 Map。 List是一種常用的集合類型&#xff0c;它可以存儲任意類型的對象&#xff0c;也可以結合泛型來存儲具體的類型對象&#xff0c;本質上就是一個容器。 1.1 List 類型介紹 有序性…

06-React組件 Redux React-Redux

React組件化&#xff08;以Ant-Design為例&#xff09; 組件化編程&#xff0c;只需要去安裝好對應的組件&#xff0c;然后通過各式各樣的組件引入&#xff0c;實現快速開發 我們這里學習的是 Ant-design &#xff08;應該是這樣&#xff09;&#xff0c;它有很多的組件供我們…

計算機網絡測試題第二部分

前言:如果沒有做在線測試請自主獨立完成&#xff0c;本篇文章只作為學習計算機網絡的參考&#xff0c;題庫中的題存在一定錯誤和不完整&#xff0c;請學習時&#xff0c;查找多方書籍論證&#xff0c;獨立思考&#xff0c;如果存在疑慮可以評論區討論。查看時&#xff0c;請分清…

pytorch debug 常用工具

自動辨識圖像格式可視化 import numpy as np import matplotlib.pyplot as plt from PIL import Imagedef convert_to_numpy(image_input):"""自動檢測輸入圖像類型&#xff0c;并將其轉換為NumPy數組。"""if isinstance(image_input, np.ndarr…

7-3 Left-pad

根據新浪微博上的消息&#xff0c;有一位開發者不滿NPM&#xff08;Node Package Manager&#xff09;的做法&#xff0c;收回了自己的開源代碼&#xff0c;其中包括一個叫left-pad的模塊&#xff0c;就是這個模塊把javascript里面的React/Babel干癱瘓了。這是個什么樣的模塊&a…

物聯網IC

物聯網IC 電子元器件百科 文章目錄 物聯網IC前言一、物聯網IC是什么二、物聯網IC的類別三、物聯網IC的應用實例四、物聯網IC的作用原理總結前言 物聯網IC的功能和特性可以根據不同的物聯網應用需求來選擇和配置,以滿足物聯網設備在連接、通信、感知和控制方面的需求。 一、物…