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