博客專欄

EEPW首頁 > 博客 > STM32-ADC采集

STM32-ADC采集

發(fā)布人:3280519304 時間:2023-06-17 來源:工程師 發(fā)布文章

ADC采集和過濾

STM32采用的是12位ADC是一種逐次逼近型模擬數(shù)字轉換器,它有多達18個通道,可以測量16個外部和2個內(nèi)部信號源。各通道的A/D轉換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結果可以是左對齊或者是右對齊方式存儲在16位數(shù)據(jù)寄存器中。模擬看門狗特性允許應用程序檢測輸入電壓是否超出用戶定義的高/低閾值。ADC的輸入時鐘不得超過14MHZ,它是由PCLK2經(jīng)分頻產(chǎn)生。

16個通道,可以把轉換組織分成兩組:規(guī)則組和注入組。在任意多個通道上以任意順序進行的一系列轉換構成成組轉換。例如,可以如下順序完成轉換:通道3、通道8、通道2、通道0、通道2、通道15。

規(guī)則組:由多達16個轉換組成,規(guī)則通道和它們的轉換順序在ADC_SQRx寄存器中選擇,規(guī)則組中轉換的總數(shù)應寫入ADC_SQR1寄存器的了L[3:0]位中。

注入組:由多達4個轉換組成,注入通道和它們的轉換順序在ADC_JSQR寄存器中選擇,注入組里的轉換總數(shù)目應寫入ADC_JSQR寄存器的L[1:0]中。

如果 ADC_SQRx 或 ADC_JSQR 寄存器在轉換期間被更改,當前的轉換被清除,一個新的啟動脈

沖將發(fā)送到 ADC 以轉換新選擇的組。

溫度傳感器/Vrefint內(nèi)部通道

溫度傳感器和通道ADC_IN16相連接,內(nèi)部參照電壓Vrefint和ADC_IN17相連接??梢园醋⑷牖蛞?guī)則通道對這兩個內(nèi)部通道進行轉換

在使用ADC的時候要注意ADC的采樣時間。

ADC輸入時鐘有ADC_CLK由PCLK2(一般72M)分配產(chǎn)生,最大14M。

ADC用若干個ADC_CLK周期對輸入電壓進行采樣,采樣的周期數(shù)可由ADC采樣時間寄存器ADC_SMPR1和ADC_SMPR2中的SMP位設置,ADC_SMPR2控制通道0~9,ADC_SMPR1控制通道10~17,最小采樣周期是1.5個,周期為1/ADC_CLK.。

ADC轉換時間:Tconv = 采樣時間 + 12.5個周期。當ADC_CLK設置最大14M,采樣時間設置最快的1.5個周期,轉換時間最短=1.5個周期 + 12.5個周期 = 14個周期 = 1us。但一般PCLK2 = 72M,ADC_CLK最大為12M,所以最短轉換時間為1.17us。

在我們使用ADC采集數(shù)據(jù)的時候會遇到很多問題,當我們遇到采集的數(shù)據(jù)不穩(wěn)定的時候這個時候需要我們使用特定的方法使測得的數(shù)據(jù)更加穩(wěn)定。

我經(jīng)常使用的方法有四種:

  1. 100ms測一次數(shù)據(jù),將測得的連續(xù)的兩個數(shù)據(jù)求他們的差,給定一個值與他們的差進行比較,如果變化過大判定為無效數(shù)據(jù),過濾掉。

  2. 建立一個數(shù)組這個數(shù)組大小根據(jù)具體情況而定,每次測得一個數(shù)據(jù)去頭進尾,然后求平均值,這樣可以讓我們的數(shù)據(jù)不會變化太大,我們的數(shù)據(jù)看上去會更加平滑。

  3. 建立一個有10個元素的數(shù)組,每測得10個數(shù)據(jù)去掉最大值和最小值,然后求取平局值作為一次測量的結果,將這10個數(shù)據(jù)全部對掉,以此類推。這個方法可以排除不定的因素的干擾。

    四、每次讀取5次數(shù)據(jù),對這5個數(shù)據(jù)進行排序,使用這五個數(shù)的中位數(shù)。再將這五個數(shù)全部去掉。

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: ADC

相關推薦

技術專區(qū)

關閉