STM32-ADC模數轉換器(7)

目錄

一、ADC簡介

二、逐次逼近型ADC

三、ADC基本結構圖

四、規則組的四種轉換模式

五、轉換時間


對GPIO來說,它只能讀取引腳的高低電平,使用了ADC模數轉化器之后,就可以對高電平和低電平之間的任意電壓進行量化,最終用一個變量來表示,讀取這個變量,就能得到引腳輸入的具體電壓是多少了。

ADC模數轉化器就相當于一個電壓表,把引腳的電壓值測出來,放入一個變量中,這就是ADC的作用。

一、ADC簡介

模擬-數字轉換器簡稱ADC(Analog-Digital Converter),它可以將引腳上連續變化的模擬電壓轉換為內存中存儲的數字變量,建立模擬電路到數字電路的橋梁。

數字-模擬轉換器簡稱DAC,可以將數字變量轉化成模擬電壓,主要應用于波形生成(信號發生器、音頻解碼芯片)等。
PWM的功能與DAC相似,它只有完全導通和完全斷開兩種狀態,在這兩種狀態上都沒有功率損耗,所以在直流電機調速這種大功率的應用場景,使用PWM來等效模擬量,是比DAC更好的選擇,且PWM電路更簡單,而且更常用。

STM32中的ADC是12位逐次逼近型ADC,1us轉換時間。


ADC還有兩個關鍵參數,分別是分辨率和轉換時間(轉換頻率)
分辨率就是用多少位來表示,這里12位,分辨率的表示范圍就是0~2^(12-1),即量化結果的范圍是0~4095,位數越高,量化結果越精細,對應分辨率就越高。
AD轉換是需要一小段時間的,這里1us表示從AD轉換開始到產生結果,需要花費1us的時間,對應AD的轉換頻率是1MHz,這個就是STM32的最快轉換頻率。

輸入電壓范圍:0~3.3V,轉換結果范圍:0~4095
輸入電壓一般要求是在芯片供電的正極和負極之間變化,輸入0-3.3V,經過AD轉換后,就得到最小值0,最大值4095,中間也都是一一對應的線性關系。

ADC模數轉換器共有16個輸入通道,可測量16個外部和2個內部信號源
16個外部信號源就是16個GPIO口,在引腳上直接接模擬信號就可以,不需要任何額外的電路,引腳就可以測量電壓值。
兩個內部信號源分別是內部溫度傳感器和內部參考電壓。
溫度傳感器可以測量CPU的溫度,內部參考電壓是一個1.2V左右的基準電壓,這個基準電壓不會隨外部供電變化而變化,如果芯片的供電不是標準的3.3V,測量外部引腳的電壓就會錯誤,這時就可以讀取基準電壓進行校準,就能得到正確的電壓值了。

STM32F103C8T6 ADC資源:ADC1、ADC2,10個外部輸入通道,兩個內部信號源溫度傳感器和內部參考電壓都在ADC1上。
ADC12_IN0的意思是ADC1和ADC2的IN0都在PA0引腳上。

二、逐次逼近型ADC

輸入部分:給地址鎖存和譯碼一個通道的地址,就能讓通道選擇開關,選擇其中一個通道打開。

比較部分:通過電壓比較器,它可以判斷兩個輸入信號電壓的大小關系,輸出一個高低電平,指示電壓誰大誰小。它的兩個輸入端,一個是外部通道輸入未知編碼的電壓,一個是DAC輸出已知編碼的電壓,它倆同時輸入到比較器,進行大小判斷。如果DAC輸出的電壓比較大,就調小DAC數據;如果DAC輸出電壓比較小,就調大DAC數據,直到DAC輸出電壓和外部通道輸入的電壓近似相等,這樣DAC輸入的數據就是外部電壓的編碼數據了,這個電壓調節的過程就是逐次逼近寄存器SAR來完成的。

為了最快找到未知電壓的編碼,通常是采用二分法來進行查找,比如8位的ADC,那編碼就是0~255,第一次輸入時,就給255的一半128進行比較,如果DAC大了,第二次比較就給128的一半64進行比較,以此類推。這些比較數據正好是二進制的每一位位權,這個判斷過程就相當于是從高位到低位依次判斷是1還是0的過程。

三、ADC基本結構圖

左邊是輸入通道,包括16個GPIO外部輸入通道和兩個內部通道。

進入AD轉換器后,里面有兩個組,分別是規則組和注入組,規則組最多可以同時選中16個通道進行比較,但是只能轉換輸出其中一個通道內的數據,因此規則組可以配合DMA數據轉運來使用,DMA可以轉運選中的其他多個通道內的數據,防止數據被覆蓋。
注入組最多可以同時選擇4個通道進行比較,也能同時輸出4個通道內的數據到AD數據寄存器。

觸發控制提供開始轉換信號,它有軟件觸發(調用函數)和硬件觸發(定時器和外部中斷)。

上面可以布置一個模擬看門狗,用于監測轉換結果的范圍,如果超出設定的閾值,就通過中斷輸出控制,向NVIC申請中斷。

規則組和注入組轉換完成后,會有一個EOC信號,它會置一個標志位,最終也可以向NVIC申請中斷。

最后右下角還有一個開關控制,在庫函數中就是ADC_Cmd函數,用于給ADC上電。

AD初始化步驟:
(1)開啟RCC時鐘,包括ADC和GPIO;
(2)ADC的時鐘,ADCCLK需要配置一下;
(3)配置GPIO,改成輸入模式;
(4)配置多路開關,把左邊通道接入到右邊的規則組列表中;
(5)配置ADC轉換器;
(6)調用ADC_Cmd函數,開啟ADC;
(7)對ADC進行校準,來減少誤差。


四、規則組的四種轉換模式


1、單次轉換,非掃描模式

上圖列表就是規則組里能選中的通道,在非掃描模式下,這個列表只有第一個序列1的位置有效,規則組同時選中一組(16個通道)就退化為簡單地選中一個地方式了,序列1的位置可以指定想要轉換的通道,觸發后,ADC就會對這個通道2進行模數轉換,過一小段時間后,轉換結果就會放在數據寄存器中,同時給EOC標志位置1。如果需要再轉換,就得再次觸發ADC進行模數轉換。

2、連續轉換,非掃描模式

它與上一種方式的不同之處在于,在一次轉換結束之后,它的轉換不會停止,而是立刻開始下一輪的轉換,一直持續下去。

3、單次轉換,掃描模式

這里也是單次轉換,因此再每次轉換后,都會停下來,需要觸發才能開始。
這個掃描模式可以同時選擇多個通道,通道數量也是可以指定的,觸發之后,它就會依照序列號,依次對通道進行AD轉換,轉換結果都放在數據寄存器了,為了防止數據被覆蓋,需要用DMA及時將數據挪走。7個通道轉換完成后,才會產生EOC標志位置1,轉換結束。然后需要轉換,得再次觸發ADC進行模數轉換。


4、連續轉換,掃描模式

這個模式功能跟上個模式一致,就是觸發一次就會自動一直觸發,會一直連續轉換。

在掃描模式得情況下,還有一種模式,叫間斷模式,它的作用是在掃描過程中,每隔幾個轉換,就暫停一次,需要再次觸發,才能繼續。


ADC1和ADC2的外部觸發方式,其中包括定時器觸發、外部引腳觸發和軟件觸發,選擇哪種觸發方式,通過控制最右邊寄存器可以選擇對應方式。

五、轉換時間

AD轉換的步驟包括采樣保持、量化編碼兩步。

采樣保持:在量化編碼前,需要設置一個采樣開關,打開采樣開關,收集外部電壓,比如可以用一個小容量的電容存儲這個電壓,存儲好了以后,斷開采樣開關,再進行后面的量化編碼,這樣在量化編碼期間,電壓就能夠始終保持不變,這樣才能精確地定位未知電壓的位置;
采樣保持的過程中,需要閉合采樣開關,過一段時間再斷開,這里就會產生一個采樣時間。

量化編碼:是ADC逐次比較(AD模數轉換)的過程,這個需要花一段時間,位數越多,花費的時間就越長。

STM32 ADC的總轉換時間為:T_CONV = 采樣時間 + 12.5個ADC周期
采樣時間就是采樣保持花費的時間,采樣時間越大,越能避免一些毛刺信號的干擾,轉換時間也會相應延長;
12.5個ADC周期是量化編碼花費的時間,ADC是12位的,因此需要花費12個周期,這里0.5個周期是一些其他事情花費的時間。

例如:當ADCCLK=14MHz,采樣時間為1.5個ADC周期。T_CONV = 1.5 + 12.5 = 14個ADC周期?
ADC周期就是從RCC分頻過來的ADCCLK,ADCCLK最大為14MHz。
轉換時間= N個ADC周期/ADCCLK = 14/14MHz = 1us

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

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

相關文章

智能商品推薦系統技術路線圖

智能商品推薦系統技術路線圖 系統架構圖 --------------------------------------------------------------------------------------------------------------- | 用戶交互層 (Presentation Layer) …

【Docker系列】docker inspect查看容器部署位置

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

標量/向量/矩陣/張量/范數詳解及其在機器學習中的應用

標量(Scalar)、向量(Vector)、矩陣(Matrix)、張量(Tensor)與范數(Norm)詳解及其在機器學習中的應用 1. 標量(Scalar) 定義&#xff1…

【2025年】基于電腦的jdk1.8通過idea創建springboot2.x版本(非常簡潔快速)

【2025年】基于電腦的jdk1.8通過idea創建springboot2.x版本 提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是springboot的使用。前后每一小節的內容是存在的有:學習and理解的關聯性。【幫幫志系列文章】&…

SierraNet協議分析使用指導[RDMA]| 如何設置 NVMe QP 端口以進行正確解碼

在解碼RoCEv2數據包(包括TCP RDMA和RoCE RDMA)時,若捕獲的跟蹤數據無法正確解碼,通常需要執行特定的解碼步驟。對于RoCE RDMA跟蹤數據的處理,分析器主要采用兩種方式獲取必要信息以實現數據包解碼: 首先&am…

JavaScript基礎-局部作用域

在JavaScript中,理解不同種類的作用域是掌握這門語言的關鍵之一。作用域決定了變量和函數的可訪問性(即可見性和生命周期)。與全局作用域相對應的是局部作用域,它限制了變量和函數只能在其定義的特定范圍內被訪問。本文將深入探討…

李沐動手深度學習(pycharm中運行筆記)——09.softmax回歸+圖像分類數據集+從零實現+簡潔實現

09.softmax回歸圖像分類數據集從零實現簡潔實現(與課程對應) 目錄 一、softmax回歸 1、回歸 vs 分類 2、經典分類數據集: 3、從回歸到分類——均方損失 4、從回歸到多類分類——無校驗比例 5、從回歸到多類分類——校驗比例 6、softmax和…

C++八股——內存分配

文章目錄 1. 虛擬內存空間2. malloc和free3. new和delete4. 內存池 1. 虛擬內存空間 程序進程的虛擬內存空間是操作系統為每個進程提供的獨立、連續的邏輯地址空間,與物理內存解耦。其核心目的是隔離進程、簡化內存管理,并提供靈活的內存訪問控制。 &am…

【Linux基礎】網絡相關命令

目錄 netstat命令 1.1 命令介紹 1.2 命令格式 1.3 常用選項 1.4 常用命令實例 1.4.1 顯示所有TCP連接 1.4.2 查看路由表 1.4.3 實時監控網絡接口流量 1.4.4 查看監聽中的端口以及關聯進程 ping命令 2.1 命令介紹 2.2 命令格式 2.3 常用選項 2.4 常用示例 ifconfi…

adb 實用命令匯總

版權歸作者所有&#xff0c;如有轉發&#xff0c;請注明文章出處&#xff1a;https://cyrus-studio.github.io/blog/ 基礎adb命令 # 重啟adb adb kill-server# 查看已連接的設備 adb devices# 進入命令行 adb shell# 使用 -s 參數來指定設備 adb -s <設備序列號> shell…

C#管道通訊及傳輸信息丟失的原因

以下是C#管道通訊客戶端/服務端共用類 namespace PipeCommunication { /// <summary> /// 管道信息回調通知 /// </summary> /// <param name"msg"></param> public delegate void PipeMessageEventHandler(string msg…

MixTeX - 支持CPU推理的多模態LaTeX OCR

文章目錄 一、項目概覽相關資源核心特性技術特點 二、安裝三、使用說明環境要求 四、版本更新五、當前限制 一、項目概覽 MixTeX是一款創新的多模態LaTeX識別小程序&#xff0c;支持本地離線環境下的高效CPU推理。 無論是LaTeX公式、表格還是混合文本&#xff0c;MixTeX都能輕…

簡單 Linux 字符設備驅動程序

注&#xff1a;本文為 “Linux 字符設備驅動” 相關文章合輯。 英文引文&#xff0c;機翻未校。 中文引文&#xff0c;略作重排。 未整理去重&#xff0c;如有內容異常&#xff0c;請看原文。 Simple Linux character device driver 簡單 Linux 字符設備驅動程序 Oleg Kutko…

NX949NX952美光科技閃存NX961NX964

NX949NX952美光科技閃存NX961NX964 在半導體存儲領域&#xff0c;美光科技始終扮演著技術引領者的角色。其NX系列閃存產品線憑借卓越的性能與創新設計&#xff0c;成為數據中心、人工智能、高端消費電子等場景的核心組件。本文將圍繞NX949、NX952、NX961及NX964四款代表性產品…

協議路由與路由協議

協議路由”和“路由協議”聽起來相似&#xff0c;但其實是兩個完全不同的網絡概念。下面我來分別解釋&#xff1a; 一、協議路由&#xff08;Policy-Based Routing&#xff0c;PBR&#xff09; ? 定義&#xff1a; 協議路由是指 根據預設策略&#xff08;策略路由&#xff0…

Linux510 ssh服務 ssh連接

arning: Permanently added ‘11.1.1.100’ (ECDSA) to the list of known hosts. rooot11.1.1.100’s password: Permission denied, please try again. rooot11.1.1.100’s password: Permission denied, please try again 還沒生效 登不上了 失效了 sshcaozx26成功登錄 …

金融學知識筆記

金融學知識筆記 一、引言 金融學它結合了數學、概率論、統計學、經濟學和計算機科學等多學科的知識&#xff0c;用于解決金融領域中的各種問題&#xff0c;如金融衍生品定價、投資組合優化、風險管理和固定收益證券分析等。通過對金融學的學習&#xff0c;我們可以更好地理解…

AB測試面試題

AB測試面試題 常考AB測試問答題(1)AB測試的優缺點是什么?(2)AB測試的一般流程/介紹一下日常工作中你是如何做A/B實驗的?(3)第一類錯誤 vs 第二類錯誤 vs 你怎么理解AB測試中的第一、二類錯誤?(4)統計顯著=實際顯著?(5)AB測試效果統計上不顯著?(6)實驗組優于對…

USR-M100采集數據并提交MQTT服務器

本文為記錄備忘&#xff0c;不做過多解釋。 模塊自身帶有2路數字量輸入&#xff0c;2路模擬量輸入&#xff0c;2路485接口 數字量接報警輸入&#xff0c;模擬量接壓力傳感器&#xff0c;液位傳感器&#xff0c;485接口分別接流量計&#xff0c;溫濕度傳感器。 正確接線&…

Octave 繪圖快速入門指南

目錄 1. 基本的 2D 繪圖 2. 自定義圖形樣式 3. 繪制散點圖 4. 繪制柱狀圖 5. 繪制直方圖 6. 3D 繪圖 6.6.1 3D 曲面圖 6.6.2 3D 散點圖 7. 繪制極坐標 8. 多子圖繪制 總結 Octave 是一個類似于 MATLAB 的開源數學軟件&#xff0c;廣泛用于數值計算和數據分析。它提供…