STM32F407 ADC 個人筆記


1. ADC概述(STM32F4xx系列)

  • 3 個 ADC
    • 可分別獨立使用
    • 也可使用雙重/三重模式(提高采樣率)
  • 2 個通道組
    • 規則通道:相當於正常運行的程序
    • 注入通道:相當於中斷(可以打斷規則通道的轉換)
  • 轉換模式分為
    • 單次、連續、掃描、間斷模式
  • 位數
    • 12位模擬數字轉換器
    • 結果左對齊或右對齊,存在16位數據寄存器中

2. 規則通道 & 單次轉換模式

過程

轉換結束時:

  • 轉換結果將被存在 ADC_DR 寄存器中
  • EOC(轉換結束)標志將被置位
  • 如果設置了 EOCIE,則會產生中斷

要配置哪些

是否用掃描模式,分辨率,對齊方式,外部觸發使能設置,開始轉換,輸入時鍾分頻,多重模式選擇,采樣時間

用到的寄存器

1)ADC控制寄存器(ADC_CR1 和 ADC_CR2)

ADC_CR1

  • ADC_CR1 的 SCAN 位
  • 該位用於設置掃描模式
  • 如果設置為 1,則 使用掃描模式,如果為 0,則關閉掃描模式。
  • 由軟件設置和清除
  • 在掃描模式下,由 ADC_SQRx或 ADC_JSQRx 寄存器選中的通道被轉換。
  • 如果設置了 EOCIE 或 JEOCIE,只在最后一個通道轉換完畢后才會產生EOC 或 JEOC 中斷。
  • ADC_CR1[25:24]

用於設置 ADC 的分辨率

ADC_CR2

  • ADON 位用於開關 AD 轉換器
  • CONT 位用於設置是否進行連續轉換,我們使用單次轉換,所以 CONT 位必須為 0。
  • ALIGN 用於設置數據對齊,我們使用右對齊,該位設置為 0。
  • EXTEN[1:0]用於規則通道的外部觸發使能設置,我們這里使用的是軟件觸發,即不使用外部觸發
  • SWSTART 位用於開始規則通道的轉換,我們每次轉換(單次轉換模式下)都需要向該位寫
    1。

2)ADC 通用控制寄存器(ADC_CCR)

  • TSVREFE 位是內部溫度傳感器和 Vrefint 通道使能位,內部溫度傳感器我們將在下一章介紹,這里我們直接設置為 0
  • ADCPRE[1:0]用於設置 ADC 輸入時鍾分頻
    • 00~11 分別對應 2/4/6/8 分頻
    • STM32F4 的 ADC 最大工作頻率是 36Mhz, 而 ADC 時鍾(ADCCLK)來自 APB2,APB2 頻率一般是 84Mhz,所以我們一般設置 ADCPRE=01, 即 4 分頻,這樣得到 ADCCLK 頻率為 21Mhz,不超過36的最大頻率。
  • MULTI[4:0]用於多重 ADC 模式選擇,本章我們僅用了 ADC1(獨立模式),並沒用到多重 ADC 模式,所以設置這 5 個位為 0 即可。

3) ADC 采樣時間寄存器(ADC_SMPR1 和 ADC_SMPR2)

  • 這兩個寄存器 用於設置通道 0~18 的采樣時間
  • 每個通道占用 3 個位。
  • 對於每個要轉換的通道,采樣時間建議盡量長一點
    • 以獲得較高的准確度
    • 但是這樣會降 低 ADC 的轉換速率。
    • ADC 的轉換時間可以由以下公式計算
    • Tcovn=采樣時間+12 個周期 , 其中:
      • Tcovn 為總轉換時間
      • 采樣時間是根據每個通道的 SMP 位的設置來決定的
      • 例如, 當 ADCCLK=21Mhz 的時候,並設置 3 個周期的采樣時間,則得到Tcovn=3+12=15 個周期 =0.71us。

4)ADC 規則序列寄存器(ADC_SQR1~3)

5)ADC 規則數據寄存器(ADC_DR)

  • 規則序列中的 AD 轉化結果都將被存 在這個寄存器里面
  • 而注入通道的轉換結果被保存在 ADC_JDRx 里面
  • 該寄存器的數據可以通過 ADC_CR2 的 ALIGN 位設置左對齊還是 右對齊。

6)ADC 狀態寄存器(ADC_SR)

EOC 位,我們通過判斷該位來決定是否此次規則通道的 AD
轉換已經完成, 如果該位位 1,則表示轉換完成了, 就可以從 ADC_DR 中讀取轉換結果,否則
等待轉換完成。

STM32F40x系列ADC外部通道和引腳對應關系


免責聲明!

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



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