stm32之ADC


  將模擬量轉換為數字量的過程稱為模式(A/D)轉換,完成這一轉換的期間成為模數轉換器(簡稱ADC);將數字量轉換為模擬量的過程為數模(D/A)轉換,完成這一轉換的器件稱為數模轉換器(簡稱DAC).

 

模擬信號的采集與處理:

  數據采集系統由模擬信號采集、A/D轉換、數字信號處理三大部分組成:

A/D轉換的原理:

  A/D轉換中通常要完成采樣保持和量化編碼兩方面。所以AD轉換是需要轉換時間的,一般AD轉換的時間在uS級別;(量化編碼所需要的時間決定采樣保存的時間),如下圖:

將采樣后得到的樣點幅值轉換為數字量即為量化,編碼的過程。量化編碼過程是模/數轉換的核心。所謂量化編碼,就是以一定的量化單位,把數值上連續的模擬量而時間上的離散的模擬信號通過量化裝置轉變為樹枝上離散的階躍兩的過程。常見的量化編碼技術:計數式、雙積分轉換,逐次逼近式轉換,並聯式轉換;

 

AD轉換器的主要參數:

  1、分辨率  2、相對精度   3、轉換速度;

      

有16個多路通道。可以把轉換分成兩組:規則的和注入的。在任意多個通道上以任意順序進行的一系列轉換構成成組轉換。例如,可以如下順序完成轉換:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。
􀁺 規則組由多達16個轉換組成。規則通道和它們的轉換順序在ADC_SQRx寄存器中選擇。規則組中轉換的總數寫入ADC_SQR1寄存器的L[3:0]位中。
􀁺 注入組由多達4個轉換組成。注入通道和它們的轉換順序在ADC_JSQR寄存器中選擇。注入組里的轉換總數目寫入ADC_JSQR寄存器的L[1:0]位中。
如果ADC_SQRx或ADC_JSQR寄存器在轉換期間被更改,當前的轉換被清除,一個新的啟動脈沖將發送到ADC以轉換新選擇的組;

轉換模式:

  1、單次轉換模式,對一個端口轉換一次    2、連續轉換模式:對一個端口連續轉換;

  3、掃描模式:對多個端口連續轉換      4、中斷模式; 

ADC使用:

 

轉換模式詳解:  

如何使用規則通道的單次轉換模式:

  單次轉換模式里,ADC只執行一次轉換。這個模式既可通過設置ADC_CR2寄存器的ADON位(只適用於規則通道)啟動也可以通過外部觸發啟動(適用於規則通道和注入通道)。這時CONT位為0;

  一旦選擇通道的轉換完成:

    如果一個規則通道被轉換:

      --轉換數據被存儲在16位ADC_DR寄存器中;

      --EOC(轉換結束)標志被設置;

      --如果設置了EOCIE,則產生中斷;

    如果一個注入通道被轉換:

      --轉換數據被儲存在16的ADC_DRJ1寄存器中;

      --JEOC(注入轉換結束)標志位被設置;

      --如果設置了JEOCIE位,則產生中斷;

  然后ADC停止;

適用范圍:

  單通道單次轉換:

    對一個通道進行一次轉換,然后ADC停止;

    應用舉例:啟動系統功能之前測量電壓;

  多通道單次轉換:

    對多個通道進行逐個的獨立轉換,然后ADC停止;

    可對多大16個通道的轉換配置不同采樣時間和順序;

      無需中途停止ADC來配置下一個通道的采樣時間;

      節省CPU負載;

  應用舉例:啟動系統之前測量多個參數;

  單通道連續轉換:

    對一個規則通道進行連續轉換

    通常可用於后台,無需要CPU干涉的連續轉換;

    配合DMA的循環模式,進一步減少CPU負載;

  應用舉例:檢測電池電壓。測量並調節爐溫;

  多通道連續轉換:

    對多個通道進行連續的獨立轉換;

    可對多達16個通道的轉換配置不同的采樣時間和順序;

  應用舉例:

    多電池充電器檢測多個電壓和溫度信息;

ADC相關寄存器:

  ADC_CR1:ADC控制寄存器,關鍵位:掃描位、JEOCIE(允許中斷位)、模式選擇、EOC(允許中斷)、看門狗檢測哪路AD的選擇;

  ADC_CR2:關鍵位:打開ADC、設置是否連續轉換、AD校准、數據格式左\右對齊、觸發事件、

  ADC_SMPR1/ADC_SMPR2:采樣事件寄存器:

    設置采樣時間等、

時間計算:

  對於每個轉換的通道,采樣時間建議盡量長一點,以獲得較高的准確度。但這樣會降低ADC的轉換速率。ADC的轉換時間可以由下公式計算:

      Tconv=采樣時間+12.5個周期;

  其中:

      Tconv是總轉換時間,采樣時間是根據每個通道的SMP位的設置來決定的;

  例如:當ADCCLK=14Mhz的時候,並設置了1.5個周期為采樣時間,則得到的Tconv=14個周期=1us;(這是最快速度)

  ADC_SQR1~3:

    定義了多少組進行AD轉換(一個通道為一組)

  ADC_DR/ADC_JDRx:ADC數據寄存器;

  ADC_SR:ADC狀態寄存器;

 //待續......

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM