• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 博客專欄

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

    STM32-ADC采集

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

    ADC采集和過濾

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

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

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

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

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

    沖將發送到 ADC 以轉換新選擇的組。

    溫度傳感器/Vrefint內部通道

    溫度傳感器和通道ADC_IN16相連接,內部參照電壓Vrefint和ADC_IN17相連接。可以按注入或規則通道對這兩個內部通道進行轉換

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

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

    ADC用若干個ADC_CLK周期對輸入電壓進行采樣,采樣的周期數可由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采集數據的時候會遇到很多問題,當我們遇到采集的數據不穩定的時候這個時候需要我們使用特定的方法使測得的數據更加穩定。

    我經常使用的方法有四種:

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

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

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

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

    *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



    關鍵詞: ADC

    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 黔东| 双辽市| 道真| 进贤县| 靖宇县| 同心县| 营口市| 房产| 织金县| 昆山市| 松滋市| 峨边| 万载县| 威信县| 贺兰县| 文登市| 页游| 屏东市| 互助| 太保市| 正定县| 和田县| 隆尧县| 长子县| 汕头市| 灵寿县| 南澳县| 义马市| 密云县| 十堰市| 峨山| 深泽县| 太康县| 师宗县| 湄潭县| 阿尔山市| 华安县| 五河县| 嫩江县| 怀来县| 绥江县|