基于STM32的过采样技术研究与实现_第1页
基于STM32的过采样技术研究与实现_第2页
基于STM32的过采样技术研究与实现_第3页
基于STM32的过采样技术研究与实现_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、页眉内容基于STM32勺过采样技术研究与实现吴家平1,沈建华2(华东师范大学计算机科学与技术系,上海200241)摘要针对微控制器自带ADC精度较低的情况,介绍了过采样技术提高微控制器ADC精度的基本原理,给出了在ARMCortex-M3内核微控制器STM32上的实现方法,并测试、分析了其性能和处理器负荷情况。实验证明,在STM32微控制器上使用过采样技术,能够以很小的处理器负荷、有效地提高其自带ADC的精度。关键字量化过采样抽取DMA'"x XI| I I, I11 / / /STUDYANDINPLEMENTATIONOFOVERSAMPLINGTECHNOLOGYONS

2、TM32WUJIA-PING 1,SHENJJIA-HUA 2(DepartmentofInformationScienceandTechnology,EastChinaNormalUniversity,Shanghai200241,China)II 1.J ,_Abstract DuetolowresolutionofADCinthepresentMCUandincreaseofcostifexternalADCofhighresolutionisused,theoversamplingtechnologyisi ntroducedtoimprovetheresolutionofADC.As

3、pecificrealizingmethodisgivenonSTM32,withtheaffecttoprocessoranalyzed.Thepracticalexperime ntandtheresultsapprovethattheoversamplingtechnologycaneffectivelyimprovetheresolutionofADCinSTM32,whilenotincreasingtheloadofproc essor.Keywords quantizationoversamplingdecimationDMA' i ?'_1 引言由于数据采样的广

4、泛需求,当前市场上的大多数微控制器都在内部集成了ADC用来采样数据。但是在很多情况下,这些自带的 ADC往往达不到应用所 需要的精度,而使用外部专用的ADC通常会使得成本有所增加。过采样技术无须添加额外的硬件,仅仅通过软件的方法就能够实现ADC精度的提高,从而使得片上自带的ADC能够实现昂贵的片外ADC的精度指标。STM32系列32位微控制器使用ARM公司的Cortex-M3处理器,该处理器专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。但是其自带的 ADC只有12位精度,在某些场合满足不了要求,通过引入过采样技术,能够有效的增加数据采样精度,解决了使用外部专

5、用ADC带来的成本问题。2过采样技术原理2.1量化噪声分析ADC采样过程其实是一个将连续的模拟信号量化成有限的数字的过程,每 个数字代表一次采样所获得的信号。量化时,根据数据位把整个幅度划分为量 化级,例如12位数据位则表示212个量化级,16位数据则表示216个量化级,把落入同一级的样本值归为一类,并给定一个量化值。由于模拟信号的是连续 的,量化结果和被实际模拟量的之间会存在差值,该差值被称作量化误差(eq),也称量化噪声。根据参考电压(Vref)和量化的数字的位数(N),能够确定最小的分辨率:Vf二上 2N -N越大,就越小,量化误差也就越小。在没有其它能造成误差的因素例 如热噪声、杂色噪

6、声、参考电压变化的理想情况,量化误差应该在土 0.5 之内, 即eq < ±0.5 Ao假设输入信号的变化大于,并且在问随机分布,可以将 量化噪声看成白噪声,其总功率为一个常数,平分分布在0fs的频带内,如图1所示。图1噪声功率分布(fs=2fm)上图中fm为输入信号的频率,fs为采样频率。根据Nyquist定理,采样频率必需至少是信号频率的两倍,否则高频部分将有损失,所以fs= 2fmo此时的信噪比可以通过下面公式来得到:SNRdB=6.02R+1.76 (2)式中R为ADC的精度。由于噪声总功率一定,所以fsM大,叠加在有效信号部分的量化噪声就越小, 图2显示了将采样率提高

7、到N倍进行过采样时量化噪声的分布。图2噪声功率分布(fs=2Nfm) 此时得到的信噪比如下:SNRovs=6.02R+1.76+l0log(N) (3) 可以推算,每将采样频率提高4倍,便会增加1位精度。需要得到额外p位精度,ADC的过采样率Fovs必须满足:Fovs=4pFs(4)2.3 过采样数据的抽取 以过4P过采样率得到的采样值通过求和、平均的方法进行处理。但是不能将这4P个采样值相加后简单的除以4P,这样只能起到一个低通滤波的作用,R位的采样值经过这样平均后精度仍旧是 R位,并不能实现采样精度的提高。数据抽 取方法首先将4P个采样值相加,得到一个R+2P位的数值,然后将该数值右移p

8、位,得到一个R+p位的数值,这个数值才是最终提高了 p位精度的采样结果。2.4 进行过采样的前提条件过采样技术并不是在任何情况下都能很好的发挥作用的,如果要使用过采 样来增加采样精度,必须满下面两个条件:(1)输入信号里必须存在一些噪音,这些噪音必须是白噪音,功率平均分 配在整个有用的频带内。(2)噪声的幅度必须能够对输入信号产生足够大的影响,以使得ADC转换的结果能随机的翻转至少1位,否则的话所有的输入信号将会转换出同样的值, 对这些值进行的抽取操作将不会带来精度的提高。在大多数应用中,内部ADC的热噪声以及输入信号本身的变化足以使得以上条件 成立。如果热噪声不足以使输入信号随机的翻转 1位

9、,那么必须人为的在输入信 号中引入一定的噪声。引入的噪声不应和输入信号线性相关,并且必须能使得 ADC转换结果随机的在相邻的量化值之间翻转。3过采样技术在STM32上的实现3.1STM32片上ADC的特性STM32内部自带12位的ADC。该ADC具有16个输入信号通道,通过配置采样 序列寄存器,这些通道能以任意的顺序轮流进行采样。 该ADC还具有自动校验功 能,可以显着的减小采样的误差。STM32上ADC的结构见图3:图3STM32内部ADC框图图中ADCCLK为ADC时钟,在CPU时钟为56MHz的情况下,ADCCLK 可达14MHz。在最高速转换的情况下,只需要14个ADC时钟周期就能完成

10、一次采样,因此可达到1Msps的采样速度。;STM32内部具有2个DMA控制器,共有12个通道,用于外设和存储器以及存 储器和存储器之间的快速数据传输。ADC每完成一次采样,就可以产生一次DMA 请求,如果相应的DMA通道被使能,采样值就可以通过DMA直接传输到SRAM , 不需要CPU的干预,使得大部分时间里,CPU和数据传输处于并行操作,因此 可以使整个系统的效率大大提高。STM32内嵌了 8个16位的定时器,具有捕获比较、输入/输出比较、PWM和单 脉冲等工作模式。定时器时钟可以设置为和CPU时钟一样大小,从而能够精确的 产生us级的定时。,一;:二;设计中使用了 STM32系列中的ST

11、M32F103C。3.2STM32上过采样条件检测为了确保过采样技术使用的正确性,在正式设计软件代码之前对系统是否满 足过采样条件进行了检验。实当过程中输入信号的频率为50Hz,根据Nyquis定律,采样率至少为100Hz。在100Hz的采样率下,分别向系统 ADC提供0.0000V、1.7000V和3.4000V输入信号,采样值不经过处理直接送到 PC机上,通过Excel软件观看得到的数据,图4为信号为1.7000V时采样值中的200个数据。图4采样数据图(输入彳t号=1.7000V)从图中可以看到,系统中的噪声能够使得输入信号翻转 12位,并且噪声 的分布近似是随机的,从而可以将其看成白噪

12、声。所以在该系统上,已经满足了进行过采样所需要的条件,无须再人为的给输入信号引入白噪声。3.3 软件设计软件系统主要包括系统初始化和中断处理两大模块。该部分主要对STM32的CPU时钟、ADC、DMA、定时器进行初始化。为 了将精度提高4位,50Hz的输入信号需要至少50*2*44=25.6KHz的采样频率。 通过将CPU时钟设为56MHz , ADC时钟分频系数设置为8,转换时间设为242 个ADC时钟周期,使得ADC的采样率为29KHz,即能满足采样频率的要求, 又不会占用CPU时间。定时器设置为每10ms产生一次中断,在定时器中断中 启动一次DMA传输,DMA传输源设置为ADC数据寄存器

13、,传输目的为一块 256半字的缓存,传输量为J56个半字(每个采样值为一个半字),这样使得实际 的采样值获取频率为25.6KHZ。3.3.2中断处理模块在DMA传输完成中断处理程序中对获得的 256个采样值进行求和,得到的和进行以下处理:(1)右移8位,得到一个12位的采样值,该值作为经过一个经过均值滤波的采样结果,将用于过采样结果的参照。(2)右移4位,得到一个16位的采样值,该值作为最终的过采样结果。3.4 测试结果实验中所使用的标准信号源为 VICTOR11+,输出分辨率0.0001V,实验对 不同范围的输入信号进行测量,得到的数据如表1:表1采样结果输入信号单位:V普通采样过采样理论值

14、(12 位)实际采样值(12 位)理论值(16 位)实际采样值(16 位)0.11111331342141214921500.41114954957924792779290.81119779781563415642156451.2111145914602334423355233581.6111194019413105431064310682.1111254325444069240713407182.7111326632685225752281522863.111137473749599675998659992由采样结果可以看到,使用过采样技术采集的数据能够基本达到14位的精度。4处理器负荷分析

15、在该软件系统中,处理器主要的时间花在DMA的传输完成中断处理上,其中最占时间的是256个数据的循环累加。由于 STM32系列微控制器采用了 Cortex-M3处理器,而 Cortex-M3处理器的核心是基于哈佛架构的3级流水线内核,该内核集成了分支预测技术,所以达到了 1.25DMIPS/MHZ 的优越性能。在56MHz的系统时钟下,指令周期 =1/(1.25 56)=0.01423us。通过反汇编可以看到,每次累加需要 6条指令(虽然其中包含了 LDR和BCC指令,但由于指令顺序经过编译器调整,内核又使用了分支预测,所以流水 线能保证每个机器周期吐出一条指令),256次累加总共用到 256X

16、6=1536条指令,执行时间=1536X0.01423 = 21.857us。也就是说在 10ms的采样间隔时间内,处理器只需要花费 21.857us去处理数据,由此可计算处理器使用率=0.021857/100.22%此可见处理器并不会因为过采样数据的处理而受到很大的影响。5STM32上过采样对输入信号频率的限制根据Nyquis定律,采样频率必须是输入信号的2倍才能将信号还原,当需 要提高p位采样精度的时候,频率又得提高 4P倍。STM32k的ADCtt达到的最 高采样率为1MHz如果要达到16位的精度,那么输入信号的频率就不能够超过 1M/2/256=2KHz。6结束语过采样技术的应用,能够

17、有效的利用低精度的ADC获得高精度的采样结果,这使得本来需要使用昂贵的外部专用ADC的微控制器仅使用自带的ADC就能够达到应用要求,在一定程度上节约了成本。当然,过采样技术的使用必 须具备一定的前提条件,并且使用过采样技术后对输入信号频率具有一定局限 性。过采样技术的对CPU的负荷也是有一定的影响的,但是由于STM32采用了高性能的Cortex-M3处理,并且采用了 DMA在外设和SRAM之间进行直接数据传输,使得过采样技术不会给STM32处理器增加太大负荷。本文作者创新点:研究了一种提高数据采集精度的算法,在采用了最新Cortex-M3内核的STM32系列微控制器上实现了该算法,并对算法给处理器带来的负荷进行了分析。参考文献1SchaferR.Discrete 2timesignalprocessingM.New Jersey:PrenticeHall,1999.2versionJ.IEEEtransactionsoncircuitsandSystems,June1987.3AndrewN.Sloss,DominicSymes着,沈建华等译,ARM嵌入式系统开发软件设计与优化M,北京航

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论