STM32 擁有 1~3 個 ADC (STM32F101/102 系列只有 1 個 ADC),這些 ADC 可以獨立
使用, 也可以使用雙重模式(提高采樣率)。 STM32 的 ADC 是 12 位逐次逼近型的模擬數
字轉換器。它有 18 個通道,可測量 16 個外部和 2 個內部信號源。各通道的 A/D 轉換可
以單次、連續、掃描或間斷模式執行。 ADC 的結果可以左對齊或右對齊方式存儲在 16 位
數據寄存器中。 模擬看門狗特性允許應用程序檢測輸入電壓是否超出用戶定義的高/低閥
值。
STM32F103 系列最少都擁有 2 個 ADC,我們選擇的 STM32F103ZET 包含有 3 個 ADC。
STM32 的 ADC 最大的轉換速率為 1Mhz,也就是轉換時間為 1us(在 ADCCLK=14M,采樣周期
為 1.5 個 ADC 時鐘下得到),不要讓 ADC 的時鐘超過 14M,否則將導致結果準確度下降。
STM32 將 ADC 的轉換分為 2 個通道組:規則通道組和注入通道組。規則通道相當于你正常
運行的程序,而注入通道呢,就相當于中斷。在你程序正常執行的時候,中斷是可以打斷你
的執行的。同這個類似,注入通道的轉換可以打斷規則通道的轉換, 在注入通道被轉換完
成之后,規則通道才得以繼續轉換。
通過一個形象的例子可以說明: 假如你在家里的院子內放了 5 個溫度探頭,室內放了
3 個溫度探頭; 你需要時刻監視室外溫度即可,但偶爾你想看看室內的溫度;因此你可以
使用規則通道組循環掃描室外的 5 個探頭并顯示 AD 轉換結果,當你想看室內溫度時,通
過一個按鈕啟動注入轉換組(3 個室內探頭)并暫時顯示室內溫度,當你放開這個按鈕后,系
統又會回到規則通道組繼續檢測室外溫度。從系統設計上,測量并顯示室內溫度的過程中斷
了測量并顯示室外溫度的過程,但程序設計上可以在初始化階段分別設置好不同的轉換組,
系統運行中不必再變更循環轉換的配置,從而達到兩個任務互不干擾和快速切換的結果。可
以設想一下,如果沒有規則組和注入組的劃分,當你按下按鈕后,需要從新配置 AD 循環掃
描的通道,然后在釋放按鈕后需再次配置 AD 循環掃描的通道。
上面的例子因為速度較慢,不能完全體現這樣區分(規則通道組和注入通道組)的好處,
但在工業應用領域中有很多檢測和監視探頭需要較快地處理,這樣對 AD 轉換的分組將簡化
事件處理的程序并提高事件處理的速度。
STM32 其 ADC 的規則通道組最多包含 16 個轉換,而注入通道組最多包含 4 個通道。
關于這兩個通道組的詳細介紹,請參考《STM32 參考手冊的》第 155 頁,第 11 章。 STM32
的 ADC 可以進行很多種不同的轉換模式,這些模式在《STM32 參考手冊》的第 11 章也都
有詳細介紹,我們這里就不在一一列舉了。我們本章僅介紹如何使用規則通道的單次轉換模
式。
STM32 的 ADC 在單次轉換模式下,只執行一次轉換,該模式可以通過 ADC_CR2 寄存器
的 ADON 位(只適用于規則通道)啟動,也可以通過外部觸發啟動(適用于規則通道和注入
通道),這是 CONT 位為 0。以規則通道為例,一旦所選擇的通道轉換完成,轉換結果將被
存在 ADC_DR 寄存器中, EOC(轉換結束)標志將被置位, 如果設置了 EOCIE,則會產生中
斷。然后 ADC 將停止,直到下次啟動。
|