基于mcu的dma功能控制ad转换器峰值采样方法

文档序号:875984 发布日期:2021-03-19 浏览:2次 >En<

阅读说明:本技术 基于mcu的dma功能控制ad转换器峰值采样方法 (MCU-based DMA function control AD converter peak value sampling method ) 是由 何其齐 赵浩华 高志齐 于 2020-12-03 设计创作,主要内容包括:本发明涉及一种基于MCU的DMA功能控制AD转换器峰值采样方法,包括如下步骤:根据AD转换器的时序要求配置好MCU的定时器DMA功能;配置连接AD转换器的端口寄存器指向第一缓冲区,AD转换器数据通过MCU的端口传输到第一缓冲区,进入中断执行程序;中断执行程序的第Ⅰ阶段,在小于1us的时间里完成DMA的关闭、重新指定数据端口寄存器传输到第二缓冲区,然后重新启动DMA;在第Ⅱ阶段,程序寻找上个缓冲区中已经填满的AD电压和电流数据中的最大值和最小值,并计算出平均值;在第Ⅲ阶段,MCU可执行其他程序。本发明能够用最简单的电路图实现电压、电流的无丢失连续全采样,并由此实现电压、电流峰值和纹波测量。(The invention relates to a method for controlling the peak value sampling of an AD converter based on the DMA function of an MCU, which comprises the following steps: configuring a timer DMA function of the MCU according to the time sequence requirement of the AD converter; configuring a port register connected with an AD converter to point to a first buffer area, transmitting the data of the AD converter to the first buffer area through a port of the MCU, and entering an interrupt execution program; in the I stage of the interrupt execution program, the closing of the DMA is completed in the time less than 1us, the register of the data port is reassigned and transmitted to the second buffer area, and then the DMA is restarted; in the second stage, the program searches the maximum value and the minimum value in the AD voltage and current data which are filled in the previous buffer area, and calculates the average value; in phase iii, the MCU may execute other programs. The invention can realize loss-free continuous full sampling of voltage and current by using the simplest circuit diagram, and thereby realize voltage and current peak value and ripple measurement.)

基于MCU的DMA功能控制AD转换器峰值采样方法

技术领域:

本发明涉及仪器仪表和电子测量领域,尤其涉及一种基于MCU的DMA功能控制AD转换器峰值采样方法。

背景技术:

在电子测量领域,实现电压或者电流的峰值和纹波测量,通常采用硬件的峰值采样保持电路或者FPGA/CPLD单独连接AD模数转换器进行采样再通过FPGA/CPLD传给MCU的方法,如图1、图2所示。这些方法都有各自的缺点,都很难实现峰值采样的无丢失和随意可控时间段范围里的峰值和纹波测量。而且增加CPLD或者FPGA的方法增加了电路的复杂性和提高了成本。

发明内容

本发明的目的是要克服现有技术的不足,提供一种利用MCU的DMA功能控制AD转换器实现电压电流无丢失的采样技术实现峰值和纹波测量的方法。

本发明提供一种基于MCU的DMA功能控制AD转换器峰值采样方法,包括如下步骤:

步骤一、首先根据AD转换器的时序要求配置好MCU的定时器DMA功能;

步骤二、MCU定时器配置完成后,先配置连接AD转换器的端口寄存器指向第一数据缓冲区,启动定时器后无需MCU干预,AD转换器数据通过MCU的端口传输到第一数据缓冲区,当DMA计数到达设定的计数值n时,触发DMA中断,进入中断执行程序;

步骤三、中断执行程序的第Ⅰ阶段,在小于1us的时间里完成DMA的关闭、重新指定数据端口寄存器传输到第二数据缓冲区,然后重新启动DMA;在第Ⅱ阶段,程序寻找上个缓冲区中已经填满的AD电压和电流数据中的最大值和最小值,并计算出平均值;在第Ⅲ阶段,MCU可执行其他程序;等到下一个DMA中断开始,又重复上述过程。

其中,步骤一中,配置MCU的定时器DMA是用MCU内部定时器输出产生1MHz的频率去控制AD转换器的/CNVST和A/B端口,定时器的上、下计数方式都触发DMA数据传输,从MCU端口传到定义的缓冲区,采用DMA计数中断,每n个计数到了就进入中断程序;/CNVST是下降沿触发一次AD转换过程,一次转换两个通道的数据,总共需要2us的时间;然后定义两个大小相同的数据缓冲区,一旦启动定时DMA方式采样,就不停的在两个数据缓冲区之间切换读取AD数据,以此实现无丢失的电压、电流采样。

作为优选,所述AD转换器为模数转换器AD7655,所述MCU为STM32F103VCT。

本发明的有益效果是:

(1)本发明运用MCU的DMA数据传输技术实现AD转换器的数据读取到MCU内部;

(2)该方法能实现AD采样数据无丢失,克服传统的间断采样的缺陷;

(3)整个程序流程围绕DMA中断的方式完成,并实现电压、电流峰值采样和纹波测量;

(4)本发明能够用最简单的电路图实现电压、电流的无丢失连续全采样,并由此实现电压、电流峰值和纹波测量。

附图说明:

图1是电压电流采样的通用方法原理框图;

图2是电压电流采样通用方法的时序图;

图3是本发明的基于MCU的DMA功能控制AD转换器峰值采样方法的电路原理框图;

图4是本发明的基于MCU的DMA功能控制AD转换器峰值采样方法的工作时序和程序图。

具体实施方式

下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易被本领域人员理解,从而对本发明的保护范围做出更为清楚明确的界定。

本发明中涉及MCU的DMA技术,DMA(Direct Memory Access)是直接存储器存储,是一种不需要MCU干预的数据传输方式,其传输数据不占用MCU的工作。

如图3所示,本发明的基于MCU的DMA功能控制AD转换器峰值采样方法的基本电路包括:电压电流输入单元、MCU控制单元、AD模数转换单元。

被采样的电压、电流型号经过模拟电路处理后输入模数转换器AD7655,AD7655和STM32F103VCT6的连接信号主要包含16位数据线(D0-D15)、转换启动信号(/CNVST)和通道选择型号(A/B)连接。

图4中所示的方法和时序是本发明的核心。

首先根据AD转换器的时序要求配置好MCU的定时器DMA功能,本方法是用的MCU内部定时器T输出产生1MHz的频率去控制AD7655的/CNVST和A/B端口,定时器的上、下计数方式都触发DMA数据传输,从MCU端口传到定义的数据缓冲区buf1[n]和buf2[n],采用DMA计数中断,每n个计数到了就进入中断程序。/CNVST是下降沿触发一次AD转换过程,一次转换两个通道的数据,总共需要2us的时间,也就是每个通道的采样率为500kSPS。然后定义两个大小相同的数据缓冲区buf1[n]和buf2[n],这是实现DMA方式无丢失的读取AD转换器每次转换数据的必要条件,一旦启动定时DMA方式采样,就不停的在两个缓冲buf1和buf2之间切换读取AD数据,以此实现无丢失的电压、电流采样。其中n可以根据程序具体情况自由设定,比如本方案n是100,对应每个中断间隔时间是100*1us=100us。

采样过程为:MCU定时器配置完成后,注意先配置连接AD的端口寄存器指向buf1,启动定时器后无需MCU干预,AD7655数据通过MCU的端口传输到指定buf1,当DMA计数到达设定的计数值n时,触发DMA中断,进入中断执行程序。

中断执行程序在图4中的第Ⅰ阶段内,在小于1us的时间里必须完成DMA的关闭、重新指定数据端口寄存器传输到buf2地址、然后重新启动DMA,这样保证下个AD数据不丢失的传送到buf2[n]中。在图4中的第Ⅱ阶段内,程序寻找上个buf1[n]中已经填满的AD电压和电流数据中的最大值和最小值,并计算出平均值,上述程序的处理时间可以压缩到60us只内,在图4中的第Ⅲ阶段内,剩余空闲的40us时间内MCU可以执行其他程序,比如响应按键,通讯等。等到下一个DMA中断开始,又重复上述过程,只不过重新指定数据端口寄存器传输到buf1地址,然后重新启动DMA。让AD采样的电压电流数据在buf1和buf2中轮流传输。

其中计数个数n的值可根据具体需求自由设置,n值小那么采样间隔就小,可以配合一些对速度有要求的PID算法提高响应速度。

另外因为该峰值和纹波值是程序控制,可以指定测量一段时间内的峰值和纹波值。

综上所述,本发明提供一种可以利用MCU的DMA功能控制AD(模数转换器)实现对电压或电流信号的峰值采样和测量的方法。

最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种运行电能计量装置RFID密钥管理方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!