博客專欄

EEPW首頁(yè) > 博客 > STM32-ADC采集

STM32-ADC采集

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

ADC采集和過(guò)濾

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

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

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

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

如果 ADC_SQRx 或 ADC_JSQR 寄存器在轉(zhuǎn)換期間被更改,當(dāng)前的轉(zhuǎn)換被清除,一個(gè)新的啟動(dòng)脈

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

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

溫度傳感器和通道ADC_IN16相連接,內(nèi)部參照電壓Vrefint和ADC_IN17相連接。可以按注入或規(guī)則通道對(duì)這兩個(gè)內(nèi)部通道進(jìn)行轉(zhuǎn)換

在使用ADC的時(shí)候要注意ADC的采樣時(shí)間。

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

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

ADC轉(zhuǎn)換時(shí)間:Tconv = 采樣時(shí)間 + 12.5個(gè)周期。當(dāng)ADC_CLK設(shè)置最大14M,采樣時(shí)間設(shè)置最快的1.5個(gè)周期,轉(zhuǎn)換時(shí)間最短=1.5個(gè)周期 + 12.5個(gè)周期 = 14個(gè)周期 = 1us。但一般PCLK2 = 72M,ADC_CLK最大為12M,所以最短轉(zhuǎn)換時(shí)間為1.17us。

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

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

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

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

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

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

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



關(guān)鍵詞: ADC

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉