我們在做ADC應用時,有些場合需要精確測量出待測信號的數(shù)據(jù),有時可能并不關心ADC結果多準確,只要滿足某個范圍即可,這時我們就可以考慮使用STM32ADC看門狗功能了。
STM32 ADC基本上都支持模擬看門狗功能,即ADC模塊對被檢測的模擬通道的轉換結果基于硬件對其合法性、安全性進行監(jiān)測。我們可以設置被監(jiān)測通道的轉換結果合法性檢查的上下閾值,若結果處于閾值之外則視為異常,并可以觸發(fā)中斷。
尤其有些場合,我們可能使用到數(shù)個ADC通道,8個、10個甚至更多,同時程序還需要基于各通道的轉換結果進行合法性或安全性監(jiān)測,此時使用ADC模擬看門狗功能就很方便。我們可以先讓模擬看門狗做第一步把關,只有出現(xiàn)異常數(shù)據(jù)時才去進一步檢查確認。不然的話,每次一批數(shù)據(jù)出來后,我們得逐個去檢查合法性。
一般來講,多數(shù)情況下異??赡苤皇桥紶?、個別通道發(fā)生,這樣每次轉換完成后總是不分青紅皂白地去逐一檢查、確認,顯然有點浪費時間,啰嗦無益,這也會影響系統(tǒng)性能。
我這里使用STM32L4開發(fā)板,簡單演示下實現(xiàn)過程,供有需要的人士參考。
這里只開啟ADC1模塊的8個規(guī)則通道,使用DMA傳送轉換結果,并設置模擬看門狗。使用CubeMx圖形化配置工具進行工程配置。
我只啟用了模擬看門狗1,針對8個規(guī)則通道的轉換結果進行實時監(jiān)測。
【當然你可以有其它更為靈活的設計。各個STM32系列這個地方不完全一樣?!?/p>
開啟ADC模擬看門狗的中斷。
代碼里設置一個記錄ADC結果異常的標志Flag_ADC_Abnormal,若發(fā)生結果異常會在ADC中斷對該標志變量賦非0值。
在主循環(huán)里若發(fā)現(xiàn)異常標志非0,然后去進一步做所有ADC結果的確認。
上面演示過程中監(jiān)測到一個異常數(shù)據(jù),觸發(fā)了模擬看門狗中斷,ADC結果異常標志被賦0xff值,會做進一步異常數(shù)據(jù)的確認。
我在上面采樣的一個模擬看門狗對8個通道的結果進行監(jiān)測,如果一輪掃描轉換下來出現(xiàn)多個異常數(shù)據(jù),會觸發(fā)幾次中斷呢?
不妨基于同一開發(fā)板驗證下。我加個ADC中斷次數(shù)累計變量ADC_Res_CNT,并把閾值下限調(diào)整為1200,其它不動?!疽娤聢D】
然后進行測試,得到下面結果。
從結果看,除了2個數(shù)據(jù)正常外其它均異常,故一輪轉換下來發(fā)生了6次中斷,顯然我們可以根據(jù)中斷次數(shù)進一步判斷一輪轉換下來的異常通道數(shù)。
【注:這里ADC配置為單次掃描模式,DMA配置為Normal模式?!?/p>
審核編輯:劉清
-
看門狗
+關注
關注
10文章
557瀏覽量
70673 -
STM32
+關注
關注
2263文章
10849瀏覽量
353826 -
dma
+關注
關注
3文章
555瀏覽量
100235 -
模擬器
+關注
關注
2文章
862瀏覽量
43088 -
ADC采樣
+關注
關注
0文章
134瀏覽量
12808
原文標題:STM32 ADC模擬看門狗應用演示
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論