模拟数字转换器的使用_第1页
模拟数字转换器的使用_第2页
模拟数字转换器的使用_第3页
模拟数字转换器的使用_第4页
模拟数字转换器的使用_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1第9章模拟/数字转换器的使用模拟信号采集与回放电路的设计目标通过本章的学习,应掌握以下知识斜坡型(计数型)模拟/数字转换器的工作原理逐次逼近型模拟/数字转换器(SUCCESSIVEAPPROXIMATIONADC,SAC)的工作原理MSP430G2XX芯片内部的模拟/数字转换模块(ADC10)模拟/数字转换中的采样保持过程实际模拟/数字转换关系的非理想MSP430F2XX芯片内部的模拟/数字转换模块(ADC12)引言模拟/数字转换器是对模拟信号进行数字化处理所需要的另外一种接口。使用模拟/数字转换器能够将幅度连续、时间连续的模拟信号,转换为幅度离散、时间离散的数字信号,建立起模拟信号数字化处理的基础。相对基于运算放大器实现数字/模拟转换器的工作原理,模拟/数字转换器的工作原理比较复杂。虽然微控制器芯片对其外围模块的控制都是通过访问相关寄存器来实现,但是了解具体电路的工作过程将能够更加清晰地理解不同的寄存器配置条件下的工作特点,更好地使用这些外围模块。MSP430系列微控制器中包含模拟/数字转换模块具有多种类型,而且具有不同的技术指标。本章分别介绍包含在MSP430G2231芯片内部,具有10位分辨率的模拟/数字转换模块(ADC10);以及包含在MSP430F2619芯片内部,具有12位分辨率的模拟/数字转换模块(ADC12)。如果使用MSP430F2619微控制器芯片,使用12位分辨率模拟/数字转换模块(ADC12)将能够把信号产生器输出的正弦信号转换为对应的数字信号,使用上一章学习的数字/模拟转换模块(DAC12)将能够把数字信号转换为模拟信号。通过示波器观察数字/模拟转换模块(DAC12)输出的信号波形,这时将可以发现恢复的正弦信号波形是由许多小台阶所组成。提高信号产生器输出正弦信号的频率,将可以发现波形失真加大,直到波形变得杂乱无章;继续提高信号产生器输出正弦信号的频率,将会发现在一些频率点上,示波器又将出现一个完整的正弦信号波形。291模拟/数字转换器的工作原理MSP430系列微控制器中的模拟/数字转换器涉及多种类型、且具有不同的技术指标。例如MSP430G2231芯片具有10位分辨率的模拟/数字转换模块(ADC10),MSP430F2619芯片具有12位分辨率的模拟/数字转换模块(ADC12),有的芯片还具有24位分辨率的模拟/数字转换模块。本节介绍模拟/数字转换器的基本工作过程,以便了解决定其性能的因素。图91为MSP430G2231芯片和MSP430F2619芯片中的模拟/数字转换模块的工作原理图。这种类型的模拟/数字转换器把数字/模拟转换器(DAC)作为其电路的组成部分。10运放比较器输入模拟电压VAVAXDAC计数器控制电路数字量模拟/数字转换结果启动信号时钟信号转换结束信号图91模拟/数字转换器的工作原理图完成模拟/数字转换过程需要一个“启动信号”来触发转换电路进行初始化。这个初始化使图中的“计数器”输出的“数字量”为全零,使得图中的“DAC”输出模拟电压VAX为0V,这样模拟电压VAX将小于输入模拟电压VA,因此图中“比较器”将输出高电平。当“比较器”输出高电平,控制电路将在“时钟信号”的驱动下不断修正“计数器”输出的“数字量”。最简单的“数字量”修正方式为每来一个时钟脉冲其内容加1。“计数器”输出的“数字量”不断进行地加1操作,使得模拟电压VAX不断地增加。模拟电压VAX小于输入模拟电压VA时,“比较器”将输出高电平;模拟电压VAX大于输入模拟电压VA时,“比较器”将输出低电平。一旦“比较器”输出为低电平,“计数器”输出的“数字量”将停止变化,同时控制电路输出“转换结束信号”。这时就可以读取由“计数器”输出的“模拟/数字转换结果”。如果“计数器”输出“数字量”的变化方式为每来一个时钟脉冲其内容加1,直到DAC输出的模拟电压VAX大于输入模拟电压VA,这样模拟电压VAX的波形形状为斜波,因此称此类型模拟/数字转换器为斜坡型模拟/数字转换器,也称为计数型模拟/数字转换器。输入模拟电压VA的比较基准VAX是一个准模拟电压,因为VAX是数字/模拟转换器的输出电压。输入模拟电压VA能够在从0V到满量程之间取无数多个数值,数字/模拟转换器的输出电压VAX只能取有限数量的离散值,这就意味着小范围变化的输入模拟电压VA的转换结果可能是相同的。内部“DAC”的分辨率决定了这种模拟/数字转换器的分辨率。3斜坡型模拟/数字转换器转换时间不确定,输入模拟电压VA越大,完成转换所需要的时间越长。如果输入模拟电压VA刚好低于满刻度电压将会出现最大转换时间,即“计数器”输出“数字量”到最后一步才能结束转换过程。对于一个N位分辨率的斜坡型模拟/数字转换器,最大转换时间可以由下式计算。TC(MAX)(2N1)时钟周期(91)对于一个10位分辨率的模拟/数字转换器,如果时钟信号的周期为1US,这时TC(MAX)(2101)1US1023US斜坡型模拟/数字转换器工作速度低,但是利用它非常容易说明模拟/数字转换器的工作原理。MSP430G2231芯片和MSP430F2619芯片内部采用逐次逼近型模拟/数字转换器(SUCCESSIVEAPPROXIMATIONADC,SAC)来提高转换速度。它的“计数器”输出“数字量”的修正采用逐位修改。图92给出一个4位这种类型模拟/数字转换器的原理图和时序图。运放去控制电路来自控制电路寄存器Q3Q2Q1Q0DACVAXVA104V0VAV12111098TT1T0T2T3T4T5T6T7T8T9图92逐次逼近型模拟/数字转换器的工作原理图在图92中,设DAC的步长为1V,这样输入4位数据的权值分别为8V、4V、2V和1V;再假设输入待转换的模拟电压VA104V。在T0时刻转换过程开始,寄存器输出清零,即Q3Q2Q1Q00,表示为Q0000。这使得VAX0V,由于VAXVA,这时比较器输出将变为低电平。由于比较器输出为低电平,在T5时刻,控制信号使得寄存器的Q2清零,这时Q1000,这使得VAX8V。在T6时刻,控制信号使得寄存器的Q1置位,这时Q1010。这使得VAX10V,由于VAXVA,因此比较器输出为低电平。由于比较器输出为低电平,在T9时刻,控制信号使得寄存器的Q0清零,这时Q1010。这使得VAX10V。到此时,转换结束,转换结果为1010。逐次逼近型模拟/数字转换器的控制电路逐个将寄存器的每1位置位,并判断该位是4否应该置位。这样它比起斜坡型模拟/数字转换器每次仅加1的过程需要的时间小得多,而且转换时间固定,但是逐次逼近型模拟/数字转换器内部控制电路要复杂得多。模拟/数字转换器还有其它的类型。例如并行比较型在1个时钟周期就可以完成转换,但是电路更复杂;积分型的精度高,且抗干扰能力强,但是转换速度慢;/调制型电路复杂,但是可以获得高的精度,一些MSP430X2XX芯片包含这种类型的模拟/数字转换器,在数据手册中被称为SD16,或者SD24,分别具有16,或者24位分辨率。92模拟/数字转换模块(ADC10)921模拟/数字转换模块(ADC10)MSP430G2231芯片内部包含10位模拟/数字转换模块(ADC10)。该模块的工作原理属于逐次逼近型模拟/数字转换器(SAC),具有10位分辨率和200KSPS的转换速率。模拟/数字转换模块(ADC10)的组成方框图如图93所示。5图93模拟/数字转换模块(ADC10)的组成方框图图93所示的方框图用于说明MSP430G2XX系列芯片的模拟/数字转换模块(ADC10)的工作,该系列不同型号的芯片可能会存在着一些差异。通过多个通道,多个准备转换的模拟电压能够进入模拟/数字转换模块(ADC10)。图中的模拟电压输入通道A0A7、A12A15分别可以与芯片的管脚相连接,模拟输入电压还包括芯片电源AVCC以及芯片内部温度传感器的输出电压。对于MSP430G2231芯片,A0A7分别对应芯片管脚P10P17,A12A15没有对应的芯片管脚。所有的输入模拟电压通过多路选择开关共用一个模拟/数字转换器,因此1次只能完成1路模拟电压的转换,不过具有多个模拟电压输入管脚可以为电路板的设计提供方便。在信号“INCHX”的控制下,多路选择开关选择1个通道的模拟电压进行采样。信号“CONSEQX”能够实现对所有模拟输入电压的进一步的控制,控制内容包括完成一个通道输入电压的一次转换、按照通道的顺序完成数个通道输入电压的一次转换、一个通道输入电压的重复转换以及按照通道的顺序完成数个通道输入电压的重复转换。通过多路选择开关的模拟电压将进入采样保持电路“SAMPLEANDHOLD”,这里将幅度连续、时间连续的模拟电压转换为幅度连续、时间离散的信号。采样保持电路“SAMPLEANDHOLD”和模拟/数字转换器“10BITSAR”共用一个时钟信号。时钟信号源可以是模拟/数字转换模块(ADC10)内部时钟信号源“ADC10OSC”,也可以是MSP430芯片的系统时钟信号ACLK、MCLK或者SMCLK。4种时钟信号源的选择通过信号“ADC10SSELX”实现。内部时钟信号源ADC10OSC属于RC振荡器,工作频率约6MHZ,具体工作频率参考芯片的技术手册,也可以通过输出管脚ADC10CLK进行测量。时钟信号还能够利用分频电路“DIVIDER/1/8”,在信号“ADC10DIVX”控制下,实现直接通过,或者从2到8的分频。采样触发信号为图中信号“SHI”的上升边沿。触发源可以是ADC10控制寄存器0(ADC10CTL0)的位ADC10SC、定时器A(TIMERA)的捕捉/比较模块1(CCR1)的输出、定时器A(TIMERA)的捕捉/比较模块0(CCR0)的输出,或者定时器A(TIMERA)的捕捉/比较模块2(CCR2)的输出。信号“SHSX”完成采样触发信号的选择。信号“ENC”使能选择的采样触发信号,即使能模拟/数字转换模块(ADC10)的工作。信号“ISSH”能够实现采样触发信号的上升沿触发,或者下降沿触发。信号“SHI”的上升边沿触发采样计数器“SAMPLETIMER”的计数工作。在信号“ADC10SHTX”的控制下,这个计数器实现对时钟ADC10CLK,范围为4、8、16或者64的计数过程。在计数过程中,信号“SAMPCON”保持高电平;完成计数后,该信号为低电平。信号“SAMPCON”处于高电平状态,采样保持电路“SAMPLEANDHOLD”对输入的模拟电压进行采样;信号“SAMPCON”处于低电平状态,采样保持电路“SAMPLEANDHOLD”维持采样电压的数值。采样保持过程的等效电路如图94所示。6MSP430AXPXXRSVSRMUXVPINCSAMPLE保持采样采样保持开关比较器运放图94采样保持过程的等效电路图图中的VS和RS为准备进行模拟/数字转换的模拟信号等效电路,VPIN为施加到MSP430芯片管脚的模拟电压值。RMUX为包括多路开关导通电阻在内的芯片内部电阻,CSAMPLE为采样电容。采样时,“采样保持开关”置“采样”位置,模拟电压向采样电容CSAMPLE充电;采样结束以后,“采样保持开关”置“保持”位置,由于运算放大器具有非常高的输入电阻,因此采样电容CSAMPLE上的电压在后面的工作期间可以维持不变。即使不考虑信号源内阻RS的影响,芯片内部电阻RMUX(数据手册给出它的最大值为2K),采样电容CSAMPLE(数据手册给出它的最大值为27PF)组成的RC电路中电容的充电需要一定的时间。信号“SAMPCON”持续时间的可控制为用户在转换结果的精确与转换速率之间提供了选择的可能。采样过程结束以后,即信号“SAMPCON”变为低电平,模拟/数字转换器“10BITSAR”的转换过程将启动。这个过程需要13个时钟ADC10CLK周期的固定时间。时钟ADC10CLK存在一个最高频率,这需要参考芯片的数据手册。“DIVIDER/1/8”分频电路可以用来降低时钟源的输出频率。模拟/数字转换器“10BITSAR”属于逐次逼近型模拟/数字转换器(SAC),它的工作原理图如图92所示。转换获得的数字量来源于待转换的模拟电压与一个数字/模拟转换器输出电压进行比较的结果,模拟/数字转换器“10BITSAR”上的连接端“VR”和“VR”为这个数字/模拟转换器的参考电压输入端。参考电压接线端“VR”可以在模拟地“AVSS”与参考电源地“VREF/VEREF”之间选择。参考电压接线端“VR”可以在模拟电源“AVCC”、内部参考电源“VREF”、外部参考电源“VEREF”以及经过缓冲电路以后的外部参考电源之间进行选择。信号“SREFX”实现上述各种选择。模拟/数字转换模块(ADC10)内部包含参考电压源“15VOR25VREFERENCE”。参考电压源可以提供2种参考电压,15V或者25V,输出电压的选择通过信号“2_5V”实现。信号“REFON”用来控制这个内部参考电压源工作与否,在不使用这个参考电压源的情况下,停止它的工作可以降低芯片的功耗。信号“REFBURST”能够使得参考源仅在模拟/数字转换过程中激活。这个参考电压也可以通过管脚送出芯片,供其它器件使用。模拟/数字转换器“10BITSAR”将模拟电压转换为数字量,输出具有2种格式,普通2进制格式,或者2进制补码格式。式(92)为采用普通2进制格式时的输出数字量与输入模拟电压的关系式。NADC1023(VINVR)/(VRVR)(92)7数字量的满刻度值为0X3FF。信号“ADC10ON”用来打开,或者停止模拟/数字转换器“10BITSAR”的工作。信号“BUSY”用来显示模拟/数字转换的进行过程是否结束。模拟/数字转换结果被存储在寄存器“ADC10MEM”。模块“DATATRANSFERCONTROLLER”用来自动地将模拟/数字转换结果存储在MSP430芯片的存储器之中。当完成相关的设置以后,转换结果的存储不需要CPU的干预,这样可以提高数据传输速率,间接地加快了对模拟电压的采样速率。模拟/数字转换模块也提供中断能力。当完成模拟/数字转换过程,相应的中断标志将置位。即使不使用这个中断功用,利用这个标志也可以判断数字/模拟转换过程是否完成。MSP430系列微控制器的开发软件中,模拟/数字转换模块的中断矢量名称为“ADC10_VECTOR”。922模拟/数字转换模块(ADC10)的寄存器模拟/数字转换模块(ADC10)的寄存器分为3类。第一类为控制模拟/数字转换工作的寄存器,包括ADC10输入使能寄存器0和1,ADC10AE0和ADC10AE1,ADC10控制寄存器0和1,ADC10CTL0和ADC10CTL1;第二类为存储模拟/数字转换结果的寄存器,ADC10MEM;第三类涉及模拟/数字转换结果的传输,包括ADC10数据传输控制寄存器0和1,ADC10DTC0和ADC10DTC1,数据传输起始地址寄存器,ADC10SA。本小节只讨论模拟/数字转换模块(ADC10)的寄存器前两类中每一位的功能,这些功能已经足够满足通常的需要。第三类寄存器涉及如何将模拟/数字转换的结果直接存储到数据存储器,不需要通过CPU以加快数据的采样率。作为一本入门级书籍,为了突出重点,同时减少篇幅,这里不涉及这部分内容。有兴趣的读者可以参考TI公司提供的“MSP430X2XXFAMILYUSERSGUIDE”的相关内容。ADC10输入使能寄存器0(ADC10AE0)位70位名称ADC10AE0X操作方式RW复位值00000000ADC10AE0XBIT7BIT0,模拟输入管脚使能位。0不使能1使能BIT0对应模拟电压输入管脚A0,BIT1对应模拟电压输入管脚A1,其它依次类推。ADC10输入使能寄存器1(ADC10AE1)位7430位名称ADC10AE1XRESERVED8操作方式RWRW复位值00000000ADC10AE1XBIT7BIT4,模拟输入管脚使能位。0不使能1使能BIT4对应模拟电压输入管脚A12,BIT5对应模拟电压输入管脚A13,BIT6对应模拟电压输入管脚A14,BIT7对应模拟电压输入管脚A15。RESERVEDBIT3BIT0,当前没有使用,保留。MSP430G2231芯片由于没有对应的管脚,因此不存在这个寄存器(ADC10AE1)。ADC10控制寄存器0(ADC10CTL0)位151312,111098位名称SREFXADC10SHTXADC10SRREFOUTREFBURST操作方式RWRWRWRWRW复位值00000000位76543210位名称MSCREF2_5VREFONADC10ONADC10IEADC10IFGENCADC10SC操作方式RWRWRWRWRWRWRWRW复位值00000000注意ADC10控制寄存器0(ADC10CTL0)中有阴影位的调整必须在该寄存器的位ENC状态为0的情况下才能进行。SREFX参考电源选择控制位BIT15BIT14BIT13SREF2SREF1SREF0000VRVCCVRVSS001VRVREFVRVSS010VRVEREFVRVSS011VR缓冲VEREFVRVSS100VRVCCVRVREF/VEREF101VRVREFVRVREF/VEREF110VRVEREFVRVREF/VEREF111VR缓冲VEREFVRVREF/VEREFADC10SHX采样保持时间选择控制位BIT14BIT13ADC10SHT1ADC10SHT09004个ADC10CLK持续时间018个ADC10CLK持续时间1016个ADC10CLK持续时间1164个ADC10CLK持续时间ADC10SR采样速率选择控制位0最高200KSPS1最高50KSPSREFOUT参考源输出控制位0关闭1打开REFBURST参考源间断输出控制位0参考源缓冲电路连续工作1参考源缓冲电路仅在模拟/数字转换的过程时工作MSC进行多次模拟/数字转换控制位0每次模拟/数字转换需要触发1仅第1次模拟/数字转换需要触发该位的功能仅在顺序通道,或者重复模拟/数字转换模式下才有效。REF2_5V内部参考源输出电压选择控制位015V125VREFON参考源工作控制位0关闭1打开ADC10ON模拟/数字转换模块(ADC10)工作控制位0关闭1打开ADC10IE模拟/数字转换模块(ADC10)中断使能控制位0不使能1使能ADC10IFG模拟/数字转换模块(ADC10)中断标志0无中断申请1有中断申请当完成模拟/数字转换模块(ADC10)中断服务程序,该位可以自动清零,也可以由用户软件清零。ENC模拟/数字转换模块(ADC10)转换使能控制位0不使能101使能ADC10控制寄存器0(ADC10CTL0)和ADC10控制寄存器1(ADC10CTL1)中有阴影的位的调整必须在位ENC状态为0的情况下才能进行。ADC10SC模拟/数字转换模块(ADC10)转换启动控制位0不启动1启动用户软件置位该位将启动模拟/数字转换模块(ADC10)的工作。该位可以自动清零,也可以由用户软件清零。ADC10控制寄存器1(ADC10CTL1)位151211,1098位名称INCHXSHSXADC10DFISSH操作方式RWRWRWRW复位值00000000位754,32,10位名称ADC10DIVXADC10SSELXCONSEQXADC10BUSY操作方式RWRWRWR复位值00000000注意ADC10控制寄存器1(ADC10CTL1)中有阴影位的调整必须在ADC10控制寄存器0(ADC10CTL0)的位ENC状态为0的情况下才能进行。INCHX模拟电压输入通道选择控制位BIT15BIT14BIT13BIT12INCH3INCH2INCH1INCH00000A00001A10010A20011A30100A40101A50110A60111A71000VEREF1001VREF/VEREF111010芯片内部温度传感器1011(VCCVSS)/21100(VCCVSS)/2或者A121101(VCCVSS)/2或者A131110(VCCVSS)/2或者A141111(VCCVSS)/2或者A15SHSX采样保持电路触发信号选择控制位BIT11BIT10SHS1SHS000ADC10CTL0的位ADC10SC置位01定时器A(TIMERA)的捕捉/比较模块1(CCR1)输出10定时器A(TIMERA)的捕捉/比较模块0(CCR0)输出11定时器A(TIMERA)的捕捉/比较模块2(CCR2)输出ADC10DF模拟/数据转换器输出数据格式控制位0普通2进制数据格式12进制补码数据格式ISSH采样保持电路触发信号反相控制位0不反相1反相ADC10DIVX模拟/数字转换电路时钟分频选择控制位BIT7BIT6BIT5ADC10DIV2ADC10DIV1ADC10DIV000010012010301141005101611071118ADC10SSELX模拟/数字转换电路时钟信号源选择控制位BIT4BIT3ADC10SSEL1ADC10SSEL000ADC10OSC01ACLK10MCLK11SMCLK12CONSEQX转换顺序模式选择控制位BIT11BIT10CONSEQ1CONSEQ000单通道,单次01顺序通道,单次10单通道,重复11顺序通道,重复ADC10BUSY模拟/数字转换模块(ADC10)忙标志,该位置位表示转换正在进行中0不工作1正在工作93模拟/数字转换模块(ADC10)检查程序程序示例91可以用来检查模拟/数字转换模块(ADC10)的工作情况。这里通过管脚P10(A0)引入被转换的模拟电压。注意,这个模拟电压的范围为0到参考电压之间。这个模拟电压可以利用1个具有3个接线端的电位器来产生。电位器的两个固定接线端将分别与MSP430芯片的电源端和接地端相连接,可变电阻端输出模拟电压。电位器的阻值推荐值为10K,使用三用表监视输入模拟电压数值。程序示例91/程序名称ADC10_EXAMINE/程序功能模拟/数字转换模块ADC10检测程序/使用芯片MSP430G223114N/模拟电压输入管脚P10/A0(PIN2)/模拟/数字转换的结果使用数码管显示INCLUDE/包含名称定义和对应地址或数据的头函数VOIDDELAY_1SVOID/声明1S延迟函数VOIDSEG7_1MSUNSIGNEDCHARSEG7_DATA/声明驱动1位数码管的驱动函数VOIDSEG7_3MSUNSIGNEDCHARSEG7_DATA2,UNSIGNEDCHARSEG7_DATA1,UNSIGNEDCHARSEG7_DATA0/声明驱动3位数码管的驱动函数CONSTUNSIGNEDCHARDECODER_SEG718/声明显示代码0XEE,0X82,0XDC,0XD6,0XB2,0X76,0X7E,0XC2,0XFE,0XF6,0XDE,0X3E,0X6C,0X9E,0X7C,0X78,0X00,0XFF/共阴极数码管显示代码VOIDADC10_BEGINVOID/声明ADC10配置函数VOIDMAINVOID/主函数13UNSIGNEDINTDATA_ADC10/声明模拟/数字转换结果存储变量UNSIGNEDCHARDATA_SEG7_2,DATA_SEG7_1,DATA_SEG7_0/声明每一位数据显示变量WDTCTLWDTPWWDTHOLD/关闭看门狗P1SEL/设置P17和P16管脚为数字输入/输出管脚P1DIR|0XC0/设置P17和P16管脚为输出管脚ADC10_BEGIN/ADC10配置WHILE1/重复执行ADC10CTL0|ADC10SC/ADC转换软件启动控制位使能WHILEADC10CTL1/等模拟/数字转换结束DATA_ADC10ADC10MEM/读取转换结果DATA_SEG7_0DATA_ADC10DATA_SEG7_1DATA_ADC10DATA_SEG7_2DATA_ADC10SEG7_3MSDATA_SEG7_2,DATA_SEG7_1,DATA_SEG7_0DELAY_1S/延时VOIDADC10_BEGINVOID/ADC10配置函数/配置ADC10模块模拟电压输入管脚P1SEL|BIT0/设置P10管脚为外围模块输入/输出管脚P1DIR/设置P10管脚为输入管脚/ADC10模块相关寄存器配置ADC10CTL0/调整ADC10CTLX,位ENC必须清零ADC10AE0|BIT0/使能A0通道转换ADC10CTL0|SREF_1/参考电压选择VRVREFVRVSSADC10CTL0|ADC10SHT_0/采样保持时间选择4ADC10CLKADC10CTL0|ADC10SR/采样速率选择50KSPSADC10CTL0|REFOUT/参考电源输出打开ADC10CTL0/参考电源连续工作ADC10CTL0/每次转换都需要触发14ADC10CTL0|REF2_5V/内部参考电压选择25VADC10CTL0|REFON/内部参考电源打开ADC10CTL0|ADC10ON/ADC10模块打开ADC10CTL0/不使能ADC10模块中断ADC10CTL1|INCH_0/模拟电压输入通道选择A0ADC10CTL1|SHS_0/采样触发信号选择ADC10SC/ADC10CTL0ADC10CTL1/ADC10模块输出数据格式选择线性二进制ADC10CTL1/采样保持电路触发信号不反相ADC10CTL1|ADC10DIV_0/ADC10CLK时钟源分频选择1ADC10CTL1|ADC10SSEL_2/ADC10CLK时钟源选择MCLKADC10CTL1|CONSEQ_0/转换模式选择单通道,单次ADC10CTL0|ENC/ADC10模块使能在程序示例91中,模拟/数字转换模块(ADC10)的配置使用函数VOIDADC10_BEGINVOID/ADC10配置函数来实现。使用函数可以简化主函数的结构。这个函数内部对涉及的3个寄存器的每种功能分别进行配置,这样既能加深对相关内容的理解,也方便将这部分内容用于其它地方。类似于前面出现的程序示例,程序示例91只声明了需要使用的函数,除过模拟/数字转换模块(ADC10)的配置函数,其它函数的原型并没有写出。主函数在完成所有配置工作以后,重复进行对A0模拟电压输入通道(P10)输入的模拟电压完成模拟/数字转换、显示转换结果。模拟/数字转换工作的启动通过置位ADC10控制寄存器0(ADC10CTL0)的位ADC10SC来实现。完成模拟/数字转换工作的启动以后,位ADC10SC能够自动清零,因此程序中不需要完成该位清零的语句。模拟信号的采样以及到数字量的转换需要一段时间,循环语句WHILEADC10CTL1/等模拟/数字转换结束通过检测ADC10控制寄存器1(ADC10CTL1)位BUSY的状态来判断模拟/数字转换工作是否完成。在包括采样、模拟/数字转换的整个过程中,位BUSY置位,因此程序重复执行这条语句,等待过程的结束。转换过程完成以后,位BUSY自动清零,循环语句结束执行。当模拟/数字转换工作完成以后,从模拟/数字转换模块(ADC10)的转换结果寄存器ADC10MEM就能够自动获得转换结果。使用程序示例91,MSP430G2231芯片模拟/数字转换模块(ADC10)的测量结果如表91所示。表91模拟/数字转换模块(ADC10)的测量结果输入模拟电压(V)理想转换结果实际转换结果0000X0000X0000100X0280X02F0200X0510X055151500X2650X25E1600X28E0X2871700X2B70X2B02300X3AD0X3A12400X3D60X3C92500X3FF0X3F1理想转换结果由三用表测量得芯片管脚P10的模拟电压值,通过下式计算获得NADC1023VIN/25(93)当输入模拟电压大于25V,转换结果将保持0X3FF数值不变。测量结果显示,实际转换结果与理想数值之间存在误差。模拟/数字转换特性不是线性,当输入模拟电压较小时,实际转换结果大于理想转换结果;当输入模拟电压较大时,实际转换结果小于理想转换结果。94模拟/数字转换模块(ADC12)941模拟/数字转换模块(ADC12)MSP430F2619芯片内部包含模拟/数字转换模块(ADC12)。该模块的工作原理也属于逐次逼近型模拟/数字转换器(SAC),也具有200KSPS的转换速率,但是它具有12位分辨率。模拟/数字转换模块(ADC12)的组成方框图如图95所示。16图95模拟/数字转换模块(ADC12)的组成方框图由于都是采用逐次逼近型模拟/数字转换器(SAC),模拟/数字转换模块(ADC12)与模拟/数字转换模块(ADC10)的组成基本相同,但是仍然存在一些差别。图中的模拟电压输入通道A0A7分别可以与芯片的管脚相连接,模拟输入电压还包括芯片电源AVCC以及芯片内部温度传感器的输出电压。通道A12A15现在不存在,对应的多路选择器触点直接与芯片接地(GND)相连接。在信号“INCHX”的控制下,多路选择开关选择1个通道的模拟电压进行采样。虽然没有画在一起,信号“CONSEQX”仍然用来实现单次单通道、单次顺序通道、重复单通道和重复顺序通道这样的通道转换模式的选择。采样保持电路“SAMPLEANDHOLD”和模拟/数字转换器“12BITSAR”仍然共用一个时钟信号“ADC12CLK”。时钟信号源同样还是模拟/数字转换模块内部时钟信号源“ADC10OSC”、MSP430芯片的系统时钟信号ACLK、MCLK或者SMCLK,并通过信号“ADC12SSELX”实现信号源的选择。为满足对时钟频率数值的要求,被选中的时钟信号利用分频电路“DIVIDER/1/8”,在信号“ADC12DIVX”控制下,实现直接通过,或17者从2到8的分频。采样触发信号源有一些改变,仍然使用ADC12控制寄存器0(ADC12CTL0)的位ADC12SC,或者定时器A(TIMERA)的捕捉/比较模块1(CCR1)的输出,更换使用了定时器B(TIMERB)的捕捉/比较模块0(CCR0)的输出,或者定时器B(TIMERB)的捕捉/比较模块2(CCR2)的输出。信号“SHSX”完成采样触发信号的选择。信号“ENC”使能选择的采样触发信号,即使能模拟/数字转换模块(ADC12)的工作。信号“ISSH”能够实现采样触发信号的同相输出,或者反相输出。信号“SHI”的上升边沿用来触发计数器“SAMPLETIMER”的计数工作,在规定范围内进行计数的过程中,它输出高电平信号;计数结束后,它则输出一个低电平信号。输出为高电平时,模拟信号被采样;输出为低电平时,采样信号被保持,这个期间完成模拟电压到数字量的转换。信号“SHI”也可以直接控制采样过程,同样在这个信号处于高电平期间进行采样。直接使用信号“SHI”控制采样过程使得程序设计者能够通过控制信号“SHI”高电平持续时间来控制采样时间,信号“SHI”的下降沿将触发转换过程,转换过程自动使用时钟信号“ADC12CLK”。采样计数器“SAMPLETIMER”以信号“ADC12CLK”为计数时钟,在信号“SHTX”的控制下,实现范围为41024的计数过程。采用更长时间的计数过程是由于现在的满量程电压分辨率从1/1023上升到1/4095,采样电容需要被充电到更接近实际的模拟电压数值,因此需要更多的时间。模拟/数字转换模块(ADC12)内部也包含参考电压源“15VOR25VREFERENCE”。这个参考电压源的使用与模拟/数字转换模块(ADC10)内部参考电压源的使用方法相同,但是这里推荐在参考电源输出管脚VREF和模拟地管脚AVSS之间添加一个10UF和一个01UF的并联电容,因为现在由于分辨率提高使得电路对干扰更加敏感。模拟/数字转换器“12BITSAR”将模拟电压转换为数字量。模拟/数字转换模块(ADC12)提供了16个缓冲存储器ADC12MEM0ADC12MEM15,它们分别具有各自的控制寄存器ADC10CTLX,由此能够配置缓冲存储器存储的转换结果。模拟/数字转换模块(ADC12)的中断矢量,ADC12_VECTOR,为该模块的18个中断信号源所共同使用。这些中断信号源就包括向任何一个缓冲存储器,ADC12MEM0ADC12MEM15,写入数据所产生的中断信号。为利用一个中断矢量服务众多的中断信号源,模块具有一个专门的寄存器,中断矢量寄存器(ADC12IV)。942模拟/数字转换模块(ADC12)的寄存器模拟/数字转换模块(ADC12)的寄存器也分为3类。第一类为控制模拟/数字转换工作的寄存器,包括ADC12控制寄存器0和1,ADC10CTL2和ADC12CTL1;第二类为存储模拟/数字转换结果的寄存器和对应的控制寄存器,ADC12MEMX和ADC12MCTLX,这里的X的取值范围为015;第三类涉及中断的寄存器,包括ADC12中断使能寄存器,ADC12IE,中断标志寄存器,ADC12IFG,中断矢量寄存器,ADC12IV,。18ADC12控制寄存器0(ADC12CTL0)位1512118位名称SHT1XSHT0X操作方式RWRW复位值00000000位76543210位名称MSCREF2_5VREFONADC12ONADC12OVIEADC12TOVIEENCADC10SC操作方式RWRWRWRWRWRWRWRW复位值00000000注意ADC12控制寄存器0(ADC12CTL0)中有阴影的位的调整必须在该寄存器的位ENC状态为0的情况下才能进行。SHT1X和SHT0X用来选择采样时间,单位为ADC12CLK的周期。其中SHT1X用来控制缓冲存储器ADC12MEM8ADC12MEM15对应的模拟电压对应的采样时间;SHT0X用来控制缓冲存储器ADC12MEM0ADC12MEM7对应的模拟电压对应的采样时间。SHT1X和SHT0X的取值对应的采样时间如表92所示。表92SHT1X和SHT0X的取值对应的采样时间SHT1X和SHT0XADC12CLKSHT1X和SHT0XADC12CLK000041000256000181001384001016101051200113210117680100641100102401019611011024011012811101024011119211111024MSC进行多次模拟/数字转换控制位0每次模拟/数字转换需要触发1仅第1次模拟/数字转换需要触发该位的功能仅在顺序通道,或者重复模拟/数字转换模式下才有效。REF2_5V内部参考源输出电压选择19015V125VREFON参考源开关控制位0关闭1打开ADC12ON模拟/数字转换模块(ADC12)工作控制位0关闭1打开ADC10OVIE模拟/数字转换结果寄存器,ADC12MEMX,溢出中断使能位0不使能1使能当模拟/数字转换结果寄存器,ADC12MEMX,的转换结果尚没有被读取,又有一次转换结果再被写入能够产生中断信号。该位使能这个中断。ADC10TOVIE模拟/数字转换时间溢出中断使能位0不使能1使能当完成模拟/数字转换模块(ADC10)中断服务程序,该位可以自动清零,也可以由用户软件清零。ENC模拟/数字转换模块(ADC10)转换使能0不使能1使能ADC10控制寄存器0(ADC10CTL0)和ADC10控制寄存器1(ADC10CTL1)中有阴影的位的调整必须在位ENC状态为0的情况下才能进行。ADC10SC模拟/数字转换模块(ADC10)转换启动控制位0不启动1启动用户软件置位该位将启动模拟/数字转换模块(ADC10)的工作。该位可以自动清零,也可以由用户软件清零。ADC12控制寄存器1(ADC12CTL1)位151211,1098位名称CSTARTADDXSHSXSHPISSH操作方式RWRWRWRW复位值0000000020位754,32,10位名称ADC12DIVXADC10SSELXCONSEQXADC10BUSY操作方式RWRWRWR复位值00000000注意ADC12控制寄存器1(ADC12CTL1)中有阴影的位的调整必须在ADC12控制寄存器0(ADC12CTL0)的位ENC状态为0的情况下才能进行。CSTARTADDX转换开始地址选择控制位。转换开始地址选择控制位CSTARTADDX的内容0X00XF依次对应模拟/数字转换结果的寄存器ADC12MEM0ADC12MEM15。这个地址既可以是单次转换结果的存储地址,也可以是顺序转换的首个模拟输入电压通道转换结果的存储地址。模拟/数字转换结果的寄存器ADC12MEM0ADC12MEM15与输入模拟电压通道之间没有关系。任何一个模拟电压输入通道的转换结果可以存储在任意一个模拟/数字转换结果的寄存器ADC12MEMX之中。SHSX采样保持电路触发信号选择BIT11BIT10SHS1SHS000ADC10CTL0的位ADC10SC置位01定时器A(TIMERA)的捕捉/比较模块1(CCR1)输出10定时器B(TIMERB)的捕捉/比较模块0(CCR0)输出11定时器B(TIMERB)的捕捉/比较模块1(CCR2)输出SHP采样时间控制信号SAMPCON选择位0控制信号SAMPCON直接来源于采样保持电路触发信号1控制信号SAMPCON来源于采样计数器的输出ISSH采样保持电路触发信号反相控制位0不反相1反相ADC10DIVX模拟/数字转换电路时钟分频选择。ADC10DIVX的内容07依次对应18的分频比例。ADC10SSELX模拟/数字转换电路时钟信号选择BIT4BIT3ADC10SSEL1ADC10SSEL000ADC10OSC2101ACLK10MCLK11SMCLKCONSEQX转换顺序模式选择BIT11BIT10CONSEQ1CONSEQ000单通道,单次01顺序通道,单次10单通道,重复11顺序通道,重复ADC10BUSY模拟/数字转换模块(ADC10)忙标志,表示转换正在进行0不工作1正在工作ADC12转换结果存储寄存器(ADC12MEMX)位1512110位名称0模拟数字转换结果操作方式RRW复位值0000寄存器名称ADC12MEMX中的X可以取015中任意一个值,分别用来表示16个转换结果存储寄存器。模拟数字转换结果以普通2进制格式存储在寄存器的位110,其中位11为转换结果的最高位。MSP430芯片的复位对寄存器的位110中的内容无影响。寄存器的位1512没有被使用,其内容总是0000。模拟/数字转换完成以后,转换结果将自动进入这个寄存器。写这个寄存器可以产生中断申请。ADC12存储控制寄存器(ADC12MCTLX)位76430位名称EOSSREFXINCHX操作方式RWRWRW复位值00000000注意该寄存器调整必须在ADC12CTL0的位ENC状态为0的情况下才能进行。寄存器名称ADC12MCTLX中的X可以取015中任意一个值,分别用来表示16个存储控制寄存器。每个存储控制寄存器控制对应的转换结果存储寄存器的工作,例如寄存器ADC12MCTL0控制ADC12MEM0,依次对应。22EOS顺序转换过程结束指示位0过程进行1过程结束SREFX参考电源选择BIT6BIT5BIT4SREF2SREF1SREF0000VRVCCVRVSS001VRVREFVRVSS010VRVEREFVRVSS011VR缓冲VEREFVRVSS100VRVCCVRVREF/VEREF101VRVREFVRVREF/VEREF110VRVEREFVRVREF/VEREF111VR缓冲VEREFVRVREF/VEREFINCHX模拟电压输入通道选择BIT3BIT2BIT1BIT0INCH3INCH2INCH1INCH00000A00001A10010A20011A30100A40101A50110A60111A71000VEREF1001VREF/VEREF1010芯片内部温度传感器1011(VCCVSS)/21100GND1101GND1110GND1111GNDADC12中断使能寄存器(ADC12IE)位15141310位名称ADC12IE15ADC12IE14ADC12IE13ADC12IE1ADC12IE0操作方式RWRWRWRWRW23复位值00000ADC12IEX中断使能控制位0不使能1使能ADC12中断标志寄存器(ADC12IFG)位15141310位名称ADC12IFG15ADC12IFG14ADC12IFG13ADC12IFG1ADC12IFG0操作方式RWRWRWRWRW复位值00000ADC12IEX中断标志指示位0无中断申请1中断申请ADC12中断使能寄存器(ADC12IE)和ADC12中断标志寄存器(ADC12IFG)的每一位对应一个ADC12转换结果存储寄存器(ADC12MEMX)。例如位ADC12IE1和位ADC12IFG1对应寄存器ADC12MEM1。当转换结果写入寄存器ADC12MEM1,位ADC12IFG1将置位,如果位ADC12IE1被置位,这时就会产生中断。ADC12中断矢量寄存器(ADC12IV)位156510位名称0ADC12IVX0操作方式RRR复位值0000000000000000模拟/数字转换模块(ADC12)的所有中断信号源共用1个中断矢量,ADC12_VECTOR,因此需要在进入中断服务程序之后再次判断具体的中断信号源。中断矢量寄存器ADC12IV中位ADC12IVX的不同取值代表了不同的中断信号源,这个取值可以用来实现具体中断信号源的判断。表93给出了ADC12IVX的取值与具体中断信号源的对应关系。表93ADC12IVX的取值与具体中断信号源的对应关系ADC12IV中断信号源中断标志中断优先级240X0000无中断申请0X0002ADC12MEMX溢出中断最高0X0004模拟/数字转换过程时间溢出中断0X0006ADC12MEM0写入数据中断ADC12IFG00X0008ADC12MEM1写入数据中断ADC12IFG10X000AADC12MEM2写入数据中断ADC12IFG20X000CADC12MEM3写入数据中断ADC12IFG30X000EADC12MEM4写入数据中断ADC12IFG40X0010ADC12MEM5写入数据中断ADC12IFG50X0012ADC12MEM6写入数据中断ADC12IFG60X0014ADC12MEM7写入数据中断ADC12IFG70X0016ADC12MEM8写入数据中断ADC12IFG80X0018ADC12MEM9写入数据中断ADC12IFG90X001AADC12MEM10写入数据中断ADC12IFG100X001CADC12MEM11写入数据中断ADC12IFG110X001EADC12MEM12写入数据中断ADC12IFG120X0020ADC12MEM13写入数据中断ADC12IFG130X0022ADC12MEM14写入数据中断ADC12IFG140X0024ADC12MEM15写入数据中断ADC12IFG15最低95模拟/数字转换模块(ADC12)初始化函数程序示

温馨提示

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

评论

0/150

提交评论