基于 STM32 DMA 方式的高频正弦波 A/D 采样设计

(整期优先)网络出版时间:2020-08-18
/ 2

基于 STM32 DMA 方式的高频正弦波 A/D 采样设计

石林羚

中国船舶集团公司第七一 O 研究所,湖北 宜昌 443003

摘要:为了提升某检测设备的调试效率,代替原来外接示波器人为判定和读数的方法,设计了一种基于STM32微处理器为控制核心,采用其A/D结合 DMA的高速采样信号幅值,增加去干扰滤波算法将高频正弦波信号采集、处理、自动判定并显示在液晶屏上。实际测试表明,该系统信号采集精度高,采样实时性强,具有操作简单、可视化强、判读误差降低等特点。可靠运用于某检测设备的信号采集。

关键词:STM32;A/D采样;DMA传输;高频正弦波

0 引言

为提高检测设备采集和处理高频正弦信号的可靠性和检测效率,本文提出了利用STM32微处理器,配置3.2MHz采样率的ADC采集被测信号幅值,结合DMA方式实现采样数据的高速传输。该检测设备可采集幅值0~5V,频率达到30KHz的正弦信号。结合去干扰滤波处理的信号幅值显示在LCD界面。

基于以上要求,本文研究的主要内容是基于STM32的DMA采样的数据采集处理系统。包括下位机软件和硬件的设计。

1 系统硬件主要模块设计

    1. 系统硬件组成框图

    2. 系统的硬件部分主要由主控模块、采集模块和LCD显示模块组成。硬件的组成框图如图1所示。

5f3b4ff16a7f4_html_3e647c4e496d5411.gif

LCD

人机交互界面

5f3b4ff16a7f4_html_4b579173ade93b9c.gif

主控模块

STM32L476VGT6

5f3b4ff16a7f4_html_e3bdbad28a1a8a18.gif

A/D采集

信号处理电路

5f3b4ff16a7f4_html_bf1e2cae5a6afc11.gif

输入正弦信号

1 系统硬件总体结构图

1.2.1主控模块

采用STM32L476微处理器,是超低功耗STM32 L4系列 - ARM® CORTEX®-M4 ULTRA-LOW-POWER MCUs为核心的控制器,工作频率可达72M 。MCU的12位A/D是一种逐次逼近型模数转换器,保证采样精度的情况下最大采样速率可达14MSa/s(sample/second:每s取样点数)。集成了2个DMA控制器,共有12个通道,可高速传输至内存,提升采样处理速度。

1.2.2信号处理模块

由于所采集的信号为50-100mV的小信号,设计放大电路对信号进行放大后输入至CPU的AD管脚进行采样。如图2所示:

5f3b4ff16a7f4_html_aa3e14b75e6ac13f.gif

2 信号处理原理图

1.2.3分辨率和采样周期

分辨率是指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2的比值,通常以数字信号的位数来表示。此款检测设备所选用的STM32L476VGT6集成12位A/D转换器。选用2.5V的基准电压,212=4096,对应的最小模拟量的值是0.6mV,满足我们5%的采样精度。

ADC转换旧是输入模拟的信号量转换成数字量,读取数字量必须等转换完成后,完成一个通道的读取脚采样周期。

TCONV(转换时间)=采样时间+12.5个周期(Cyles)

我们设置采样时间为2.5Cyles,那么转换时间为15Cyles。ADC最大采样速率可达14M,由此算得采样周期为:

采样周期=14/15=0.96µs

我们采样信号最大30MHz,对应一个周期33.3µs,即一个周期内可以采样34个点,满足需求。

1.2.4 DMA传输

因为该设备采集的正弦波形需要大量数据才能最大还原原始波形的变化,故选用STM32的DMA(Direct memory access)模块实现批量采集。

DMA为直接存储器访问,在外设与存储器之间,或者存储器与存储器之间,提供高速数据传输的一种方式,无需CPU参与,也没有中断处理等过程,通过硬件方式为RAM与I/O设备提供一条直接传送的数据通道。

针对我们的需求,我们通过DMA将采集的正弦波幅值传输至定义好的内存数组Receive_Buff[4000]中,完成4000个数据的传输。再对采集到的数据进行处理。

1.2.5干扰滤波算法

由于检测系统内部的各种干扰,以及PCB走线和电磁干扰的因素,测试得到的数据会出现类似脉冲干扰的数据跳变以及和上下波动的干扰,这种数据的不稳定性会影响测试结果的精确性。

为了剔除脉冲干扰和抑制波动干扰,一般会采取各种软件滤波算法,比如限幅滤波法、中位值滤波法、算术平均滤波法和滑动平均滤波法。以上各种算法各自的优点和缺点,但是对于本文采样的信号并不能完全有效的去除干扰。

基于以上分析,我们采用了改进版的中位值平均滤波法。采集一组N长度的数组,去掉数组中的最大10个值和最小10个值后,计算N-20个数据的算术平均值。既可以剔除偶然出现的脉冲干扰,也可平滑数据。

2 系统软件主要模块设计

该检测设备的系统软件采用C语言编程,使用具有友好交互界面的Keil 编译器进行编译。该软件将采集到的正弦信号的幅值进行处理后,计算出相邻波峰与波谷之间的幅值差,得到单个波形的峰峰值,再根据滤波算法计算出有效的平均值送LCD显示。

软件流程图如下图3:

5f3b4ff16a7f4_html_b2bb5c050508cbb9.gif

3 主控软件流程图

3.测试结果

我们根据被测信号的情况,我们用信号源输出了频率为30KHz的正弦信号。分别输出四组电压,峰峰值VPP为50mv、100mv、150mv和200mv。测试结果如下表1:

信号源输出:VPPin(mV)

50mv

100mv

150mv

200mv

设备测试结果:VPP(mV)

49

51

152

203

误差(mV)

1

1

2

3

由表1可得,该设备的高频正弦波幅值采集精度小于5%。

4.结束语

本文设计了一种基于STM32微处理器的A/D采集方法,结合DMA方式的传输技术,并在软件上进行抗干扰滤波处理。经过实践检验,能够对高频小信号的正弦波信号幅值的进行精确的测量,简化了检测方法,得到了检测人员的广泛好评。

参考文献:

[1] 马永杰,田福泽,马善林 基于STM32的数字示波器系统设计 仪表技术与传感器,2016,6(4):22-24,35

[2] 黄健,张善文,周瑞 基于STM32的A/D采样软件滤波改进算法研究 仪表技术与传感器,2016,3 (3)83-85

[3] 彭刚.基于ARM Cortex-M3的STM32系列嵌入式微控制器应用实践[M].北京:电子工业出版社,2011:93-123.

[4] 沈文斌,嵌入式硬件系统设计与开发实例详解. 北京:电子工业出版社,2005

[5] 费浙平,基于ARM的嵌入式系统程序开发要点.单片机与嵌入式系统应用,2013,11