在STM32芯片的ADC應用中,我們往往會利用定時器來觸發ADC的啟動轉換,而能夠觸發ADC轉換的定時器事件往往有多個,有時我們可能很關注這些定時器事件在觸發ADC時有哪些時序上的差別。下面以STM32G4芯片為例,來大致聊聊該話題。
這里選擇TIM1來觸發ADC。我們從手冊或CubeMx配置界面不難看到可用來觸發ADC的定時器事件可以是定時器TRGO信號和通道CC事件/信號,而TRGO可能來自定時器的使能動作、定時器的更新事件、通道輸出比較事件、通道比較輸出參考信號以及編碼時鐘。
這里先重點就Update事件、通道OCx信號和OCxREF信號作為TRGO來觸發ADC,看看相應的觸發時間點在哪里。
另外,作為ADC的外部觸發事件還有個觸發極性選擇的配置。這點我們可用從CubeMx配置界面直觀看到,如下圖所示,可以選擇上沿觸發、下沿觸發或雙沿觸發。
我這里將TIM1配置為向上計數模式,基于PWM1模式,極性選擇為0的條件下,讓CH1輸出PWM信號,以便觀察不同定時器事件及配置對ADC觸發時序的影響。
1、當選擇Update Event做為TIM1的TRGO,同時TRGO作為ADC的外部觸發事件時,不論ADC的觸發極性如何選擇,都確定在定時器發生更新事件時觸發ADC,即下圖紅色箭頭所指位置。
2、當選擇OC1做為TIM1的TRGO,同時TRGO作為ADC的外部觸發事件時,不論ADC的觸發極性如何選擇,都確定在定時器發生比較事件時觸發ADC,即上圖綠色箭頭所指位置。
3、當選擇OC1REF做為TIM1的TRGO,同時TRGO作為ADC的外部觸發事件時,此時ADC的觸發時間點還跟ADC的觸發極性選擇有關,如果選擇上升沿觸發,ADC觸發則發生在上圖中的紅色箭頭處,反之則發生在綠色箭頭處,如果選擇雙沿觸發,則上圖中紅色箭頭、綠色箭頭處都會觸發ADC轉換。
上面主要介紹的是ADC觸發信號源于定時器的TRGO,如果說ADC的觸發信號不是來自TRGO而是來自開篇提到的通道CC事件呢。定時器CC事件包括IC事件【input Capture】和OC事件【output compare】。這里IC事件是不能作為ADC觸發源的,那我們看看OC事件作為ADC的觸發源的情況,即像下面的配置。
經驗證測試,這里選擇OC1作為ADC觸發源時的情形跟前面選擇OC1ref作為TRGO去觸發ADC的情形是一樣的,具體觸發點跟ADC配置的觸發極性選擇有關,即上面的第三種情形。
看到這里,有人或許會問,既然這兩組情形的結果是一樣的,為什么配置里面不拿掉一項呢?不過,我們要知道,OCx與OCxref可能一樣也可能不一樣,具體取決于OC輸出時的極性配置。上面我們測得兩組情形是一樣,剛好是因為OCx與OCxref完全同相,如果調整極性選擇,觸發時間點就會不一樣了,結果就會剛好反過來。畢竟實際應用是千變萬化的,說不定哪里就能派上用場。
誠然,STM32系列眾多,相應技術手冊內容豐富而龐大,細節也多,個別細節可能描述未必很詳盡,此時我們實際驗證下或許更清晰。OK,關于定時器觸發ADC的時序話題就聊到這里。時間真快,祝福2021!一起加油!
原文標題:STM32定時器觸發ADC的時序話題
文章出處:【微信公眾號:ST MCU 信息交流】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
adc
+關注
關注
98文章
6501瀏覽量
544741 -
STM32
+關注
關注
2270文章
10901瀏覽量
356195 -
定時器
+關注
關注
23文章
3250瀏覽量
114865
原文標題:STM32定時器觸發ADC的時序話題
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論