STM32的每個ADC模塊通過內部的模擬多路開關,可以切換到不同的輸入通道并進行轉換。STM32特別地加入了多種成組轉換的模式,可以由程序設置好之后,對多個模擬通道自動地進行逐個地采樣轉換。
有2種劃分轉換組的方式:規(guī)則通道組和注入通道組。通常規(guī)則通道組中可以安排最多16個通道,而注入通道組可以安排最多4個通道。
在執(zhí)行規(guī)則通道組掃描轉換時,如有例外處理則可啟用注入通道組的轉換。
一個不太恰當的比喻是:規(guī)則通道組的轉換好比是程序的正常執(zhí)行,而注入通道組的轉換則好比是程序正常執(zhí)行之外的一個中斷處理程序。
再舉一個不一定使用的例子:
假如你在家里的院子內放了5個溫度探頭,室內放了3個溫度探頭;你需要時刻監(jiān)視室外溫度即可,但偶爾你想看看室內的溫度;因此你可以使用規(guī)則通道組 循環(huán)掃描室外的5個探頭并顯示AD轉換結果,當你想看室內溫度時,通過一個按鈕啟動注入轉換組(3個室內探頭)并暫時顯示室內溫度,當你放開這個按鈕后, 系統又會回到規(guī)則通道組繼續(xù)檢測室外溫度。
從系統設計上,測量并顯示室內溫度的過程中斷了測量并顯示室外溫度的過程,但程序設計上可以在初始化階段分別設置好不同的轉換組,系統運行中不必再 變更循環(huán)轉換的配置,從而達到兩個任務互不干擾和快速切換的結果??梢栽O想一下,如果沒有規(guī)則組和注入組的劃分,當你按下按鈕后,需要從新配置AD循環(huán)掃 描的通道,然后在施放按鈕后需再次配置AD循環(huán)掃描的通道。
——————————————
上面的例子因為速度較慢,不能完全體現這樣區(qū)分(規(guī)則組和注入組)的好處,但在工業(yè)應用領域中有很多檢測和監(jiān)視探頭需要較快地處理,這樣對AD轉換的分組將簡化事件處理的程序并提高事件處理的速度。
規(guī)則組由多達16個轉換組成。規(guī)則通道和它們的轉換順序在ADC_SQRx寄存器中選擇。
規(guī)則組中轉換的總數寫入ADC_SQR1寄存器的L[3:0]位中。
注入組由多達4個轉換組成。注入通道和它們的轉換順序在ADC_JSQR寄存器中選擇。
注入組里的轉換總數目寫入ADC_JSQR寄存器的L[1:0]位中?
如果規(guī)則轉換已經在運行,為了在注入轉換后確保同步,所有的ADC(主和從)的規(guī)則轉換被停止,并在注入轉換結束時同步恢復,見圖示。
規(guī)則轉換和注入轉換均有外部觸發(fā)選項,
規(guī)則通道還有一個需注意的是:
規(guī)則通道序列長度(ADC_SQR1???L)的設置值,是規(guī)則通道序列轉換總數數-1,DMA 設置則是規(guī)則序列轉換總數
注入通道序列長度(ADC_JSQR???JL)的設置值,是注入通道序列轉換總數數-1
注入組相當于“中斷”,規(guī)則組相當于正常執(zhí)行的“程序”。轉換期間有DMA請求產生,而注入轉換則無DMA請求,需要用查詢或中斷的方式保存轉換的數據。