资源描述
MSP430单片机ADC12模块的总结在MSP430单片机系列中,很多都有12通道12位的ADC(简称ADC12模块)。如MSP430F13X、MSP430F14X、MSP430F15X、MSP430F16X、MSP430F43X、MSP430F44X 等系列。较其它带A/D转换的单片机,MSP430的ADC精度高,设计灵活巧妙,给数据采集系统的设计带来了全新的思路。一、ADC模块的常用性能指标1、分辨率表示输出数字量变化一个相邻数码所需输入模拟电压的变化量,它定义为转换器的满刻度电压与2n的比值,其中n为ADC的位数。如:一个12位的ADC模块的分辨率为满电压刻度的1/4096 。2、量化误差是由于有限数字对模拟数值进行离散取值(量化)而引起的误差。其理论值为一个单位分辨率,即1/2LSB 。3、转换精度其反映的是ADC模块在量化上与理想的ADC模块进行AD转换的差值。4、转换时间指ADC模块完成一次AD转换所需的时间,转换时间越短越能适应输入信号的变化。此外还应考虑所使用的电压范围、工作温度、接口特性以及输出形式等性能。二、ADC12主要特点1、12位转换精度,1位非线性微分误差,1位非线性积分误差;2、有多种时钟源提供给ADC12模块,而且模块本身内置时钟发生器;3、内置温度传感器; 4、Timer_A/Timer_B硬件触发器;5、拥有8 个可配置的外部模拟信号采样通道,拥有4 个内部通道,用于Vcc 电压值、温度、外部正负电压参考的测量;6、内置参考电源,并且参考电压有6种组合;7、模数转换有4种模式;8、16字转换缓存;9、ADC12可关断内核支持超低功耗应用;10、采样速度快,最高可达200ksps;11、自动扫描;12、DMA使能;进行AD 转换通常需要设置的内容有:转换通道、采样保持、参考电压、转换时钟、转换模式、结果缓存。三、ADC12的功能模块Msp430单片机ADC12模块有以下五个部分组成:(1)参考电压发生器;(2)模拟多路器;(3)具有采样和保持功能的12为转换内核;(4)采样及转换所需的时序控制;(5)转存结果缓存。1、参考电压发生器AD转换都需要一个基准信号,通常为电压基准。ADC12内置参考电源,而且参考电压有6种可编程选择,分别为VR+与VR-的组合。其中VR+(有3种):AVCC (模拟电源正端)VREF+ (A/D转换器内部参考电源的正输出端) VeREF+ (外部参考电源的正输入端)VR-(有3种):AVSS (模拟电源负端)VREF- (A/D转换器内部参考电源的负输出端)VeREF- (外部参考电源的负输入端)2、模拟多路器对多个模拟信号进行采样并转换时,由于A/D只有一个转换内核,每次只能选通一个信号进行采样并转换。ADC12配置有8路外部通道和4路内部通道:8路外部通道: A0A7 实现外部8路模拟信号的输入4路内部通道: VeREF+ VREF- 或 VeREF- (AVCC-AVSS)/ 2片内温度传感器的输出4个作为待转换模拟输入信号3、具有采样和保持功能的的12位转换器内核ADC12是一个12位的模数转换器,并能够将数据保存在ADC12MEM转换存储器中。该内核两个可编程的参考电压(VR+和VR-)定义转换的最大值和最小值。当输入模拟电压等于或高于VR+时,ADC12输出满量程值0FFFH,当输入电压等于或小于VR-时,ADC12输出0 。输入模拟电压的最终结果满足公式:ADC12模块由ADC12CTL0和ADC12CTL1两个控制寄存器完成设置。ADC内核使能由ADC12ON位控制。大多数情况下,只有在ENC=0时,ADC12的控制才可以被修改,在进行转换时,ENC位必须设为1。4、采样及转换所需的时序控制采样和转换所需要的各种时钟信号:ADC12CLK转换时钟、 SAMPCON采样及转换信号、SHT控制的采样周期 、 SHS控制的采样触发来源选择 、ADC12SSEL选择的内核时钟源 及 ADC12DIV选择的分频系数等。注意:只有在这些时序控制电路的指挥下,ADC12各部件才能协调工作!5、转存结果缓存ADC12共有12个转换通道,设置了16个转换存储器,用于暂存转换结果,合理设置后,ADC12硬件会自动将转换结果存放到相应的ADC12MEMx存储寄存器中。每个转换器ADC12MEMx都有自己对应的控制寄存器ADC12CTLx。控制寄存器控制各个转换寄存器必须选择基本的转换条件。四、ADC12相关寄存器表1 ADC12相关寄存器总述寄存器类型寄存器缩写寄存器的含义转换控制寄存器ADC12CTL0转换控制寄存器0ADC12CTL1转换控制寄存器1 中断控制寄存器ADC12IFG中断标志寄存器ADC12IE中断使能寄存器ADC12IV中断向量寄存器存储寄存器ADC12MEM0ADC12MEM15存储寄存器015控制寄存器ADC12MCTL0ADC12MCTL15控制寄存器015(1)转换控制寄存器表2 ADC12CTL0-转换控制寄存器0位代号及含义功能描述备注0ADC12SC-采样/转换控制位在ENC=1,ISSH=0时设置SHP=1,在ADC12由0变为1时启动A/D转换用软件启动一次AD转换,需要使用一条指令来完成ADC12SC与ENC的设置1ENC-转换允许位0:ADC12为初始状态,不能启动A/D转换1:首次转换由SAMPCON上升沿启动只有在ENC为高电平时,才能用软件或外部信号启动转换2ADC12TVIE-转换时间溢出中断允许位0:没发生转换时间溢出1:发生转换时间溢出当前转换还没完成时,又发生一次采样请求,则会发生转换时间溢出3ADC12TOVIE-溢出中断允许位0:没发生溢出1:发生溢出4ADC12ON-ADC12内核控制位0:关闭ADC12内核1:打开ADC12内核 5REFON-参考电压控制位0:内部参考电压发生器关闭1:内部参考电压发生器打开62.5V-内部参考电压值选择位0:选择1.5V内部参考电压1:选择2.5V内部参考电压7MSC-多次采样/转换位在SHP=1,MSC=0时,每次转换需要SHI信号的上升沿触发采集定时器在CONSQ0,MSC=1时,仅首次转换同SHI信号的上升沿触发采样定时器,而后采样转换将在一次转换完成立即进行CONSQ0表示当前模式不是单通道单次转换811SHT0-采样保持定时器0定义了每通道转换结果中的转换时序与采样时钟ADC12CLK的关系。采样周期则是ADC12CLK周期的4倍,则:1215SHT1-采样保持定时器1表3 ADC12CTL1-转换控制寄存器1位代号及含义功能描述备注0ADC12BUSY-ADC12忙标志位0:表示没有活动的操作1:表示ADC12正处于采样期间、转换期间或序列转换期间只用于单通道单次转换模式,在其它转换模式下,该位无效12CONSEQ-转换模式选择位00:单通道单次转换模式01:序列通道单次转换模式10:单通道多次转换模式11:序列通道多次转换模式34ADC12SSEL-ADC12内核时钟源选择位00:ADC12OSC ADC12内部时钟源01:ACLK 辅助时钟10:MCLK 系统主时钟11:SMCLK 系统子时钟57ADC12DIV 分频因子选择位分频因子为3位二进制数加18ISSH采样输入信号方向控制位0:采样输入信号为同向输入1:采样输入信号为反向输入9SHP采样信号(SAMPCON)选择控制位,0:SAMPCON源自采样触发输入信号1:SAMPCON源自采样定时器,由采样输入信号的上升沿触发采样定时器1011SHS采样触发输入源选择位00:ADC12SC01:Timer_A.OUT110:Timer_B.OUT011:Timer_B.OUT11215CSSTARTADD转换存储器地址位该4位所表示的二进制数015分别对应ADC12MEM015可以定义单次转换地址或序列转换的首地址(2)转换存储控制寄存器表4 ADC12MCTLX-转换存储控制寄存器位03467代号及含义INCH模拟输入通道选择位SREF参考电压源选择位EOS序列结束控制位功能描述00000111:A0A71000:VeREF+1001:VREF-/VeREF-1010:片内温度传感器的输出10111111:(AVCC-AVSS)/2000:VrAVcc,VrAvss001:VrVREF,VrAvss010:VrVEREF+,VrAvss011:VrAVcc,VrVREF-/VEREF-100:VrVREF+,VrVREF-/VEREF-101:VrVEREF+,VrVREF-/VEREF-0:序列没有结束1:该序列中最后一次转换备注(3)ADC12MEM0ADC12MEM15 转换存储寄存器该组寄存器均为16位寄存器,用来存放A/D转换结果。中用其中低12位,高4位在读出时为0。(4)中断控制寄存器表5 相关中断寄存器寄存器名称缩写功能描述备注中断标志寄存器ADC12IFGADC12IFG.X=1 转换结束,并且转换结果已经装入转换寄存器ADC12IFG.X=0 ADC12MEMX被访问中断使能寄存器ADC12IEADC12IE.X=1允许相应的中断标志ADC12IFG.X在置位时发生的中断请求服务ADC12IE.X=0禁止相应的中断标志ADC12IFG.X在置位时发生的中断请求服务中断向量寄存器ADC12IVADC12是一个多源中断:有18个中断标志(ADC12IFG.0-ADC12IFG15、ADC12TOV、ADC12OV)但是只有一个中断向量五、ADC12转换模式ADC12提供4种转换模式:1、单通道单次转换 2、序列通道单次转换 3、单通道多次转换 4、序列通道多次转换注意:无论用户使用何种模式,都要处理以下问题设置具体模式;输入模拟信号;选择启动信号;关注转换结束信号。1)单通道单次转换模式要进行如下设置:X=CSStartAdd,指向转换开始地址;ADC12MEMx存放转换结果;ADC12IFG.x为对应的中断标志;ADC12MCTLx寄存器中定义了通道和参考电压。转换完成时必须使ENC再次复位并置位(上升沿),以准备下一次转换。在ENC复位并再次置位之前的输入信号将被忽略。2)序列通道单次转换模式要进行如下设置:X=CSStartAdd,指示转换开始通道;EOS(ADC12MCTLx.7)=1标志序列中最后通道y,非最后通道的EOS位都是0,表示序列没有结束;ADC12MEMx, ADC12MEMy存放转换结果;ADC12IFG.x, ADC12IFG.y为对应的中断标志;ADC12MCTLx寄存器中定义了通道和参考电压。转换完成时必须使ENC再次复位并置位(上升沿),以准备下一次转换。在ENC复位并再次置位之前的输入信号将被忽略。3)单通道多次转换模式要进行如下设置:X=CSStartAdd, 指示转换开始通道;ADC12MEMx 存放转换结果;ADC12MCTLx寄存器中定义了通道和参考电压。该模式的停止有如下几种方法:使CONSEQ=0,改变为单通道单次模式;使ENC=0,直接使当前转换完成后停止;使用单通道单次模式替换当前模式,同时使ENC=0 。4)序列通道多次转换模式要进行如下设置:X=CSStartAdd, 指示转换开始通道;EOS(ADC12MCTLx.7)=1标志序列中最后通道y ;ADC12MCTLx寄存器中定义了通道和参考电压;改变转换模式不必停止当前转换,一旦改变模式,将在当前序列完成后立即生效。六、程序代码例【1】 选择外部参考源#include msp430x44x.hvoid main(void) WDTCTL = WDTPW+WDTHOLD;P6SEL |= 0x01; / 使能A/D 通道A0 ADC12CTL0 = ADC12ON+SHT0_2; / 打开 ADC12, 设置采样时钟 ADC12CTL1 = SHP; / 使用采样时钟 ADC12MCTL0 = SREF_2; / Vr+ = VeREF+ (外部) ADC12CTL0 |= ENC; / 使能转换 while (1) ADC12CTL0 |= ADC12SC; / 开始转换 while (ADC12IFG & ADC12BUSY)=0); _NOP(); 例【2】 选择内部参考源#include msp430x44x.h void main(void) ADC12CTL0 = ADC12ON+SHT0_2+REFON+REF2_5V; / 打开 ADC12, 设置采样时钟ADC12CTL1 = SHP;/ 使用采样时钟ADC12MCTL0 = SREF_1;/ Vr+=Vref+ for ( i=0; i0x3600; i+)/ 为参考源启动提供延迟 ADC12CTL0 |= ENC; / 使能转换 while (1) ADC12CTL0 |= ADC12SC; / 开始转换 while (ADC12IFG & BIT0)=0);/等转换结束 _NOP(); 七、总结1、MSP430可以使用内部、外部的参考电压,内部1.5或2.5,外部03.3,可以通过寄存器设置,采样电压的输入范围最大为03.3即AVssAVcc。使用外部AVssAVcc作为参考电压不够稳定,但是精度高,使用内部电压较稳定。如:ADC12CTL0 |= REFON + REF2_5V; /打开内部电压发生器,参考电压选择为2.5V。2、A0A7口为外部8路模拟信号的输入通道,4路内部通道: VeREF+、VREF- 或 VeREF-、(AVCC-AVSS)/ 2、片内温度传感器的输出,4个作为待转换模拟输入信号。可以通过设置ADC12MCTLx转换存储控制寄存器的模拟输入通道选择位INCH。07:A0A78:VeREF+9:VREF-/VeREF-10:片内温度传感器的输出1115:(AVCC-AVSS)/23、430单片机ADC12转换模块中有四个时钟信号源:1:内部时钟ADC12OSC2:ACLK辅助时钟3:MCLK系统主时钟4:SMCLK 系统子时钟可以通过ADC12SSELX来选择用那一种。4、ADC12共有12个转换通道,设置了16个转换存储器,用于暂存转换结果,合理设置后,ADC12硬件会自动将转换结果存放到相应的ADC12MEMx存储寄存器中。至于读取的话,可以直接从存储寄存器中读出数据。
展开阅读全文