版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模/数转换(ADC)第一节概述第二节模/数转换器第三节采样保持器和多路模拟开关本章教学目标:1、了解ADC的基本概念2、MSP430ADC12的原理与基本应用1模/数转换(ADC)本章教学目标:1第一节概述计算机测量控制系统计算机控制对象传感器放大器滤波器A/DD/A放大器执行部件2第一节概述计算机测量控制系统控传感器放大器滤波器A/计算机多路开关传感器1放大器1滤波器1模拟量1采样保持A/D传感器n放大器n滤波器n模拟量n数据采集系统与本课程相关部分音频、视频信号数字通信3传放滤模拟传放滤模拟数据采集系统与本课程相关部分音频、视频信第二节模/数转换器一、A/D转换器的基本原理二、MSP430
ADC12介绍4第二节模/数转换器4一、A/D转换器的基本原理模拟输入量数字输出量0000010100110000010100111v2v3v4v5v6v7vA/D转换器模拟输入量数字输出量量化5一、A/D转换器的基本原理模拟输入量数字输出量000001工作原理特点计数式结构简单、转换速度慢、精度低,实际少用双积分式精度高、转换速度慢、抗干扰性能好逐次逼近式转换速度较快、精度较高实际常用、抗干扰性能不如积分式高速并行式转换速度快,价格高,精度低A/D转换器分类Σ-Δ式6工作原理特点计数式结构简单、转换速度慢、精度低,实际少用双积1.分辨率:指A/D转换器所能分辨的最小模拟输入量,通常用A/D的位数表示。如:8位A/D的分辨率为8位,10位A/D的分辨率为10位2.转换精度:指实际输入的模拟值与理论输入的模拟值(根据A/D输出推算)之间的偏差。常用数字量最低有效位LSB的几分之几表示。14LSB12LSB3.转换时间和转换速度:转换时间指完成一次A/D转换所需的时间,从启动信号开始到转换结束,得到稳定数字量的时间。转换速度是转换时间的倒数。A/D转换器的主要技术指标71.分辨率:指A/D转换器所能分辨的最小模拟输入量,通常逐次逼近式A/D转换器原理图-+D/A转换器输出缓冲器控制电路启动信号STARTCLK时钟EOC转换结束信号D7D0比较器模拟输入数字输出NADCVinOE输出使能信号SARVREFVDA8逐次逼近式A/D转换器原理图-+D/A转换器输出缓冲器控制启0000000010000000110000001010000010110000101000101010000110100101xxxxxxxx1010110110101101D7D6D5D4D0D1D3D29000000001000000011000000101000A/D转换器的典型信号、电源、地A/D转换器模拟量输入信号A/D转换启动信号数字量输出A/D转换完成信号输出使能信号ADC时钟电源模拟地数字地参考电源10A/D转换器的典型信号、电源、地A/D模拟量输入信号A/D转A/D转换的启动电平启动高电平启动低电平启动脉冲沿启动上升沿启动下降沿启动启动方法软件启动硬件启动启动信号11A/D转换的启动电平启动高电平启动低电平启动脉冲沿启动上升沿CPU对ADC转换结果的读取方式程序延时方式程序查询方式中断方式12CPU对ADC转换结果的读取方式程序延时方式12二、MSP430ADC12介绍ADC12模块是一个转换速度高达200ksps、采样时间可编程的12-bit逐次逼近型模数转换器。由12-bit的SAR核、采样保持电路、模拟开关、参考电压产生与选择电路、ADC时钟选择电路、采样与转换控制电路、16个转换结果存储缓冲器及其对应的16个存储控制寄存器、中断系统、片上集成温度传感器等组成。ADC12可以在没有CPU的参与下,独立实现多达16次的采样、转换和存储操作。ADC12模块可以独立断电,以便于低功耗设计。MSP430X13X,MSP430X14X,MSP43015X和MSP430X16X等芯片中均有ADC12模块。13二、MSP430ADC12介绍ADC12模块是一个转换速度ADC12模块14ADC12模块14ADC12的特点与性能指标:采样率可达200ksps,采样率可编程;分辨率12-bit;内含16路模拟开关,其中8路外部模拟输入,1路内部温度传感器输入等;内含采样保持电路,采样时间可编程;可由软件、Timer_A或Timer_B启动转换过程;参考电压可编程:内部(1.5V或2.5V)、外部;4种转换模式;ADC核和内部参考电源可编程断电,以实现节能;具有中断(子)向量寄存器,供18路ADC中断译码用;具有16个转换结果存储寄存器。15ADC12的特点与性能指标:采样率可达200ksps,采样12-BITSARADC参考电压源时钟电路采样/保持器模拟开关采样与转换控制电路结果存储缓冲器与相应的控制寄存器MSP430ADC12原理框图1612-BITSARADC参考电压源时钟电路采样/保持器1717ADC12的模数转换部分原理图18ADC12的模数转换部分原理图18NADC=4095,当Vin≥VR+NADC=0,当Vin≤VR-VR+和VR-可由软件编程设置NADC=4095×————Vin-VR-VR+-VR-ADC12的转换结果NADC:19NADC=4095,当Vin≥VR+NADC=4095×—参考电压源VR+,VR-电路20参考电压源VR+,VR-电路20BIS#REFON+REF2_5V,&ADC12CTL0 ;turnon2.5VrefBIS.B#SREF_1,&ADC12MCTL0 ;Vr+=Vref+举例:ADC12通道0使用内部2.5V参考电压源SREF2SREF1SREF0001#SREF_121BIS#REFON+REF2_5V,&ADC1BIS#REFON,&ADC12CTL0 ;turnon2.5VrefBIS.B#SREF_1,&ADC12MCTL0 ;Vr+=Vref+举例:ADC12通道0使用内部1.5V参考电压源SREF2SREF1SREF0001#SREF_122BIS#REFON,&ADC12CTL0 ;举例:VR+使用外部正参考电压源VeREF+ BIS.B#SREF_2,&ADC12MCTL0SREF2SREF1SREF001x#SREF_2or#SREF_3or BIS.B#SREF_3,&ADC12MCTL023举例:VR+使用外部正参考电压源VeREF+ BIS.BADC12工作时钟(ADC12CLK)编程设置例:BIS#ADC12SSEL_2,&ADC12CTL124ADC12工作时钟(ADC12CLK)编程设置例:BISMSP430F149转换时钟、转换时间、电源建立时间和采样时间等参数13/6.3=2.06,13/3.7=3.5125MSP430F149转换时钟、转换时间、电源建立时间和采样ADC12的模拟输入及其多路模拟开关例:BIS.B #INCH_4,&ADC12MCTL026ADC12的模拟输入及其多路模拟开关26ADC12中的采样保持器采样/保持信号AD转换启动信号模拟开关输出什么是采样保持器?为什么需要采样保持器?请参见本章附录27ADC12中的采样保持器采样/保持信号AD转换启动信号模拟Sample/HoldInput
SignalSAMPCON为高电平时,采样保持器工作在采样模式SAMPCON为低电平时,采样保持器工作在保持模式SAMPCON的下降沿与ADC12CLK同步后启动AD转换采样信号源选择极性选择采样方式选择采样与转换控制采样定时器28Sample/HoldInputSignalSAMPCO采样与转换控制ADC12SC .0ENC .1MSC .7SHT0x .8~11SHT1x .12~15ISSH .8SHP .9SHSx .10~11ADC12CTL0ADC12CTL129采样与转换控制ADC12SC .0ADC12CTL0ADC1SHP=0,SAMPCON=SHI,非采样定时器采样方式 (ExtendedSampleMode)SHP=1,SAMPCON=采样定时器输出,采样定时器采样方式
(PulseSampleMode)采样方式选择30SHP=0,SAMPCON=SHI,非采样定时器采样方非采样定时器采样方式(ExtendedSampleMode)SHP=0,SAMPCON=SHItsample=采样保持输入信号(SHI)的宽度31非采样定时器采样方式(ExtendedSampleMod采样定时器采样方式(PulseSampleMode)SHP=1,SAMPCON=采样定时器输出tsample=采样定时器输出信号的宽度采样保持输入信号的宽度0~1×ADC12CLK4×ADC12CLK≤tsample≤1024×ADC12CLK32采样定时器采样方式(PulseSampleMode)ts采样定时器设置设置采样时间tsample4×ADC12CLK≤tsample≤1024×ADC12CLKSHT0x ADC12CTL0.8~11SHT1x ADC12CTL0.12~1533采样定时器设置4×ADC12CLK≤tsample≤102采样时间计算tsampletsample>(Rs+Ron)×ln(2)×Cs+800ns13tsample>(Rs+2k)×9.011×40pF
+800ns12-bit分辨率下的最小采样时间计算公式:当Rs=10k时,tsample>5.13μsRsRonCsMSP430Vs外部模拟信号源模拟开关导通电阻采样保持电容采样期间模拟等效电路≤2k≤40pFVcVs-Vc≤0.5LSB34采样时间计算tsamplets举例:ADC12通道0~7,使用采样定时器采样方式,采样时间=16×ADC12CLKSHT0x=2,采样时间=16×ADC12CLKBIS#SHT0_2,&ADC12CTL0 ;Samplingtime=16×ADC12CLKBIS#SHP,&ADC12CTL1 ;Usesamplingtimer35举例:ADC12通道0~7,使用采样定时器采样方式,S每进行一次采样和转换均需要SHI上升沿去触发采样定时器除了启动第一次采样和转换时需要SHI的上升沿触发采样定时器外,后续的采样和转换过程无需SHI的上升沿触发。一旦上一次转换完毕,紧接着自动开始下一次的采样和转换过程。MSC:多次采样和转换控制位(仅序列或重复方式下有效)MSC=ADC12CTL0.7MSC=0:MSC=1:36每进行一次采样和转换均需要SHI上升沿去触发采样定时器除采样保持信号源选择同步SHSx=00,ADC12SCbit软件启动SHSx=01,Timer_AOutputUnit1启动SHSx=10,Timer_BOutputUnit0启动SHSx=11,Timer_BOutputUnit1启动ENCSHI采保源ENCSHI采保源ISSH=0ISSH=0SHSx=ADC12CTL1.10~1137采样保持信号源选择同步SHSx=00,ADC12SCbMSP430F149Timer_AOutputUnit1具有内部启动采样转换信号38MSP430F149Timer_AOutputUnit16个12-bit的转换结果存储缓冲器16个8-bit的转换存储控制寄存器一一对应ADC12转换结果存储缓冲器存储指针转换方式3916个12-bit的转换结果存储缓冲器16个8-bit的转换ADC12转换存储控制寄存器:ADC12MCTLx参考电压源选择模拟输入通道选择通道序列结束标志EOS=1的通道是序列转换中最后转换的通道40ADC12转换存储控制寄存器:ADC12MCTLxn=CSTARTADDADC12MEM0ADC12MEM1ADC12MEMnADC12MEM15ADC12MCTL0ADC12MCTL1ADC12MCTLnADC12MCTL15ADC12通道(channel)的概念ADC12通道n一个ADC12通道(简称通道)由通道号、该通道的转换结果存储缓冲器、该通道的参考电压源配置、该通道的模拟输入以及通道序列结束标志等组成。ADC12通道n可以对应于16个模拟输入中的任何一个,不同的ADC12通道可以对应于同一个模拟输入,不同的ADC12通道可以有不同的参考电压源。ADC12通道与传统的模拟输入通道有很大的不同。CSTARTADD=ADC12CTL1的最高4位的值=0~1541n=CSTARTADDADC12MEM0ADC12MEM1AADC12的通道序列(sequenceofchannels)n=CSTARTADDADC12MEMnADC12MEMn+1ADC12MEMn+2ADC12MEMn+m00011
1EOS序列开始序列结束k=(n+m)%16循环队列例:从n号ADC12通道开始的,长度=m+1的通道序列k42ADC12的通道序列(sequenceofchanne01n1514队首队尾n=(n+1)%16n=CSTARTADD00001
EOS=1有限长通道序列:某些通道的EOS=11100004301n1514队首队尾n=(n+1)%16n=CSTAR无限长通道序列:所有通道的EOS=001n1514队首n=(n+1)%16n=CSTARTADD00000
00000044无限长通道序列:所有通道的EOS=001n1514队首n=(ADC12的4种转换方式(运行方式)单通道单次转换方式通道序列单轮转换方式单通道重复转换方式通道序列重复转换方式45ADC12的4种转换方式(运行方式)单通道单次转换方式通常用转换方式——通道序列单轮转换方式每一轮通道序列中第一通道的采样和转换都由定时器(TA1/TB0/TB1)启动,然后由采样定时器自动启动后续通道的快速采样和转换,直到EOS=1的通道转换完毕,完成第一轮。定时器采样定时器采样间隔uaubuc icuaubuc ic第一轮第二轮46常用转换方式——通道序列单轮转换方式每一轮通道序列中第一通道ADC12offn=CSTARTADDxWaitforEnableSample,InputChannelDefinedinADC12MCTLnWaitforTriggerConvertConversionCompleted,ResultStoredintoADC12MEMn,ADC12IFGnisSetENC≠ENC=ENC=SAMPCON=SAMPCON=1SAMPCON=12×ADC12CLK1×ADC12CLKEOS.n=1ifn<15thenn=n+1elsen=0MSC=1 andSHP=1 andEOS.n=0ADC12ON=1停止条件状态转换图47ADC12offn=CSTARTADDxWaitfor定时器
TA1
启动的通道序列单轮转换方式举例通道序列定义:通道号结果存储缓冲器 模拟输入参考电压源 EOS0 ADC12MEM0 A0 内部2.5V 01 ADC12MEM1 A1 内部2.5V 02 ADC12MEM2 A2 内部2.5V 03 ADC12MEM3 A3 内部2.5V 148定时器TA1启动的通道序列单轮转换方式举例通道序列定义:定时器TA采样定时器采样间隔A0A1A2A3第一轮A0A1A2A3第二轮ADC12IFG3interruptADC12IFG3interrupt49定时器TA采样定时器采样间隔A0A1A2A3第一BIS.B#BIT0+BIT1+BIT2+BIT3,&P6SELMOV#ADC12ON+SHT0_1+REF2_5V+REFON,&ADC12CTL0;MOV#SHP+CONSEQ_1+SHS_1,&ADC12CTL1 ;MOV.B#INCH_0+SREF_1,&ADC12MCTL0 ;MOV.B#INCH_1+SREF_1,&ADC12MCTL1 ;MOV.B#INCH_2+SREF_1,&ADC12MCTL2 ;MOV.B#INCH_3+SREF_1+EOS,&ADC12MCTL3 ;BIS#ENC,&ADC12CTL0 ;EnableADC12BIS#BIT3,&ADC12IE ;EnableADC12IFG3interruptADC12初始化编程:50BIS.B#BIT0+BIT1+BIT2+BIT3,Timer_A初始化编程采样间隔=TACCR0(单位:Timerclock周期)正脉冲宽度=TACCR0-TACCR1OUT151Timer_A初始化编程OUT151BIS.B #BIT2,&P1SEL ;OUT1:P1.2BIS.B #BIT2,&P1DIR ;P1.2outputsMOV #INTERVAL,&TACCR0 ;TACCR0=INTERVALMOV #INTERVAL-WIDTH,&TACCR1MOV #OUTMOD_2,&TACCTL1MOV #TACLR+TASSEL_2+MC_1,&TACTL;SMCLK,upmode52BIS.B #BIT2,&P1SELADC12模块ADC12OVADC12TOVADC12IFG0ADC12IFG1ADC12IFG15ADC12的中断——分3类,共18个中断源ADC12MEMx装入新数据中断ADC12MEMx被覆盖中断(上一次转换结果尚未读出,新的转换结果又写入同一个存储缓冲器中)ADC12转换时间溢出中断(采样转换间隔太短,前一次尚未转换完毕,又启动新的AD转换)中断优先级高中断优先级低如果ADC12OV/ADC12TOV中断是最高优先级的已请求的中断,则读写ADC12IV寄存器将自动复位ADC12OV/ADC12TOV53ADC12ADC12OVADC12TOVADC12IFG0ADC12IFG0ADC12IFG1ADC12IFG15ADC12中断控制ADC12IE0ADC12IE1ADC12IE15GIECPU0Nointerruptpending1Interruptpending0Interruptdisable1Interruptenable读取ADC12MEMx将自动清零中断标志位ADC12IFGx,ADC12IFGx也可由软件清零。(存取ADC12IV寄存器不会清零中断标志位)ADC12OVADC12TOVADC12OVIEADC12TOVIEADC12CTL0.3ADC12CTL0.2优先级总控分控0FFEEh共享中断向量54ADC12IFG0ADC12IFG1ADC12IFGADC12的中断(子)向量寄存器readonlyregister——ADC12中断服务子程的跳转表55ADC12的中断(子)向量寄存器readonlyreg注意:ADC12OV和ADC12TOV没有相应的可供读取的标志位56注意:ADC12OV和ADC12TOV没有相应的可供读取的标ADC12中断服务子程结构ADC12_ISR ADD&ADC12IV,PC ;addoffsettoPC RETI ;vector0:nointerrupt JMPADOV ;vector2:ADCoverflow JMPADTOV ;vector4:ADCtimingoverflow JMPADM0 ;vector6:ADC12IFG0 JMPADM1 ;vector8:ADC12IFG1 …… JMPADM14 ;vector34:ADC12IFG14ADM15 MOV&ADC12MEM15,XXX ;movresult,flagisreset …… JMPINT_ADC12 ;checkotherintpendingADM14 MOV&ADC12MEM14,XXX ;movresult,flagisreset …… JMPINT_ADC12 ;checkotherintpending …… 57ADC12中断服务子程结构57ADM1 MOV&ADC12MEM1,XXX ;movresult,flagisreset …… JMPINT_ADC12 ;checkotherintpending ADM0 MOV&ADC12MEM0,XXX ;movresult,flagisreset …… RETIADTOV …… RETI ADOV …… RETI;------------------------------------------------------------------------------; InterruptVectorsUsedMSP430x13x/14x/15x/16x …… ORG0FFEEh ;ADC12Vector DWADC12_ISR ; ……5858ADC12编程举例ADC12CTL0ADC12CTL1ADC12MCTLxADC12MEMxADC12IFGADC12IEP6SELADC12IVADC12的编程结构(不考虑TA1,TB0,TB1)59ADC12编程举例ADC12CTL0ADC12CTL1AD与ADC12有关的引脚60与ADC12有关的引脚60模拟开关A0..A7P6SEL.x=1必须为高阻态!P6SELBIS.B#BITx,&P6SEL61模拟开关A0..A7P6SEL.x=1必须为高阻态!P6SE注意:应符合硬件互斥设计原则ADC12的8个模拟输入引脚(A0~A7)与P6数字输入输出引脚复用,因此当上电复位后或编程选择这些引脚为I/O的输出功能的同时施加模拟输入信号,将有可能导致大电流流经这些引脚的输出电路和模拟信号源,违反了互斥设计原则。为了实现互斥操作,应将与模拟信号相连接引脚的P6SEL.x置为“1”:
BIS.B#BIT.x,&P6SEL62注意:应符合硬件互斥设计原则62ADC12CTL0自动快速连续采样转换控制内部参考电压源控制位ADC12模块供电控制溢出中断使能控制转换使能控制软件启动采样转换控制8~15通道采样时间设置0~7通道采样时间设置63ADC12CTL0自动快速连续采样转换控制内部参考电压源控制ADC12CTL1通道序列起始通道号设置采样信号源选择采样方式选择采样保持信号反向控制位ADC12时钟分频设置ADC12时钟源选择转换方式选择ADC12“忙”指示位64ADC12CTL1通道序列起始通道号设置采样信号源选择采样方ADC12MCTLn
参考电压源选择模拟输入通道选择通道序列结束标志n通道属性控制寄存器注意:ADC12CTL0、ADC12CTL1和ADC12MCTLn三种控制寄存器的大部分控制位(灰色背景)需在ENC=0的情况下才能编程修改。65ADC12MCTLnADC12控制寄存器的复位值:不使用内部参考电压源ADC12模块处于断电状态禁止溢出中断ENC=0(未使能状态)通道号或通道序列起始通道号=0采样信号源为ADC12SC(软件启动)采样方式:不使用采样定时器ADC12时钟为内部时钟,不分频转换方式:单通道单次转换ADC12CTL1=0000hADC12MCTLn=00hADC12CTL0=0000h模拟输入通道为A0参考电压源:VR-=AVSS,VR+=AVCC非结束通道(EOS=0)SHT0x=0,SHT1x=0,MSC=0必须编程ADC12IE=0000h——禁止ADC12IFGx中断66ADC12控制寄存器的复位值:不使用内部参考电压源ADC12举例00—— 全部采用复位值,查询方式 转换完毕后通过P1.0输出一个负脉冲bis.b#01h,&P6SEL ;P6.0ADCoptionselectmov#ADC12ON,&ADC12CTL0 ;ADC12onbis#ENC,&ADC12CTL0 ;EnableADC12相关寄存器初始化编程:67举例00—— 全部采用复位值,查询方式bis.b#0软件启动单通道单次转换方式状态转换图ADC12offn=CSTARTADDxWaitforEnableSample,InputChannelDefinedinADC12MCTLnConvertConversionCompleted,ResultStoredintoADC12MEMn,ADC12IFGnisSetADC12ON=1ENC≠SAMPCON=1ENC=1orandADC12SC=SAMPCON=12个ADC12CLK1个ADC12CLKENC=0ENC=0*ENC=0**Conversionresultisunpredictable软件启动采样期间转换时间存储等时间给模块供电转换完毕后ADC12SC自动清零68软件启动单通道单次转换方式状态转换图ADC12offn=C#include<msp430x14x.h> ORG01100h ;ProgramStartRESET mov#0A00h,SP ;Initializestackpointer mov#WDTPW+WDTHOLD,&WDTCTL;StopWDT bis.b#01h,&P6SEL ;P6.0ADCoptionselect mov#ADC12ON,&ADC12CTL0 ;ADC12on bis#ENC,&ADC12CTL0;EnableADC12 bis.b#01h,&P1DIR ;P1.0output bis.b#01h,&P1OUT ;P1.0=1Main bis#ADC12SC,&ADC12CTL0 ;软件启动采样和转换testIFG0bit#BIT0,&ADC12IFG ;Conversiondone? jnztestIFG0 ;No,testagain bic.b#01h,&P1OUT ;P1.0=0 bis.b#01h,&P1OUT ;P1.0=1 jmpMain69#include<msp430x14x.h>69;------------------------------------------------------------------------------; InterruptVectorsUsedMSP430x13x/14x/15x/16x;------------------------------------------------------------------------------ ORG 0FFFEh;MSP430RESETVector DW RESET; END问题:请实验验证程序设计的正确性,如何改正?提示:采样时间?AD转换启动信号?ADC12SCautomaticallyclearedatEOC.70;-----------------------------举例—— 使用采样定时器,采样时间=16×ADC12CLK, 其它采用复位值。查询方式。 转换完毕后通过P1.0输出一个负脉冲SHT0x=2,采样时间=16×ADC12CLK71举例—— 使用采样定时器,采样时间=16×ADC12CLK不使用内部参考电压源ADC12模块处于断电状态禁止溢出中断ENC=0(未使能状态)通道序列起始通道号=0采样信号源为ADC12SC(软件启动)采样方式:使用采样定时器ADC12时钟为内部时钟,不分频转换方式:单通道单次转换ADC12CTL1=0000hADC12MCTLn=00hADC12CTL0=0000h模拟输入通道为A0参考电压源:VR-=AVSS,VR+=AVCC非结束通道(EOS=0)SHT0x=0,SHT1x=0,MSC=0bis.b#01h,&P6SEL ;P6.0ADCoptionselectmov#SHT0_2+ADC12ON,&ADC12CTL0;Samplingtime,ADC12onmov#SHP,&ADC12CTL1 ;Usesamplingtimerbis#ENC,&ADC12CTL0 ;EnableADC12相关寄存器初始化编程:72不使用内部参考电压源ADC12模块处于断电状态禁止溢出中断E#include<msp430x14x.h> ORG01100h ;ProgramStartRESET mov#0A00h,SP ;Initializestackpointer mov#WDTPW+WDTHOLD,&WDTCTL;StopWDT bis.b#01h,&P6SEL ;P6.0ADCoptionselect mov#SHT0_2+ADC12ON,&ADC12CTL0;Samplingtime,ADC12onmov#SHP,&ADC12CTL1 ;Usesamplingtimer bis#ENC,&ADC12CTL0;EnableADC12bis.b#01h,&P1DIR ;P1.0output bis.b#01h,&P1OUT ;P1.0=1Main bis#ADC12SC,&ADC12CTL0 ;软件启动采样和转换testIFG0bit#BIT0,&ADC12IFG ;Conversiondone? jztestIFG0 ;No,testagain bic.b#01h,&P1OUT ;P1.0=0 bis.b#01h,&P1OUT ;P1.0=1 jmpMain73#include<msp430x14x.h>73;------------------------------------------------------------------------------; InterruptVectorsUsedMSP430x13x/14x/15x/16x;------------------------------------------------------------------------------ ORG 0FFFEh;MSP430RESETVector DW RESET; END74;-----------------------------举例01—— 使用采样定时器,采样时间=16×ADC12CLK, 使用ADC12IFG0中断, 其它采用复位值。
IfA0>0.5*AVcc,P1.0set,elsereset. InMainMSP430waitsinLPM0tosavepoweruntil conversioncomplete,ADC12_ISRwillforceexitfrom LPM0inMainonreti.75举例01—— 使用采样定时器,采样时间=16×ADC12Cbis.b#01h,&P6SEL ;P6.0ADCoptionselectmov#SHT0_2+ADC12ON,&ADC12CTL0;Samplingtime,ADC12onmov#SHP,&ADC12CTL1 ;Usesamplingtimermov#01h,&ADC12IE ;EnableADC12IFG0interruptbis#ENC,&ADC12CTL0 ;EnableADC12相关寄存器初始化编程:76bis.b#01h,&P6SEL#include<msp430x14x.h>;------------------------------------------------------------------------------ORG01100h;ProgramStart;------------------------------------------------------------------------------RESET mov#0A00h,SP;Initializestackpointer mov#WDTPW+WDTHOLD,&WDTCTL;StopWDT bis.b#01h,&P6SEL;P6.0ADCoptionselect mov#SHT0_2+ADC12ON,&ADC12CTL0;Samplingtime,ADC12onmov#SHP,&ADC12CTL1;Usesamplingtimermov#01h,&ADC12IE;EnableADC12IFG0interruptbis#ENC,&ADC12CTL0;EnableADC12bis.b#01h,&P1DIR;P1.0outputMain bis#ADC12SC,&ADC12CTL0;软件启动采样和转换bis#CPUOFF+GIE,SR;LPM0,ADC12_ISRwillforceexitjmpMain;Again77#include<msp430x14x.h>77;------------------------------------------------------------------------------ADC12_ISR ;ExitanyLPMxonreti bic.b#01h,&P1OUT;P1.0=0cmp#07FFh,&ADC12MEM0;ADC12MEM=A0>0.5AVcc?jloADC12_ISR_1;bis.b#01h,&P1OUT;P1.0=1ADC12_ISR_1bic#CPUOFF,0(SP);ExitanyLPM0onretireti; ;------------------------------------------------------------------------------;InterruptVectorsUsedMSP430x13x/14x/15x/16x;------------------------------------------------------------------------------ORG0FFFEh;MSP430RESETVectorDWRESET;ORG0FFEEh;ADC12VectorDWADC12_ISR;END78;-----------------------------举例02—— 使用内部2.5V参考电压源, 使用采样定时器,采样时间=16×ADC12CLK, 其它采用复位值。查询方式。 转换完毕后通过P1.0输出一个负脉冲79举例02—— 使用内部2.5V参考电压源,79SREF2SREF1SREF0001#SREF_180SREF2SREF1SREF0#SREF_180相关寄存器初始化编程: bis.b#BIT0,&P6SEL ;EnableA/DchannelA0 mov#REFON+REF2_5V+ADC12ON+SHT0_2,&ADC12CTL0;turnon2.5Vref,setsamptime mov.b#SREF_1,&ADC12MCTL0;Vr+=Vref+ mov#SHP,&ADC12CTL1;Usesamplingtimer mov#03600h,R15 ;Delayforneededrefstart-up.L$1 decR15 ;Seedatasheetfordetails. jnzL$1 bis#ENC,&ADC12CTL0 ;Enableconversions81相关寄存器初始化编程: bis.b#BIT0,&P#include<msp430x14x.h>;------------------------------------------------------------------------------ORG01100h ;ProgramStart;------------------------------------------------------------------------------RESET mov#0A00h,SP ;Initializestackpointer mov#WDTPW+WDTHOLD,&WDTCTL;Stopwatchdog bis.b#BIT0,&P6SEL ;EnableA/DchannelA0 mov#REFON+REF2_5V+ADC12ON+SHT0_2,&ADC12CTL0;turnon2.5Vref,setsamptime mov.b#SREF_1,&ADC12MCTL0;Vr+=Vref+ mov#SHP,&ADC12CTL1;Usesamplingtimer mov#03600h,R15 ;Delayforneededrefstart-up.L$1 decR15 ;Seedatasheetfordetails. jnzL$1 ; bis#ENC,&ADC12CTL0;Enableconversions82#include<msp430x14x.h>82 bis.b#01h,&P1DIR ;P1.0output bis.b#01h,&P1OUT ;P1.0=1Main bis#ADC12SC,&ADC12CTL0 ;软件启动采样和转换testIFG0bit#BIT0,&ADC12IFG ;Conversiondone? jztestIFG0 ;No,testagain bic.b#01h,&P1OUT ;P1.0=0 bis.b#01h,&P1OUT ;P1.0=1 jmpMain;------------------------------------------------------------------------------;InterruptVectors;------------------------------------------------------------------------------ORG0FFFEh;MSP430RESETVectorDWRESET;END83 bis.b#01h,&P1DIR举例04—— 使用采样定时器, 采样时间=1024×ADC12CLK, 使用ADC12IFG0中断, 其它采用复位值,并将转换结果转存到R5中。SHT0x=15,采样时间=1024×ADC12CLK84举例04—— 使用采样定时器,SHT0x=15,采样时间=#include<msp430x14x.h>;------------------------------------------------------------------------------ORG01100h;ProgramStart;------------------------------------------------------------------------------RESET mov#0A00h,SP;Initializestackpointer mov#WDTPW+WDTHOLD,&WDTCTL;Stopwatchdog
bis.b#BIT0,&P6SEL ;EnableA/DchannelA0 mov#ADC12ON+SHT0_15,&ADC12CTL0 ;TurnonADC12,setSHT0forlongersamplingmov#SHP,&ADC12CTL1;Usesamplingtimerbis#BIT0,&ADC12IE;EnableADC12IFG.0interruptbis#ENC,&ADC12CTL0;Enableconversions85#include<msp430x14x.h>85Main bis#ADC12SC,&ADC12CTL0;Startconversions bis#LPM0+GIE,SR ;Waitforconversioncompletion ;Enableinterrupts nop ;OnlyrequiredforCSPY jmpMain ;SETBREAKPOINTHERE;------------------------------------------------------------------------------ADC12ISR;InterruptServiceRoutineforADC12;------------------------------------------------------------------------------ mov&ADC12MEM0,R5 ;Moveresult,IFGisreset bic#CPUOFF,0(SP) ;Returnactive reti86Main bis#ADC12SC,&ADC12CT;-----------------------------------------------------------------------------; InterruptVectors;----------------------------------------------------------------------------- ORG 0FFFEh ;MSP430RESETVector DW RESET ; ORG 0FFEEh ;ADC12InterruptVector DW ADC12ISR ; END87;-----------------------------举例05—— 使用外部正参考电压源VeREF+, 使用采样定时器,采样时间=16×ADC12CLK, 其它采用复位值。查询方式。 转换完毕后将转换结果转存到R5中。相关寄存器初始化编程:bis.b#BIT0,&P6SEL ;EnableA/DchannelA0mov#ADC12ON+SHT0_2,&ADC12CTL0 ;turnonADC12,setsamptimemov#SHP,&ADC12CTL1 ;Usesamplingtimermov.b#SREF_2,&ADC12MCTL0 ;Vr+=VeREF+(external)bis#ENC,&ADC12CTL0 ;Enableconversions88举例05—— 使用外部正参考电压源VeREF+,相关寄存#include<msp430x14x.h>;------------------------------------------------------------------------------ORG01100h;ProgramStart;------------------------------------------------------------------------------RESET mov#0A00h,SP;Initializestackpointer mov#WDTPW+WDTHOLD,&WDTCTL;Stopwatchdog bis.b#BIT0,&P6SEL;EnableA/DchannelA0 mov#ADC12ON+SHT0_2,&ADC12CTL0 ;turnonADC12,setsamptime mov#SHP,&ADC12CTL1;Usesamplingtimer mov.b#SREF_2,&ADC12MCTL0;Vr+=VeREF+(external) bis#ENC,&ADC12CTL0;Enableconversions89#include<msp430x14x.h>89Main bis#ADC12SC,&ADC12CTL0 ;StartconversionstestIFG bit#BIT0,&ADC12IFG ;Conversiondone? jztestIFG ;No,testagain mov&ADC12MEM0,R5;Moveresult jmpMain ;SETBREAKPOINTHERE;------------------------------------------------------------------------------; InterruptVectors;------------------------------------------------------------------------------ ORG 0FFFEh ;MSP430RESETVector DW RESET ; END90Main bis#ADC12SC,&ADC12CT举例06—— 重复通道序列转换方式,使用采样定时器, 采样时间=256×ADC12CLK, 使用ADC12IFG.3中断, 其它采用复位值,并将转换结果转存到RAM中。SHT0x=8,采样时间=256×ADC12CLK91举例06—— 重复通道序列转换方式,使用采样定时器,SHT通道序列定义:通道号结果存储 模拟输入 RAM 缓冲器 通道号
0 ADC12MEM0 A0 0x200~0x20E1 ADC12MEM1 A1 0x210~0x21E2 ADC12MEM2 A2 0x220~0x22E3 ADC12MEM3 A3 0x230~0x23E注意:通道号与模拟输入通道号可以不一致。因此上述的通道定义也可以如下:通道号结果存储 模拟输入 RAM 缓冲器 通道号
0 ADC12MEM0 A3 0x200~0x20E1 ADC12MEM1 A1 0x210~0x21E2 ADC12MEM2 A2 0x220~0x22E3 ADC12MEM3 A0 0x230~0x23E92通道序列定义:92通道号结果存储 模拟输入 RAM 缓冲器 通道号
0 ADC12MEM0 A1 0x200~0x20E1 ADC12MEM1 A1 0x210~0x21E2 ADC12MEM2 A3 0x220~0x22E3 ADC12MEM3 A3 0x230~0x23E通道号结果存储 模拟输入 RAM 缓冲器 通道号
5 ADC12MEM5 A6 0x200~0x20E6 ADC12MEM6 A0 0x210~0x21E7 ADC12MEM7 A5 0x220~0x22E8 ADC12MEM8 A3 0x230~0x23E93通道号结果存储 模拟输入 RAM93ADC12offn=CSTARTADDxWaitforEnableSample,InputChannelDefinedinADC12MCTLnConvertConversionCompleted,ResultStoredintoADC12MEMn,ADC12IFGnisSetENC≠SAMPCON=1ENC=1orandADC12SC=SAMPCON=1×ADC12CLKENC=0andEOS.n=1ifEOS.n=1thenn=CSTARTADDxelse{ifn<15thenn=n+1elsen=0}MSC=1 andSHP=1 and(ENC=1orEOS.n=0)ADC12ON=1软件启动12×ADC12CLK停止条件通道序列重复转换方式状态转换图——由软件启动第一轮首通道(通道0)的采样和转换,然后由采样定时器自动实现后续通道的快速采样和转换,到EOS=1的通道(通道3)转换完毕后又立即从通道0开始新一轮的采样和转换,直到停止条件满足为止。期间无需CPU的干预。EOS.3=1CSTARTADDx=094ADC12offn=CSTARTADDxWaitfor#include<msp430x14x.h>A0resultEQU0200h;ChannelA0resultsA1resultEQU0210H;ChannelA1resultsA2resultEQU0220H;ChannelA2resultsA3resultEQU0230H;ChannelA3results;------------------------------------------------------------------------------ORG01100h ;ProgramStart;------------------------------------------------------------------------------RESET mov#0A00h,SP ;Initializestackpointer mov#WDTPW+WDTHOLD,&WDTCTL;Stopwatchdog clrR5 ;Clearpointer 95#include<msp430x14x.h>95 bis.b#BIT0+BIT1+BIT2+BIT3,&P6SEL;EnableA/Dinputs mov#SHT0_8+MSC+ADC12ON,&ADC12CTL0 mov#SHP+CONSEQ_3,&ADC12CTL1 mov#BIT3,&ADC12IE ;EnableADC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 故宫模板课件教学课件
- 街心广场课件教学课件
- 2024年度批量货物搬运与运输合同
- 2024年度某大型工程建设项目施工合同
- 2024年人工智能研究员全职合同
- 2024国际许可合同的格式国际许可合同的种类
- 2024年广告牌更新改造施工合同
- 2024规范的办公室装修合同范本
- 2024店面租房合同范本下载
- 2024年店面租赁升级协议
- 2024年合肥兴泰金融控股(集团)有限公司招聘笔试冲刺题(带答案解析)
- 大学生职业生涯展示
- 《金属非金属地下矿山监测监控系统建设规范》
- 《中国慢性阻塞性肺疾病基层诊疗与管理指南(2024年)》解读
- 安全操作规程、作业指导书
- MOOC 软件安全之恶意代码机理与防护-武汉大学 中国大学慕课答案
- 档案工作协调机制
- 肝硬化门静脉高压食管胃静脉曲张出血的防治指南( 2022)
- 2023年1月自考00804金融法二试题及答案
- 赢利-未来10年的经营能力-读后感
- 工会劳动竞赛培训课件
评论
0/150
提交评论