1.引言 在 STM32 MCU 中,ADC 有多種啟動觸發方式,本文對各種觸發源的原理進行介紹,方便大家以後如何選擇合適的觸發源。 2. ADC 的架構與觸發源 以 STM32G474 為例,ADC 模塊的架構框圖如下,基於逐次逼近原理(SAR)完成模擬量到數字量的轉換。前端通過多通道選擇開關(input selection)來對轉換通道進行切換,從而實現對多個輸入通道的信號進行採樣。 ADC 模塊的信道可以工作在規則模式或是注入模式下,對應的觸發源分別為規則觸發源與註入觸發源。所有規則通道共享一個 ADC 結果寄存器,一個通道轉換完成後需要及時讀取轉換結果,否則轉換結果可能會被覆蓋,具體取決於 overrun 的相關設置。 ![]() 2.1. 各類觸發源工作方式 ADC 的觸發源整體上可以分為兩類:軟件觸發與硬件觸發。如下面兩個表所示,EXTEN[1 :0]與 JEXTEN[1 :0]分別用於設定規則信道和注入信道的觸發方式,當其值為 0 時,觸發 方式為軟件觸發,否則為硬件觸發。 ![]() 如果選擇軟件觸發,那麼當 ADSTART 或 JADSTART 被置位時,ADC 會立即啟動轉換。如果選擇硬件觸發,那麼當 ADSTART 或 JADSTART 被置位後,要等待指定的外部事件發生時,ADC 才會啟動轉換。 對於硬件觸發即外部事件觸發來說,有多達 32 種外部事件可以選擇,這些觸發源大致可以分為以下四類,具體可以參考 RM 中關於adc_ext_trgx 和 adc_jext_trgx 的描述。 • 定時器的比較/捕獲事件 • 定時器的觸發輸出 TRGO/TRGO2 • 高精度定時器的 ADC 觸發 • 外部輸入管腳 一個 ADC 單元可以選擇多個硬件觸發源,多個硬件觸發源之間為“OR”的關係,即任何一個被選定的外部事件發生都可以觸發 ADC 啟動轉換。 下面對幾類觸發源的工作方式進行介紹。 2.1.1. 定時器的比較/捕獲事件 選用定時器的比較/捕獲事件來觸發 ADC 時,比如 TIM1_CC1,首先需要說明是雖從文檔的描述來看比較事件與捕獲事件都可以用來觸發 ADC,但是實際中捕獲事件是不能用來觸發 ADC 的,只能使用比較事件,且需要結合觸發源的上升沿與下降沿(見上表中的說明)的設置來設置TIM_CC1 的電平在比較事件點動作方式。比如設置通道電平在比較事件點由低電平變為高電平,即上升沿,那麼在 ADC 觸發源的沿選擇上也需要選擇上升沿,這樣才能保證在正確的位置觸發ADC 啟動轉換。 2.1.2. 定時器的觸發輸出 TRGO/TRGO2 TRGO 或是 TRGO2 來自於定時器的觸發輸出,可以選擇的觸發方式也比較多,如下 TRGO2 的選擇項: ![]() 定時器的 Reset 事件、Enable 事件、Update 事件以及和 Compare 相關的事件都可以用來做TRGO2。這里以 TRGO2 為例對相關的事件進行簡單說明。 • Reset/Enable/Update :定時器 Reset/Enable/Update 事件作為 TRGO2 輸出,並觸發ADC 轉換,選擇這幾個事件時,可以忽略 ADC 觸發源的沿方式的選擇。 • Compare pulse:通道的捕獲事件或是比較事件作為 TRGO2 輸出,觸發 ADC 轉換,在up-down counting(Center-aligned mode)模式下,可以通過設定 CMS 位的值來確定比較事件是發生在向上計數階段還是向下計數階段,或是向上/向下都產生,此種方式下可以忽略ADC 觸發源的沿方式的選擇。 • Compare - tim_ocxrefc :定時器通道輸出信號作為 TRGO2 輸出,觸發 ADC 轉換,此種方式下,需要結合信道輸出波形參考的沿與 ADC 觸發源的沿方式來確定最終的 ADC 觸發點。 • Compare Pulse - tim_ocxrefc:定時器通道輸出波形參考指定的沿作為 TRGO2 輸出,觸發 ADC 轉化,此種方式下可以忽略 ADC 觸發源的沿方式的選擇。 2.1.3. 高精度定時器的 ADC 觸發 在高精度定時器中,包含了 10 個 ADC 觸發輸出,ADC Trigger 1 ~10,每個觸發輸出可以有多達 32 個觸發事件可以選擇。對於 ADC Trigger 1~4,可以同時選擇多個觸發事件(最多 32),多個觸發事件之間為“OR”的關係,其中任意一個事件發生,都將產生 ADC 觸發輸出;對於 ADC Trigger 5~10,則只能選擇其 32 個觸發事件中的一個來產生觸發輸出。 另外,可以對高精度定時器中的 ADC 觸發輸出進行分頻。高精度定時器的頻率可以上 G,但是很多情況下 ADC 的採樣速率並不需要那麼高,通過對 ADC 觸發輸出進行分頻可以降低 ADC 的採樣速率,實現多個定時器週期才觸發一次 ADC 採樣。 選擇高精度定時器的 ADC 觸發方式時,可以忽略 ADC 觸發源的沿方式的選擇。 ![]() 2.1.4. 外部輸入管腳(EXIT LINE) 當選擇的 EXIT LINE 對應的管腳電平出現上升沿或是下降沿時觸發 ADC 轉換,通過這種方式將 ADC 觸發信號與 MCU 外部的信號關聯起來,靈活的控制 ADC 轉換。 該方式下需要對 ADC 觸發源的沿方式的選擇,以確定具體的觸發時刻是發生在信號的上升沿或是下降沿。 小結 這裡對 ADC 的架構進行了簡單的介紹,重點說明了 ADC 的各種觸發源和工作原理以及在實際選擇中需要注意的事項。 |