本文以STM32F429IGT6單片機為例。 STM32F429IGT6有 3 個 ADC,每個 ADC有 12 位、10 位、8 位和 6 位可選,每個ADC有 16 個外部通道。另外還有兩個內部 ADC源和 V BAT 通道掛在 ADC1 上。ADC具有獨立模式、雙重模式和三重模式,對於不同 AD 轉換要求幾乎都有合適的模式可選。ADC功能非常強大,具體的我們在功能框圖中分析每個部分的功能。
單個ADC功能框圖如下所示:
掌握了 ADC的功能框圖,就可以對 ADC有一個整體的把握,在編程的時候可以做到了然如胸,不會一知半解。框圖講解采用從左到右的方式,跟 ADC 采集數據,轉換數據,傳輸數據的方向大概一致。
電壓輸入范圍
ADC輸入范圍為:V REF- ≤ V IN ≤ V REF+ 。由 V REF- 、V REF+ 、V DDA 、V SSA 、這四個外部引腳決定。
我們在設計原理圖的時候一般把 V SSA 和 V REF- 接地,把 V REF+ 和 V DDA 接 3V3,得到ADC的輸入電壓范圍為:0~3.3V。
如果我們想讓輸入的電壓范圍變寬,去到可以測試負電壓或者更高的正電壓,我們可以在外部加一個電壓調理電路,把需要轉換的電壓抬升或者降壓到 0~3.3V,這樣 ADC就可以測量了。
若測量的電壓超過0~3.3V,一個簡單的處理辦法為:處理后電壓的輸入范圍為(-10V~10V)
輸入通道
我們確定好 ADC輸入電壓之后,那么電壓怎么輸入到 ADC?這里我們引入通道的概念,STM32 的 ADC多達 19個通道,其中外部的 16個通道就是框圖中的 ADCx_IN0、ADCx_IN1...ADCx_IN5。這 16 個通道對應着不同的 IO 口,具體是哪一個 IO 口可以從手冊查詢到。其中 ADC1/2/3 還有內部通道: ADC1的通道 ADC1_IN16 連接到內部的 VSS,通道 ADC1_IN17 連接到了內部參考電壓 V REFINT 連接,通道 ADC1_IN18 連接到了芯片內部的溫度傳感器或者備用電源 V BAT 。ADC2 和 ADC3 的通道 16、17、18 全部連接到了內部的 VSS。