關于STM32的ADC的一些重要特點需要記住:
1)STM32F103系列至少有2個ADC,這些ADC可以獨立使用,也可以使用雙重模式(提高采樣率);
2)STM32的ADC是12位逐次逼近型的模數轉換器,一共有18個通道,可以測量16個外部信号和2個内部信号源;
3)每個通道的ADC可以在單次、連續、掃描或者間斷模式下進行;
4)前面講過STM32的ADC是12位的,結果存儲在16位的資料寄存器中,有4位用不到,是以ADC存在左對齊或右對齊的方式;
5)模拟看門狗允許應用程式檢測輸入電壓是否超出使用者定義的高低門檻值;
6)STM32的ADC最大的轉換速率為1MHz,也就是說最快轉換時間為1us,為了保證ADC轉換結果的準确性,ADC的時鐘最好不超過14M。
規則組和注入組
STM32參考手冊裡ADC的框圖很大,我把它分開來總結(不然放不下),研究内部結構之後感覺STM32的ADC還是挺強大的;
剛接觸ADC時首先讓人不好了解的地方是“注入組”“規則組”,我也從框圖裡把這部分截出來了,這部分的解釋網上有很多,大部分都引用了那個測量溫度的例子,大概意思就是有一些溫度是我們要長期采集的(就用規則組),偶爾也要臨時測量一些其他溫度(就用注入組)。STM32的ADC分為這兩個組也是考慮到現實應用的需求,有一些是常用采集,有一些是特殊采集。
接下來看看輸入端口,有16路外部信号端口接在GPIO端口上,還有兩路是内部信号(晶片内部自帶的溫度傳感器和參考電平)。信号源都會進入一個多路選擇開關(與之前整理的ADC原理正好對應),進而選擇進入後面的通道。
ADC的模拟看門狗
STM32的ADC中增加了模拟看門狗主要是出于對安全性的考慮,看門狗可以監測輸入信号的電壓,我們可以設定最高和最低電壓門檻值,如果輸入的信号電壓超出了門檻值就會産生中斷。有些突發狀況下,電壓會突然下降,這時看門狗能夠迅速的作出反應産生中斷,便于CPU及時處理(儲存資料或者報警等)。看門狗的監測是不經過ADC,反應速度就要快得多。
ADC的觸發
STM32的ADC的觸發可以是外部觸發(例如按鍵或者其他控制信号之類),也可以是内部觸發(定時器觸發)
ADC的轉換模式
1 單次轉換模式:ADC隻執行一次轉換;
2 連續轉換模式:轉換結束之後馬上開始新的轉換;
3 掃描模式:ADC掃描被規則通道和注入通道選中的所有通道,在每個組的每個通道上執行單次轉換。在每個轉換結束時,這一組的下一個通道被自動轉換。如果設定了CONT位(開啟了連續轉換模式),轉換不會在選擇組的最後一個通道上停止,而是再次從選擇組的第一個通道繼續轉換。
4 間斷模式:由觸發信号啟動新一輪的轉換,直到轉換完成為止