教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高中教育 >

一种高精度A_D采样方法在TMS320F2812上的C语言实现

来源:网络收集 时间:2026-08-22
导读: 针对A/D 转换的误差问题介绍了一种高精度的A/D 采样方法,并给出了该方法在TMS320F2812 上的C 语言实现及程序清单。分析证明该方法具有精度高、程序简单等特点。 《工业控制计算机》2009年22卷第3期 27 一种高精度A/D采样方法在TMS320F2812上的C语言实现 A

针对A/D 转换的误差问题介绍了一种高精度的A/D 采样方法,并给出了该方法在TMS320F2812 上的C 语言实现及程序清单。分析证明该方法具有精度高、程序简单等特点。

《工业控制计算机》2009年22卷第3期

27

一种高精度A/D采样方法在TMS320F2812上的C语言实现

AHigh-precisionA/DSamplingMethodBasedonTMS320F2812WithCLanguage

曾建军

万浩平(华东交通大学电气与电子工程学院,江西南昌330013)

程序清单。分析证明该方法具有精度高、程序简单等特点。

关键词:TMS320F2812,A/D采样,C语言

Abstract

Thispaperintroducesahigh-precisionA/DsamplingmethodforA/Dconversionerror,andgivestheimplementofthemethodonTMS320F2812withtheClanguageandproceduredetailedlist.Theanalysisprovedthatthemethodhasaccu-rate,simpleandothercharacteristics.

Keywords:TMS320F2812,A/Dsampling,Clanguage

针对A/D转换的误差问题介绍了一种高精度的A/D采样方法,并给出了该方法在TMS320F2812上的C语言实现及

TMS320F2812数字信号处理器是TI公司最新推出的32位定点DSP控制器,12位精度,但在实际的使用过程中,ADC

的转换结果误差较大。如果直接将此转换结果用于控制回路,必然会降低控制精度,最大的转换误差可以达到9%左右。本文介绍了如何用该方法来补偿A/D转换的误差。

大的5个,然后取中间10个采样数据的平均值。

3高精度A/D采样方法

在没有任何修正的情况下,TMS320F2812片内12位AD

采集交流信号时,采样精度基本上可以达到<5%精度(采集直流信号时精度会更好一些)。

1

TMS320F2812的ADC模块

TMS320F2812上的模数转换模块(即ADC模块)将外部的模拟信号转换成数字量,ADC模块可以将一个控制信号进行滤

波或者实现运动系统的闭环控制。

TMS320F2812的A/D采样精度较差的主要原因是存在线性增益误差(GainError)和偏置误差(OffsetError),要提高转

换精度就必须对这两种误差进行补偿。

理想的12位ADC应该是没有增益误差和偏置误差的,因此进行补偿时的转换公式为:

Y=X*mi

ADC模块有16个通道,可配置为2个独立的8通道模块,分别服务于事件管理器A和事件管理器B,两个独立的8通道模块也可以级联构成一个16通道模块。两个8通道模块能够自动排序,每个模块可以通过多路选择器(MUX)选择8通道中的任何一个通道。在级联模式下,自动排序器将变成16通道。对于每个通道而言,一旦A/D转换完成,将会把转换结果存储到结果寄存器(ADCRESUILT)中。

自动排序器允许对同一个通道进行多次采样,用户可以完成过采样算法,这样可以获得更高的采样精度。

其中:Y=outputcount

X=inputcount=inputvoltage觹4095/3.0Vmi=idealGain

实际上TMS320F2812的A/D转换是存在增益误差和偏

置误差的,其转换公式为:

Y=X*ma+mb

其中:ma=actualgain

2提高A/D采样精度的常见方法2.1基于硬件的方法

1)硬件滤波,滤除干扰信号。

2)正确的PCB板设计和布局,连接到ADCINxx引脚的模

拟量输入信号线不能与数字信号线靠得太近,这可以避免数字信号的干扰耦合进ADC的输入线。

mb=actualoffset

因此这种方法本质上是一种用软件进行校正的方法。在校正的时候,首先选用ADC的任意两个通道(例如A3和A4)作为参考输入通道,并分别输入已知的直流参考电压(RefHigh和

3)ADC模块的功率引脚所连的电源和地必须与数字电源

和数字地分开。

RefLow)。通过读取相应的结果寄存器获取转换值,利用两组输入输出值便可求得ADC模块的校正增益和校正偏置,然后利用这两个值对其他通道转换数据进行补偿,从而提高了A/D采样

的精度。

以下给出该方法的C语言实现:

//首先计算两个通道的参考电压转换后的理想结果

//A4=RefHigh=2.5V(2.5觹4095/3.0=3413idealcount)//A3=RefLow=0.5V(0.5觹4095/3.0=683idealcount)#defineREF_HIGH_IDEAL_COUNT3413//理想高值#defineREF_LOW_IDEAL_COUNT683//理想低值#defineSAMPLES63//采样次数//定义所需的各个变量

Uint16Avg_RefHighActualCount;Uint16Avg_RefLowActualCount;Uint16CalGain;Uint16CalOffset;Uint16SampleCount;

4)如果采样电路部分是经过多路开关切换的,可以在多路

开关输出上接下拉电阻到地。

5)采样通道上的电容效应也可能会导致A/D采样误差。因

为采样通道上的等效电容可能在还保持有上一个采样数据的数值时,就对当前数据进行采样,这样就会造成当前数据不准确。如果条件允许,可以在每次转化完成后现将输入切换到参考地,然后在对信号进行下一次采样。

2.2基于软件的方法

1)多次采样取平均值。

2)数字滤波法。例如采用中值滤波法,具体方法为:连续采个数据,,5个和最

针对A/D 转换的误差问题介绍了一种高精度的A/D 采样方法,并给出了该方法在TMS320F2812 上的C 语言实现及程序清单。分析证明该方法具有精度高、程序简单等特点。

28

Uint16

RefHighActualCount;

一种高精度A/D采样方法在TMS320F2812上的C语言实现

Avg_RefHighActualCount=(Avg_RefHighActualCount觹SampleCount+RefHighActualCount)/(SampleCount+1);

Avg_RefLowActualCount=(Avg_RefLowActualCount觹SampleCount+RefLowActualCount)/(SampleCount+1);

CalGain=(REF_HIGH_IDEAL_COUNT-REF_LOW_IDEAL_COUNT)/(Avg_RefHighActualCount-Avg_RefLowActualCount);//计算增益系数CalOffset=Avg_RefLowActualCount觹CalGain-RefLowIdealCount;//计算偏置

SampleCount++;妖

//在ADC_ISR中,对其他各个通道的结果进行修正:interruptvoidadc_isr(void)邀

GetCalibParam();......

newResultn=AdcRegs.ADCRESULTn觹CalGain-CalOffset;......妖

Uint16RefLowActualCount;//对各个变量进行初始化voidInitCalib()邀

Avg_RefLowActualCount=0;Avg_RefLowActualCount=0;Avg_RefHighActualCount=0;RefHighActualCount=0;RefLowActualCount=0;CalGain=0;CalOffset=0;SampleCount=0;妖

//获得校准增益和校准偏置/觹

Algorithm:Calibrationformulausedis:

ch(n)=ADCRESULTn觹CalGain-CalOffsetn=0to15channels

CalGain=(RefHighIdealCount-RefLowIdealCount)/(Avg_RefHigh-ActualCount-Avg_RefLowActualCount)

CalOffset=Avg_RefLowActualCount觹CalGain-RefLowIdealCountArunningweightedaverageiscalculatedforthereferenceinputs:Avg_RefHighActualCount=(Avg_RefHighActualCount觹SAMPLES+RefHighActualCount)/(SAMPLES+1)

Avg_RefLowActualCount=(Avg_RefLowActualCount觹SAMPLES+Re-fLowActualCount)/(SAMPLES+1)觹/

voidGetCalibParam()邀

RefHighActualCount=dcRegs.ADCRESULT4>>4;RefLowActualCount=dcRegs.ADCRESULT3>>4;if(SampleCount>SAMPL …… 此处隐藏:3120字,全部文档内容请下载后查看。喜欢就下载吧 ……

一种高精度A_D采样方法在TMS320F2812上的C语言实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1731616.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)