用过采样和求均值提高ADC分辨率_第1页
用过采样和求均值提高ADC分辨率_第2页
用过采样和求均值提高ADC分辨率_第3页
用过采样和求均值提高ADC分辨率_第4页
用过采样和求均值提高ADC分辨率_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、应用笔记AN018 用过采样和求均值提高ADC分辨率相关器件本应用笔记适用于下列器件:C8051FOOO、C8051F001、C8051F002、C8051 F005.C8051 F006、C8051F010. C8051 F011>C8051F012. C8051F015. C8051F016. C8051F017.引言很多应用需耍使用模/数转换器( ADC)进行测届。这些应用所需耍的分辨率収决信巧的动 态范用、必须测駅的参数的最小变化和信噪比(SNR)。氏此.很多系统使用较高分辨率的片外ADC。 然而也町以通过使用一些技术来达到较高的分辨率和SNR。本应用笔记介绍用过采样和求均值的方

2、 法來提高模数转换的分辨率和SNR。过采样和求均值技术可以在不使用詁贵的片外ADC的惜况卜提 高测量分辨率。本应用笔记讨论如何使用过采样和求均值的方法来提高模/数转换(ADC)测杲的分辨率。另 外,本文最后的附录A、B和C分别给出了对ADC噪声的深入分析、般适合过釆样技术的ADC噪声 类型和使用过采样和求均值技术的示例代码。关键点 可用过采样和求均值技术提高测建分辨率,不必采用环贵的片外ADC。 过采样和求均值对SNR和测昴分辨率的改善是以増刃ICPU时间和降低数据存吐率为代价的。 对于白噪声的情况.过采样和求均值可以改善信噪比。en(噪声)过采样和平均图1.用过采样和求均值使测量分辨率增加“

3、W”位AN018 用过采样和求均值提高ADC分辨率数据转换器噪声源ADC转换时町能引入很多种噪札 例如:热噪声、杂色噪声、电源电床变化、参考电斥变化、 由采样时钟抖动引起的相位噪声以及由磺化谋差引起的噪声。曲吊化谋差引起的噪声通常被称为彊 化噪声.这些噪声源的噪卢功率是可以变化的.仃很多技术可用r减小噪声例如:精心设计电路 板和在参考电压信号线上加旁路电容.但是ADC总是存在起化噪声,所以一个给定位数的数据转 换器的授人SNR由灵化噪声(不使用过采样技术时)定义。在正确的条件卜'过采样和求均值会 减小噪声和改善SNR.这将何效地提高测砒分辨率的位数。图1所示的系统町以用Cygiial的

4、片内 ADC和-个软件子程序來实现,软件程序先采样一组样木,然后求这些样本的平均值(滤波)而 得到结果。提高ADC测量的分辨率很参应用需耍测吊人动态范用的信号值.还可能需要用高分辨率测鼠某个参数的微小变化。例 如,ADC要测最很大的温度范閑.还要求系统对小F 1度的变化做出响应。这样的系统可能需要 16位的测战分辨率。使用Cygnal的片内12位ADC并采用过采样和求均值技术即町达到以16位 分辨率测邑某个参数的目的,而不必使用昂贵的片外16位ADC。某些应用耍使用ADC分析带有高频成分的信号这样的系统也会从过采样和求均值技术受益。 根据奈奎斯特定理.所耍求的采样频率为奈奎斯特频率:fn =

5、2fm其中.fm是输入信号的最高频率。方程1.奈奎斯特频率釆样频率(fj高七则为过采样.过采样能提高测磺分辨率。关J:过采样提高测啟分辨率的 原理请参见附录Ac根据要增加的分辨率计算过采样率为了增加有效位数(ENOB),信号被过采样.或者说ADC以高系统所需采样频率£的速率 对信号采样。所需耍的采样频率由系统对参数测战所耍求的频度(输出数据7的速率)决定.或者 是奈奎斯特频率匚每增加一位分辨率.信号必须彼以4倍的速率过采样:贰中,w是所希望増加的分辨率位数,£是初始采样频率要求.人是过采样频率。方程2.增加测量分辨率的过采样频率附录A屮介绍了方程2的一个导出方程。假设-个系

6、统使用12位的ADC.每秒输出-个温度值(lHzh为了将测彊分辨率增加到16 位,我们按下式计算过采样频率:几=4° 1(圧)=256Hz因此.如杲我们以f>256Hz的采样频率対温度传感器进行过采样,我们将在所耍求的采样周 期内收集到足够的样本,对这些样木求均值便可得到16位的输出数据。为此,我们先累加(将256 个连续样本加在一起),然后将总和除以16 (或将总和右移4位)。这样的过程通常被称为力做。 这样得到的结果是16位的仃川数据.所做的操作被称为累加和转储。一我们计算得到由256个 样本(対本例而言)所产生的结呆.我们将对数据进行保存或处理,然后开始为卜一个输出字采集

7、 样本。注:用J:累加过釆样数据和进行除法运算的心储器单元的字节数必须足够多,以免发生溢出或 截断错谋.附录C中给出了一个过采样和求均值的例子。在该例中,用片内12位ADC対片内温度传感 器采样,得到16位的测彊结果。佇关过采样对噪声的影响和提高分辨率的更深入的讨论见附录A。根据要增加的SNR计算过采样率在不进行过采样和求均值时.ADC测昴的SNR理论极限是由模数转换过程中固何的杲化噪声 决定的。因为彊化谋差取决j ADC的分辨率位数(见方程5),所以最好情况卜的SNR值是数据 转换有效位数的函数.计算公式如E:SNR(db) = (6.02 ENOB) +1.76其中,ENOB是测戢值的有效

8、位数。方程3. SNR为ENOB的函数方程3対/两及输入仃效,这就足说输入信号的动态范国必须与ADC的参右电压一致。舎则实 际SNR比用方程3计算出来的值耍低。如果用于测量某个参数的ADC是2位的并且不采用过采样技术.则址佳SNR值(方程3计 算)为74dB。如果我们想紂到更高的SNR,则必须根据给疋的SNRJII方程3计算所需耍的ENOB< 一旦我们知道所耍求的ENOB.即可用方程2计算所需耍的过采样频率。例如.如果一个给定应用所要求的SNR为90dB,则我们至少需要16位的分辨率。使用一个 12位的ADC并根据方程2计算,我们知道必须以256倍的频率进行过釆样。过采样和求均值法何时有

9、效过采样和求均值法的令效性取决主耍噪声源的特性。最关键的耍求是噪声源应为白噪声。请 见附录B屮对J能用过采样和求均值法改善的噪声源特性的讨论。耍考虑的关键点是2 3: 噪声必须逼近白噪声,在整个有用频带内貝有平均分布的功率谱密度。 噪声幅度必须足够人,能引起输入信号样本Z间的随机变化,变化幅度至少为两个相邻代码之间的距离(即1LSB.见附录A中的方程5)。输入信号可以用一个在两个相邻ADC代码之间具冇等概率分布的随机变昴表示.注:过采样和求均值不能补偿ADC的积分非线性谋差(INL )。过采样和求均值技术对相关或不能用口噪川模拟的噪声(例如,反馈系统的噪声)不起作用。 另外.如果吊化噪声的功率

10、人/门然I噪声(例如热噪声).过采样和求均值技术也不会奏效ADC 的分辨率较低时就屈这种情况。人多数使用12位ADC的应用都可以从过采样和求均值技术获益。仃关这问题的更深入的讨论请见附录B。实例本应用笔记的附录C中给出了一个使用过采样和求均值技术的例子。该程序使用Cygnal的片 内、lOOksps. 12位ADC对片内温度传感器执行16位精度的测磺.从駛件UART输出数拯。根据方程2过采样率为256。所提供的代码(在“AN018_SW.c”中)将256个连续的ADC 样本累加到变呈accumulator在完成累加后,乂将accumulator右移4位并将结果存入变最result 中。在得到计

11、算结果JS accumulator被清空(清0),准备进行下一次计算。对ADC样本的累加是 在ADC转换完成中断服务程序(ADC_isr)中完成的。分辨率提高我们使用过采样和求均值技术将对温度传感器的测駁粘度从12位捉高到16位。让我们对温度 测帚中的分辨率提高进行一下比较°片内温度传感器的满度输出略小于1伏。假设使用2.4V的参考电压(V“f)我们可以计算对 J: 12位和16位测最的代码宽度和温度分辨率(可测虽的垠小温度变化)。42位温度分辨率在不采用过采样技术的情况卜我们将衍到12位的温度测武结采。温度毎变化一个摄氏度, 片内温度传感器的电压将变化2.8mV«在使用2

12、.4V的V“fJl PGA览益为2时电压分辨率是(使 用附录A中的方程5):> 4 = = 293ur/°C22是方程5中定义的代码宽度。分母中的因数2是考虑到PGA的増益为2。12位测吊的温度分辨率是(毎个ADC码所代衣的摄氏度数):Tres 12293叩code厉厂0.1046 C说77"足12位测吊的温度分辨率。因此对于每个ADC码.我们可以测量的最小温度变化是0.104摄氏度.或者说大于十分之-度。可能我们会需耍更高的温度分辨率以便能分辨百分Z 度°通过使用过采样和求均值技术. 我们可以用同一个12位ADC达到这个分辨率.46位温度分辨率用过采样和求

13、均值技术使有效位数(ENOB)増加到16位时.新的分辨率计算如卜:1.2716=18 .3pK/°C这样.我们可以测彊的垠小淋度变化是:口防畔益厂° °°EC/c滋Tz是16位测R的温度分辨率。在采用过采样和求均值技术的情况卜-,我们用同一个片内12位ADC可以测帚的最小温度变化 是0.007摄氏度。这就允许我们以高r百分Z度的精度对温度进行测呈。数据吞吐率降低吞吐率是指每单位时间我们能得到的输出数据字的个数。如果一个ADC的垠人采样速率是 lOOksps. 4不采用过采样和求均值技术的情况卜我们町以得到lOOksps的输出7速率.但是,如呆 我们为达到

14、较高的分辨率而采用过采样和求均值技术(抽取),呑吐率将降低到初始值除以过采样 率(OSR)(见方程7)。在我们所提供的例子中.过采样率为256.我们的输出字速率将是 100ksps/256=390个样本/秒(390Hz)。山此可以看出对J给定的采样速率.应在分辨率和吞吐率 Z间权衡。另个需耍考电的问题是.增加分辨率盂変增加采样速率和计算时间,因此在每个采样 周期(1/f;)内CPU的带宽降低。小结如果ADC吸声近似为门噪声,就可以使用过采样和求均值技术來提高SNR和测鼠分辨率。该 技术适用静态直流测杲和含有较高频率成分的输入信号的测吊乙方程2说明.每増加一位分辨率 可以通过用4倍的过采样频率采

15、样來达到.而分辨率每増加一位将使SNR增加6dB (方程3),这 些都是以牺牲吞吐率和增加CPU带宽为代价的。AN018-1.1 N1AY017AN018 用过采样和求均值提高ADC分辨率附录A 噪声和过采样理论本部分讨论过采样和求均值如何影响帯内噪声以及如何根据所耍求的SNR和测磺分辨率计算 过采样比率。过采样和求均值如何改善性能过釆样和求均值是为了完成两个任务:改善信噪比和提高有效分辨率(即増加ADC测彊的有 效位数)。这两个任务实际上足同时完成的。例如,如來我们仃一个12位ADC而希塑产生16位分 辨率的转换代码则我们用过采样和求均值技术可以得到与16位ADC相同的SNR。这将増加测 最

16、数据的疔奴伐数(ENOB).也是提高SNR的一种方法。过采样和均值滤波器允许我们在产生较 低噪声强度的同时得到16位的输出字。过采样如何影响带内噪声采样频率/允许贞建位采样频率一半以内的仃用信号(奈伍斯特朮理)。如果采样频率为 100kHz.则频率低J- 50kHz的信兮可以被可靠地重建利分析。与输入信号-起.还会冇噪声信号 混叠在有用的测最频带内(小WJ2的频率成分):其中.e“是平均噪声功率是采样频率.E®是带内ESD。方程4.带内噪声的能量谱密度方程4说明,信号频带内的噪声能量谱密度(ESD)或被采样噪声的噪声平面随采样频率的增 加而降低。3过采样与分辨率提高之间的关系给定由吊

17、化噪声引起的固定噪声功率,我们可以计算增加仃效分辨率所需耍的过采样比率。例 如,我们用一个12位的ADC测最一个参数要将测最的有效位数提高到16位,则我们需要建立 一个能计算过采样比率的公式。为此.我们首先定义噪声的特性。噪声分析为了理解过采样和求均值对噪川的影响.我们必须首先定义什么是鼠化噪声。两个相邻ADC码之间的距离决定吊化误差的人小.因为ADC会舍入到最近的录化水平或ADC 码,所以:其中.N是ADC码的位数.是参考电斥。方程5.相邻ADC码之间的距离或LSB彊化谋差为(匂):假设噪卅近似为白噪卅,代农噪川的随机变彊在ADC码Z间分布的平均值为冬。则方签为平均噪声功率.计算如下:A21

18、2"方程6ADC量化噪声的功率我们用过采样率(OSR)來表示采样频率与奈奎斯特频率(见方程1)之间的比较关系.定义 如卜:OSR=fi2-finOOICvgHal Integrated Ptwiucts, Inc.AN018-1.1 N1AY019AN018 用过采样和求均值提高ADC分辨率OOICvgHal Integrated Ptwiucts, Inc.AN018-1.1 N1AY01#AN018 用过采样和求均值提高ADC分辨率其屮.fi是采样频率.fin是输入信号的最高频率。方程7.过采样率如果噪声为白噪声.则低通滤波器输出端(见图1)的带内噪声功率为:七(护二2弓7MSO

19、SROOICvgHal Integrated Ptwiucts, Inc.AN018-1.1 N1AY01#AN018 用过采样和求均值提高ADC分辨率兀中小0是滤波器的输出噪川功率。方程8.带内噪声功率是OSR的函数方程8说明我们可以通过提高OSR來减小带内噪声功率。过采样和求均值并不影响信号功率 1。所以我们能提高SNR是因为过采样能减小噪声功率但不影响信号功率。我们可以从方程5、6和8得到卜面这个反映噪声功率与过釆样率和分辨率关系的农达式:(碍(12 OSQ 2、其屮,OSR是过釆样率,N是ADC的位数.Vref是参考电压。方程9.噪声功率是OSR和分辨率的函数反过來.给定一个固定的噪声

20、功率.我们可以计算所盂耍的位数。解方程9求N.我们得到用 给定的参考电压.带内噪声功率及过采样率來计算有效位数的方程10。1N=-*logQS2 -*logQ2)2-*logQ:)2 +*log 化 d)2方程10.有效位数是参考电压、带内噪声功率和过采样率的函数从方程10我们可以注意到:采样频率每増加一倍,带内噪声将减小3 dB, iiu测磺分辨率将增加1/2位。3在实际应用中.我们将一个信号的带宽限制到小rfi/2.然厉以某个过采样率(OSR)对该信 号采样.再対采样值求'卜均值(或抽取)得到结果输出数据。毎増加一位分辨率或每减小6dB的 噪声,我们需耍以4倍的采样频率进行过采样:

21、14"其中,w是希黒増加的分辨率位数.fi是初始采样频率耍求,佃是过采样频率方程11.増加测童分辨率的过采样频率方程11就是本应用笔记开始部分介绍的方程2。如果我们使用12位的片内ADC,而希里得到 16位ADC的精度.则我们盂耍增加4位分辨率。4的4次幕(用方程11)是256,所以我们耍以 奈掘斯特频率的256借的频率进行过采样。如果信号带宽限制在60Hz (fm=60Hz).则我们必须 以120Hz * 256 = 30.7 kHz的频率进行过釆样。我们通过改善令用频带内的SNR來提高仃效分辨率. 提高采样频率或OSR使仃用信号频帯内(所仃低JF/2的频率)的噪声强度降低。杲化噪

22、声和输入信号的频率曲线如图2所示。注意.当采用过采样时.噪声曲线与输入信号曲 线的匝耗部分减少。因此.在不影响输入信号的情况卜1低通滤波器的选抒性更强町以滤出更爹 的带内噪声。滤波器输出的噪声功率用方程8计算。这是经过过采样和平均值滤波器后已经减檔 噪川强度,图3说明了这点。被滤出的噪声位于向和力f OSRZ间。如果不使用过采样技术, 滤波器将不能消除这一噪声。输出被降采样(抽取)到初始的余歪斯特频率降采样的比率也足 OSR (见图1)。这将使输入信号的频率曲线与以奈奎斯特频率采样时一样.但是噪声强度降低到 e/OSR (见图 4)。OOICvgHal Integrated Ptwiucts,

23、 Inc.AN018-1.1 N1AY01#AN018 用过釆样和求均值提高ADC分辨率AN018-1.1 N1AY0111AN018 用过釆样和求均值提高ADC分辨率,fn OSR过采样时的输入/ fn -fn/OSRfn OSR fn图2.输入信号以奈奎斯特频率和过釆样频率采样时的频率曲线及量化噪声强度AN018-1.1 N1AY01#AN018 用过采样和求均值提高ADC分辨率计算信噪比信噪比被定义为以分贝(dB)形式表示的信号功率冇效值与噪声功率冇效值的比ffi。不管我 们如何努力消除ADC噪声源.员化噪声将总是存在。I大I此理想的SNR是在没仃进行过采样和求 均值的情况下根据量化噪声

24、计算的方程5说明,ADC的分辨率越高,则量化误差就越小因而 届化噪声就越低。ADC的位数越多,则SNR越高。如前而所述,过采样和求均值能减小帯内噪声, 改善SNR和增加冇效位数(ENOB)。ENOB是SNR的另一种度吊形式,这两若都可用确定技术 指标和为满足这些技术指标所需要的过采样率。为了得到彊佳的SNR.输入信号的动态范阳必须与参考电压(V“f) -致。如果我们假设最佳 情况下的输入信号是一个满度的正弦波,则它的有效值是¥点的函数:方程12.输入信号有效值是一个满度正弦波的函数用方程9対噪声功率进行计算.我们得到噪声功率冇效值为位数N (未进行过采样)的换数:方程13.噪声功率有

25、效值以羽表示的SNR计算如卜:V2ySNR = 20 -log( = 20 log()“o2 J2方程14. SNR是位数的函数的函数当使用过采样技术时.我们可以用仃效位数(ENOB)替换方程14屮的N。化简方程14并用 ENOB 换N我们得到卜而这个非常有名的结果(以分贝表示):SNR (dB) =(6.02*ENOB)+1.76其中ENOB是测壮的仃效位数方程15. SNR是ENOB的函数求均值增加直流测量的有效分辨率至此.我们考虎了対位某个勺用频带内伽)的信号的测兀 然而我们也町能测嵬一个相对 不变的直流信号(例如温度和应变仪输出)。如果我们希望测最一个相对不变的信号(即主耍频率 接近直

26、流),我们仍然可以用过采样和求均值技术改善有效分辨率2。测量静态电压的应用如果一个称觅装置必须测駅一个宽范围的重届而同时又耍能分辨很小的重帚变化.则过采样 和求均值能提高测最的有效分辨率。我们看另一个例子:ADC必须测最一个温度传感器的输出, 温度范别可能很大.但系统应用又耍响应温度的微小变化。过采样和求均值作为插补滤波器対ADC测吊数据求均伯等价一个降采样低妙滤波器(从图1)。宴现讨采样和低迹滤波器的 数宁信号处理过程通常被称为插补。从这个意义上说.我们用过采样实现两个12位ADC码Z间的 插值。求均值的样木数吊越人,则低通滤波器的选择性越强.插值的效果就越好。AN018-1.1 MAY01

27、13AN018 用过采样和求均值提高ADC分辨率附录B 过采样和求均值何时有效这部分讨论対J :一个给定应用确定过采样和求均值是否有效的准则。模/数转换过程引入噪声。过采样和求均值能减小菜些类型的噪声.因而提高SNR和数据转换 的冇效分辨率。并非所冇的W用都能从过采样和求均值受益。要理解哪吐ADC测鼠能从过采样技 术受益.我们必须理解给定系统中的噪声类型和特性。有效过采样的噪声要求过采样和求均值能改善SNR和提高模/数转换测最的仃效分辨率。但是这一技术只在ADC噪 声近似为白噪声的情况I、令效2 3o (111果输入信号在样本Z间随机变化,变化幅度与代码规模(1 LSB)接近.并J1输入信号在

28、两个相邻代码Z间仃相等的概率,则噪声可以被当作口噪丙处理。口 噪声的特点是在整个仃用频帯内八仃 致的功率谱密度 在噪川川以被近似为门噪声的情况K过 采样和求均值可以改善SNR和提高数据的有效分辨率。如果噪卅在总体上不是平稳的(例如,肉心在反馈fljJWf某种程度相关的系统),则过釆样和 求均值可能不会仃效.另外,如果量化噪声与白噪声源相近(即热噪声和散弹噪声与量化噪山相比 很小).则过采样和求均值可能不会冇效。在使用较低分辨率的ADC (例如8位ADC)时这种情 况比较典型。在这种情况H.热噪声没佇足够的幅度能引起输入信号以等概率在柑邻代码Z间随机 变化,因为代码宽度厶(方程5)太大。某些应用

29、会有意地在借号或处理过程中注入噪声以克服这 一效应,这种处理被成为抖动。直方图分析人女数使用12位ADC进彳j测彊的应用能从过采样和求均值技术屮获益。一个确定噪川特性是 否满足夏求的实用方法是用直方图分析ADC输出数据(见图5) 2直方图说明了在一个ADC 结果样本集中每个代码有多少个样木。如果输入信号是一个恒定的直流电压tl噪声为白噪声,则 该直方图将逼近一个高斯概率分布函数(PDF).如图5所示。代码为1024的“样本子集”中的 样本数最多。由于直方图逼近一个高斯PDF (图5中的蓝色虚线所示),噪声逼近白噪声因此该 系统可以用过采样和求均值技术提高性能。一个没有足够噪声幅度的系统(駅化噪

30、声除外)会导致宜方图中所白样本都向一个“样本子集” 或代码集中。在这样一个系统中.过釆样和求均值技术可能不会何帮助。如果噪声是相关的或ADC的传输曲数是卄线性的(例如电源噪声、INL很差等).则直方图 不能逼近一个高斯PDF (如图6所示)。在这种情况卜'过采样和求均值技术可能不会有帮助。简言Z,如果在ADC结果代码屮复介噪声源逼近白噪声,样木的伍方图将逼近一个高斯PDF, 过采样和求均值将改善SNR和提高信号测眾的冇效位数。在白噪声与宜流 输入信号混介的 的侑况下H方 图的形状遍近一 个岛斯PDF如虐 线所示1019 1020 1021 10221023102410251026 10

31、27 1028 1029样木数并Fl9输入仿号放接近的 样木了集1112位ADC码图5. ADC样本的直方图:混有白噪声的直流输入409512位ADC码图6对于过采样和求均值技术而言非最佳情况的ADC样本直方图AN018-1.1 NIAYOl15AN018 用过采样和求均值提高ADC分辨率AN018-1.1 NIAYOl17AN018 用过采样和求均值提高ADC分辨率附录C 示例代码/ AN018_SW.c/ Copyright 2001 Cygnal Integrated Productsz Inc./作者:BW/本程序以115.2kbps的波特率从硬件UART输出C8051Fxxx的基底温

32、度。假设在XTAL1 / 和 XTAL2 接一个 18.432MHz 的晶体。/ ADC被配置为测吊片内温度传感器。ADC的釆样频率由常qi:SAMPLE_RATE确定.以Hz/为单位.SAMPLE_RATE的绘大值被限制到-86kHz这是由所选择的18.432MHz品体/ 决定的(SARH寸钟=SYSCLK / 16 = 1.152MHz. 一次转换需耍 16 个 SAR H寸钟一一 72kHz /的采样速率。/ ADC转换结束中断处理程序从ADC取出样本值并将其加到一个运行累加器屮。毎过256个/样本ADC更新结果并将其存入全局变ffiresult屮。累加组数值并对其进行抽取(每/ 256

33、个样本输出一次结果)的采样技术被称为“累加和转储”。该过程很容易实现且需耍很少 /的资源。/对于4的每一次辅.你可以获得一位有效分辨率。/对于倍数256,你可以获得4位分辨率:4八4 - 256。/为了使结果定标在16位.要执行右移4位的操作。/ 目标:C8051F00XC8051F01X/ 工H链:KEIL C51 6.03 / KEIL C51 评估版/包侖的文件/ SFR声明#include <stdio.h>#include <c8051f000.h>AN018-1.1 NIAYOl#AN018 用过采样和求均值提高ADC分辨率/ FOOx FOlx 16 位

34、SFR 定义/sfrl6DP 0x82;/数据指针sf r 16TMR3RL=0x92;/定时器3重载值sf rl6TMR3=0x94;/定时器3计数器sf rl6ADCO=Oxbe;/ADC0数据sfrl6ADCOGT 0xc4;/ADC0卜限窗1丨sf rl6ADCOLT=0xc6;/ADC0上限窗口sf r 16RCAP2=Oxca;/定时器2捕捉/重载sf r 16T2=Oxcc;/定时器2sfrl6DACO 0xd2;/DAC0数据sf rl6DAC1=0xd5;/DAC1数据/全局常鼠/#define SYSCLK#define BAUDRATE184320001152001000

35、00/ SYSCLK 频率(Hz)/ UART 波特率(bps)/采样频率(Hz)#defineSAMPLE_RATE#defineLEDPl.6/LED=1农爪壳/两数原型/ void SYSCLK_Init (void);void PORT_Init (void);void UART_Init (void);void ADC_Init (void);void TIMER3_Init (int counts);void ADC_ISR (void);/全局变最/long result;/对于16位测量,用A DC进行过采样和对256 /个样木求均值后的输出结果./主程序/void main

36、(void) long temp_copy; int temp_int; int temp_frac;温度的整数部分温度的小数部分(以白分Z度为单位)WDTCN Oxde;WDTCN = Oxad;禁止看门狗定时器SYSCLK_Init ();PORT_Init ();UART_Init ();TIMER3_Init (SYSCLK/SAMPLE_RATE);ADC_Init ();初始化振荡器初始化交叉开关和GPIO初始化UART初始化定时器3以采样速率溢出初始化ADCADCEN = 1;允许ADCresult = 0L初始化温度变届EA = 1;允许全局屮断while (1)temp_co

37、py = result;temp_copy 一= 0xa381; temp_copy *= 0x01a9; temp_copy *= 100;temp_copy = temp_copy >> 16; temp_int = temp_copy / 100; temp_frac = temp_copy 一 (100取最新的ADC结果.将ADC代码转换为 温度将偏移駅校正为0度对应0V2.8 6mV/摄氏度将结杲转换成白分Z摄氏度 除以2A16分离整数和小数部分/temp_int);printf ("Temperature is %d.%dnn9 (int) temp_int9

38、 (int) temp_frac);/初始化子程序/ SYSCLK_Init/本程序将系统时钟初始化为使用18.432MHz晶体作为时钟源。/void SYSCLK_Init (void)int i;OSCXCN = 0x67;for (i-0; i < 256; i+);while (!(OSCXCN & 0x80);OSCICN 0x88;/延时计数器/启动便用18.432MHz晶体的外部振荡器/ XTLVLD 等待时间(>lms)/等待品体振荡器稳定/选择外部振荡器为SYSCLK源并允许时钟丢失/检测器/ PORT_Init/配置交叉开关和GPIO端1丨void PO

39、RT_Init (void)XBROXBR1XBR20x07;=0x00;=0x40;PRT0CFPRT1CF |= 0x40;/ 允许 T2C- SPI 和 UART/允许交叉开关和弱上拉/允许P0的所有输出为推挽方式;/让交叉开关将引脚配置为输入/允许Pl6 (LED)为推挽输出/ PORT_Init/AN018-1.1 NIAY0121AN018 用过采样和求均值提高ADC分辨率/配E UART使用定时器1产生波特率baudrate及8-N-1的帧格式/void UART_Init (void)SCCN 0x50;TMCD=0x20;TH1=一(SYSCLK/BAUDRATE/16);TRI=1;CKCONI- 0x10;PCON1= 0x80;TI=1;/ SCON:方式 1, 8 位 UART,允许 RX / TMOD:定时器方式2, 8位硕装栽 /根据波特率设置定时器1朿我值/启动定时器1/定时器1使用sysclk作为时甚/ SMOD = 1/指示TX准备好AN018-1.1 NIAY01#AN018 用过采样和求均值提高ADC分辨率AN018-1.1 NIAY01#AN018 用过采样和求均值提高ADC分辨率ADCOCN = 0x04;REFOCN - 0x07;AMXOSL = OxOf;ADCOCF 0x61;EIE2 |= 0x02;/允许ADC

温馨提示

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

评论

0/150

提交评论