?

基于STM32F407的高速峰值檢測方法

2021-08-21 09:46魏烈祥汪天照張晶廖輝秦家寶
電子制作 2021年14期
關鍵詞:隊列中斷閾值

魏烈祥,汪天照,張晶,廖輝,秦家寶

(湖北方圓環??萍加邢薰?,湖北武漢,430074)

模擬信號峰值檢測在儀器儀表和工業檢測中應用非常普遍,如放射性粒子檢測、光譜分析和機械受損峰值壓力等。常規方法采用高速AD+FPGA實現,技術要求高、價格比較昂貴。為此介紹一種基于STM32F407的低成本高速模擬信號峰值檢測方法,通過三重ADC交替采樣,利用DMA將實時采樣數據傳送到環形隊列存放;動態設置STM32F407內置模擬看門狗上下限閾值;截取有效峰值信號并進行濾波和尋峰處理。通過此方法,AD采樣率高達8.4MHz, 可以實時高速采樣有效的模擬峰值信號,實現模擬信號的峰值檢測。

1 基本原理

傳感器輸出的模擬信號經過前置放大、S–K濾波、高斯成形和調理,送入STM32F407內部A/D通道進行采樣、濾波和尋峰處理,如圖1所示。

圖1 電路框圖

STM32F407是ST(意法半導體)基于ARMCortex?–M4為內核的高性能微控制器,所使用的ART技術使得程序零等待執行,程序執行的效率非常高。集成了單周期DSP指令和FPU(floating point unit,浮點單元),提升了計算能力,可以進行一些復雜的計算和控制。

STM32F407自帶多通道、三路ADC控制器,每路ADC具有DMA功能,ADC轉換精度為12位,其中三路ADC控制器可以實現對同一通道的信號進行交替采樣,實現對一個模擬通道信號的高速數據采集。每路ADC最大的采樣率達到了2.8M,三路ADC在規則組模式下交替采樣最快可以達到8.4M的采樣率。模擬看門狗可以實時監控ADC通道模擬信號是否在設定的上下限閾值范圍內[1]。

■1.1 多重ADC工作原理

在規則組模式下,三重交替ADC工作原理如圖2所示。三路ADC:ADC1、ADC2和ADC3在規則組模式下交替轉換,每一路ADC最小采樣時間(Sampling time)為3個ADC時鐘周期,AD轉換時間(Conversion time )最小12個ADC時鐘周期。兩路ADC之間最小間隔(Delay between sampling start of 2 ADC)5個ADC時鐘周期。采用STM32F407三重ADC交替采樣技術對同一模擬通道數據采集只需要5個ADC時鐘周期,最快采樣時間不到120ns,最高采樣率可達8.4MHz。

圖2 三重交替ADC原理框圖

■1.2 模擬看門狗閾值設置

STM32F407內模擬看門狗可以通過設置上下限閾值,HTR寄存器設置上限閾值,LTR寄存器設置下限閾值,實時監控ADC模擬輸入信號的幅度是否異常。

模擬看門狗實時監控模擬輸入信號,當模擬信號高于上限閾值HTR 或小于下限閾值LTR 時,會引發模擬看門狗中斷。

本方法的基本思路是:STM32F407的ADC工作在三重ADC交替工作模式,三路ADC對同一通道模擬信號連續、實時采樣,ADC轉換后的數據通過DMA方式存儲到環形存儲隊列AdBuあer中。模擬看門狗實時監控該通道的模擬信號,通過動態設置上下限閾值,在環形隊列AdBuあer中提取上升沿(信號大于Vthreshold),下降沿(信號小于Vmin)信號波峰區域的數據序列,如圖3所示。剔除波峰寬度過大和過小的波峰信號(即t1–t0過大或過?。?,對有效模擬信號波峰數據(t0到t1之間AD轉換數據)尋峰處理求出tp時刻峰值Vpp的數據并保存[2]。

圖3 模擬信號峰值波形圖

2 軟件設計

本方法軟件主要包括ADC和DMA初始化、模擬看門狗中斷程序和尋峰程序。

圖4 DMA存儲環形隊列AdBuffer

■2.1 初始化程序

設置ADC采用DMA的通道,數據從三重模式的 ADC通用規則數據寄存器(ADC–>CDR)傳輸到內存(環形隊列AdBuあer)。每次傳輸的大小為半字(16位),用于存放12位AD轉換數據,內存大小為M個半字。使用DMA循環傳輸模式[3]。

模擬輸入信號接入到三路ADC的模擬通道,每路ADC連續對模擬通道采樣轉換,轉換結束立即啟動DMA,將轉換結果數據傳輸到環形隊列AdBuあer保存。三重ADC交替采樣,在時間上采樣順序為ADC1、ADC2、ADC3、ADC1…。模擬看門狗實時監控三路ADC模擬通道的信號,設置上下限閾值,啟動模擬看門狗中斷[4]。

下面是部分初始化程序:

■2.2 模擬看門狗中斷、濾波及尋峰程序

模擬看門狗中斷程序功能是檢測模擬信號波峰的上升沿和下降沿,在下降沿時對有效模擬信號的波峰數據脈寬濾波及尋峰處理。如圖5所示,模擬看門狗實時監控模擬信號,在檢測模擬信號波峰的上升沿時,將模擬看門狗的上限閾值設為Vthreshold,下限閾值設為0,當模擬信號大于Vthreshold時會產生模擬看門狗中斷,表示收到模擬信號的上升沿信號,處理上升沿程序;在檢測模擬信號波峰的下降沿時,將模擬看門狗的上限閾值設為滿刻度,下降沿設為Vmin,當模擬信號小于Vmin(即下降沿)時會產生模擬看門狗中斷,表示收到模擬信號的下降沿信號,處理下降沿程序[5]。

具體流程:進入模擬看門狗中斷程序后,首先判斷當前中斷是上升沿中斷還是下降沿中斷。如圖3、圖4所示,如果是上升沿中斷,保存該時刻(t0時刻)的DMA計數器NDTR在環形隊列中的位置Addr0,并且重新設置模擬看門狗的閾值為檢測下降沿的閾值,表示已監測到脈沖信號的上升沿,下次需要監測脈沖信號的下降沿,退出模擬看門狗中斷;如果是下降沿中斷,表示已監測到脈沖信號的下降沿,開始對監測到的脈沖上升沿至下降沿之間的波形數據進行脈寬濾波、最大值尋峰處理。具體過程:記下此時刻(t1時刻)的DMA計數器NDTR在環形隊列中的位置Addr1,將環形隊列AdBuあer中上升沿的位置Addr0和下降沿的位置Addr1中的采樣數據AdBuあer[Addr0]~ AdBuあer[Addr1]復制到緩沖區WaveBuあer中,由于ADC工作在三重ADC交替DMA工作模式,對信號的采樣是連續、實時采樣的,每個采樣數據的AD轉換時間都是一樣的,因此可以通過波形上升沿t0時刻在循環隊列的采樣數據AdBuあer[Addr0]和下降沿t1時刻在循環隊列的采樣數據AdBuあer[Addr1]之間在循環隊列AdBuあer中一共采樣了多少個數據乘以ADC轉換時間來計算上升沿和下降沿之間的時間間隔,即檢測到的信號波峰脈寬t,比較t與有效信號的脈寬時間范圍,當t不在有效信號的脈寬時間范圍內時,信號為干擾信號,過濾掉脈寬過寬或過窄的信號,退出中斷程序,不作尋峰處理;否則在緩沖區WaveBuあer的數據中尋找最大值,也就是尋峰處理,尋出的最大值即為峰值數據(tp時刻波峰Vpp的采樣數據)。此時信號檢測完畢,需要監測下一個脈沖信號,重新設置模擬看門狗的閾值為檢測上升沿的閾值,退出模擬看門狗中斷。圖6和圖7是模擬看門狗中斷服務程序流程圖和尋峰處理流程圖。

圖6

圖7

3 結束語

本文利用STM32F407微控制器芯片的特點,采用其帶有規則組交替轉換的三路ADC對模擬信號采樣,將ADC采樣率提高了兩倍,利用DMA技術,實時保存采樣數據,同時結合模擬看門狗對模擬信號的實時監控,巧妙的提取信號的上升沿和下降沿,截取峰數據序列,實現模擬信號的峰值檢測,摒棄了傳統的脈沖幅度甄別電路、閾值調節電路和脈沖峰值保持電路,使得信號調理電路簡單、信噪比提高、抗干擾性能好、脈沖計數通過率高。

本方法已成功運用在公司的放射性檢測儀器設備產品中。

猜你喜歡
隊列中斷閾值
非平穩聲信號下的小波變換去噪方法研究
基于改進閾值的MRI圖像降噪
土石壩壩體失穩破壞降水閾值的確定方法
TMS320F28335外部中斷分析與研究
一種改進小波閾值去噪法及其仿真
基于車車通訊的隊列自動跟馳橫向耦合模型
隊列隊形體育教案
雪后林鳥
跟蹤導練(二)(5)
青春的頭屑
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合