我們在做ADC應(yīng)用時,有些場合需要精確測量出待測信號的數(shù)據(jù),有時可能并不關(guān)心ADC結(jié)果多準確,只要滿足某個范圍即可,這時我們就可以考慮使用STM32ADC看門狗功能了。
STM32 ADC基本上都支持模擬看門狗功能,即ADC模塊對被檢測的模擬通道的轉(zhuǎn)換結(jié)果基于硬件對其合法性、安全性進行監(jiān)測。我們可以設(shè)置被監(jiān)測通道的轉(zhuǎn)換結(jié)果合法性檢查的上下閾值,若結(jié)果處于閾值之外則視為異常,并可以觸發(fā)中斷。
尤其有些場合,我們可能使用到數(shù)個ADC通道,8個、10個甚至更多,同時程序還需要基于各通道的轉(zhuǎn)換結(jié)果進行合法性或安全性監(jiān)測,此時使用ADC模擬看門狗功能就很方便。我們可以先讓模擬看門狗做第一步把關(guān),只有出現(xiàn)異常數(shù)據(jù)時才去進一步檢查確認。不然的話,每次一批數(shù)據(jù)出來后,我們得逐個去檢查合法性。一般來講,多數(shù)情況下異常可能只是偶爾、個別通道發(fā)生,這樣每次轉(zhuǎn)換完成后總是不分青紅皂白地去逐一檢查、確認,顯然有點浪費時間,啰嗦無益,這也會影響系統(tǒng)性能。
我這里使用STM32L4開發(fā)板,簡單演示下實現(xiàn)過程,供有需要的人士參考。
這里只開啟ADC1模塊的8個規(guī)則通道,使用DMA傳送轉(zhuǎn)換結(jié)果,并設(shè)置模擬看門狗。使用CubeMx圖形化配置工具進行工程配置。
我只啟用了模擬看門狗1,針對8個規(guī)則通道的轉(zhuǎn)換結(jié)果進行實時監(jiān)測。【當然你可以有其它更為靈活的設(shè)計。各個STM32系列這個地方不完全一樣。】
開啟ADC模擬看門狗的中斷。
代碼里設(shè)置一個記錄ADC結(jié)果異常的標志Flag_ADC_Abnormal,若發(fā)生結(jié)果異常會在ADC中斷對該標志變量賦非0值。
在主循環(huán)里若發(fā)現(xiàn)異常標志非0,然后去進一步做所有ADC結(jié)果的確認。
上面演示過程中監(jiān)測到一個異常數(shù)據(jù),觸發(fā)了模擬看門狗中斷,ADC結(jié)果異常標志被賦0xff值,會做進一步異常數(shù)據(jù)的確認。
我在上面采用的一個模擬看門狗對8個通道的結(jié)果進行監(jiān)測,如果一輪掃描轉(zhuǎn)換下來出現(xiàn)多個異常數(shù)據(jù),會觸發(fā)幾次中斷呢?
不妨基于同一開發(fā)板驗證下。我加個ADC中斷次數(shù)累計變量ADC_Res_CNT,并把閾值下限調(diào)整為1200,其它不動。【見下圖】
然后進行測試,得到下面結(jié)果。
從結(jié)果看,除了2個數(shù)據(jù)正常外其它均異常,故一輪轉(zhuǎn)換下來發(fā)生了6次中斷,顯然我們可以根據(jù)中斷次數(shù)進一步判斷一輪轉(zhuǎn)換下來的異常通道數(shù)。【注:這里ADC配置為單次掃描模式,DMA配置為Normal模式。】
-
mcu
+關(guān)注
關(guān)注
146文章
17869瀏覽量
361082 -
adc
+關(guān)注
關(guān)注
99文章
6649瀏覽量
548375 -
STM32
+關(guān)注
關(guān)注
2290文章
11018瀏覽量
362672
發(fā)布評論請先 登錄
STM32中的獨立看門狗和窗口看門狗是什么

stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么
STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

STM32的看門狗配置詳情解說

stm32看門狗復位技巧編輯

基于STM32、FreeRTOS 實現(xiàn)硬件看門狗+軟件看門狗監(jiān)測多任務(wù)的方法
STM32芯片如何使用片內(nèi)參考電壓實現(xiàn)模擬看門狗

STM32 ADC模擬看門狗及其應(yīng)用

STM32中的獨立看門狗和窗口看門狗
STM32中的獨立看門狗和窗口看門狗

STM32 ADC模擬看門狗應(yīng)用演示過程

STM32 ADC模擬看門狗過程實現(xiàn)

評論