問題描述
有客戶使用 STM32G4 系列芯片開發(fā)產(chǎn)品,用到其中一個 ADC 模塊的多個通道,他希望使用 TIMER 來定時觸發(fā)這幾個通道的轉(zhuǎn)換。不過他有兩點疑惑。第一,他期望定時器觸發(fā)這幾個通道是每觸發(fā)一次則只轉(zhuǎn)換一個通道,這樣依次觸發(fā)轉(zhuǎn)換,而不是觸發(fā)一次就把幾個通道都轉(zhuǎn)換完結(jié)。他不知這樣是否可行?第二,既然是 TIMER 每觸發(fā)一次就轉(zhuǎn)換一次,如果說某個通道正在轉(zhuǎn)換時來了觸發(fā),這個觸發(fā)事件是否會丟失?是否會導(dǎo)致最終轉(zhuǎn)換的數(shù)據(jù)混亂。
問題分析
先說他的第一問題。多個通道進行轉(zhuǎn)換,定時器每觸發(fā) 1 次則轉(zhuǎn)換 1 個通道,這是可以做到的。我們可以采用 ADC 模塊的間斷分組轉(zhuǎn)換模式,我們可以指定每次啟動 ADC 所需要轉(zhuǎn)換的通道數(shù)。比方現(xiàn)在用到 6 個 ADC 通道需要做轉(zhuǎn)換,我們可以指定每次觸發(fā)啟動時轉(zhuǎn)換 2 個通道,這樣 3 次觸發(fā)后 6 個通道即告完成 1 輪轉(zhuǎn)換。
結(jié)果驗證
我們不妨使用 STM32G474 芯片做下相關(guān)驗證,看看當 TIMER 觸發(fā)事件的速率快到一定程度時是否會出現(xiàn)觸發(fā)事件被無視、轉(zhuǎn)換結(jié)果是否混亂。這里使用片內(nèi)兩個 ADC 專用通道,一個是測試????????信號的,另一個是測試內(nèi)部??????????????信號的。這兩個信號的轉(zhuǎn)換結(jié)果相對穩(wěn)定、數(shù)據(jù)相差有明顯,便于觀察。ADC 轉(zhuǎn)換結(jié)果使用 DMA 進行傳輸。
問題拓展
既然談到 ADC 的觸發(fā)事件,我們也該知道基于外部事件對 ADC 進行觸發(fā)時,其觸發(fā)頻率也是有限制的,這點在各個芯片的 ADC 特性參數(shù)那里都有介紹。我這里做部分截圖過來,拋磚引玉。在具體應(yīng)用時我們可以 針對性地閱讀查看。
問題小結(jié)
本文著重針對客戶的疑問作了相關(guān)解釋,并做了相關(guān)驗證確認。在涉及多通道 ADC 轉(zhuǎn)換,同時又不期望一次觸發(fā)就將整個序列轉(zhuǎn)換完成時,考慮使用 ADC 的間斷分組轉(zhuǎn)換模式或許是個不錯的方案。