基于StellarisTM系列微控制器的ADC滑动平均过采样技术_第1页
基于StellarisTM系列微控制器的ADC滑动平均过采样技术_第2页
基于StellarisTM系列微控制器的ADC滑动平均过采样技术_第3页
基于StellarisTM系列微控制器的ADC滑动平均过采样技术_第4页
全文预览已结束

下载本文档

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

文档简介

1、基于StellarisTM系列微控制器的ADC滑动平均过采样技术    关键词:有效位数;ADC模块;过采样 1 过采样原理 过采样是从输入信号中采集额外的转换数据。模拟信号采样的标准约定指出:采样频率fS至少是输入信号的最高频率成分fH的两倍。 只要所选的采样频率高于fS就被看作是过采样。当过采样与平均技术相结合时,可改善ENOB。这是可以实现的,因为在将过采样的结果进行平均的同时也将量化噪音进行了平均,这样就提高了信噪比(SNR),信噪比的提高会在ENOB上产生一个直接的影响,从而改善ENOB。 精度上每提高一位,必须对信号进行4倍的过采样,即过采样

2、频率fos与采样频率fS的关系:fos=4x*fS x为ENOB上需改进的位数(例如,需要改进2位,则x=2) 过采样对转换结果的精度的改善如图1所示。图中,对输入信号进行4倍过采样(样品组用绿色和紫色表示)并进行平均。图中显示的采样点阐明了原始的、带噪音信号与平均值之间的差值。该例中的噪音在单个采样值上对精度的影响达到±3位。我们注意到平均值(橙色圆点)比大多数单个的采样值更接近于理想值,并且精确得多。 平均操作可看作是输入信号上的一个低通滤波器,当采样数据宽度(simple size)增加时滤波器的通带变窄。有两种方法可对转换结果进行平均:常规平均和滑动平均(rolling av

3、erage)。以下我们只讨论滑动平均。 滑动平均在平均计算中使用存放n个最近采样值的采样缓冲区,允许ADC在其最大采样率时采样(ADC采样率并不象常规平均那样减小为原来的1/n),这样它可理想地用于要求过采样和更高采样率的应用中。在未知状态中,采样缓冲区能够用有效的采样数据预先填充(通过捕获第一个"实际"数据点之前的n-1个采样点),也可保持为空,由应用来决定。不预先填充缓冲区的危害是前面的n-1个采样点包含无效的数据,并在滑动平均计算中产生不利的影响。如果这些影响可被应用所接受,并且如果软件能够解决前面的n-1个偏移的采样点的可能性,则可去除缓冲区填充操作。 在使用滑动平

4、均时,采样延迟如下式: tdelay=(tSn-tS0)/2 tprocess tS0为进行平均时第一个采样点出现的时间,tSn为最后一个采样点出现的时间。中断处理程序处理采样数据所需的时间,并被计算为供应用使用的平均tprocess也被分解到等式中。因为必须在每次中断过程中执行采样缓冲区处理,因此使用滑动平均增加了额外的处理开销。 3 实现 Luminary Micro在ADC中使用采样定序器(sample sequencer)结构,它使用一次触发就可采集到高达17个不同的采样值(来自任意的模拟通道),这样过采样的实现就变得非常简单。而通过向应用提供在任意给定的时刻对多个通道进行过采样的方法

5、,使得软件的实现也具有极大的灵活性。 Stellaris驱动库具有内置的允许进行高达8倍过采样的函数。该级别的过采样能够使ENOB改进大约1.4位,因此在大多数应用中已足够了。但是需要更大过采样因子的应用必须使用其它的实现。以下是使用滑动进行平均每100s过采样。 代码段1 ADC配置-滑动平均 / 初始化ADC,以便在检测到触发时在通道1、定时器3上获得一个采样值。 ADCSequenceConfigure(ADC_BASE, 3, ADC_TRIGGER_TIMER, 0); ADCSequenceStepConfigure(ADC_BASE, 3, 0, (ADC_CTL_CH1 | A

6、DC_CTL_IE | ADC_CTL_END); / 初始化定时器0 TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER); TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet() / 10000); TimerControlTrigger(TIMER0_BASE, TIMER_A, true); 中断处理程序必须更新采样缓冲区并进行平均计算(见代码段2)。在每次ADC中断时,去掉采样缓冲区中的最后一个元素,缓冲区中剩下的数据移动一个位置。然后,在计算平均值之前将新的转换结果放在采样缓冲区的开始处。

7、中断处理程序中执行的额外计算又一次增加了开销,这一点必须要考虑到。 代码段2 ADC中断处理程序 void ADCIntHandler(void) / 清除中断 ADCIntClear(ADC_BASE, 3); / 检查g_ucOversampleIdx,确保它的值在范围内 if(g_ucOversampleIdx = 16) g_ucOversampleIdx = 0; / 从全局总和中减去最早的值 g_ulSum -= g_ulSampleBufferg_ucOversampleIdx; / 用新的采样值代替最早的值 g_ulSampleBufferg_ucOversampleIdx =

8、 HWREG(ADC_BASE ADC_O_SSFIFO3); / 将新的采样值加到总和中 g_ulSum = g_ulSampleBufferg_ucOversampleIdx; / g_ucOversampleIdx加1 g_ucOversampleIdx ; / 从采样缓冲区的数据中获得平均值 g_ulAverage = g_ulSum >> 4; / 占位符,供ADC处理代码         在启动定时器之前,使能定时器及其中断(见代码段3)。 代码段3 使能ADC和中断 / 使能定序器和中断

9、ADCSequenceEnable(ADC_BASE, 3); ADCIntEnable(ADC_BASE, 3); IntEnable(INT_ADC3); / 使能定时器并启动转换处理 TimerEnable(TIMER0_BASE, TIMER_A); 本文描述的过采样技术需要额外的代码来执行平均计算,附加中断,和/或大部分采样定序器资源,因此它在整个系统性能上有一个显著的影响。 4 结论 Luminary Micro的采样定序器结构为过采样技术的实现提供了大量的选项。当与软件平均技术相结合时,该结构能够使系统设计人员有效地在采样频率、系统性能和采样解决方案之间进行权衡。 参考文献 1王永宏,徐炜,郝立平. STM32 系列ARM Cortex - M3 微控制器原理与实践M . 北京:北京航空航天大学出版社, 2

温馨提示

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

评论

0/150

提交评论