1、1 模模/数转换(数转换(ADC)第一节第一节 概述概述第二节第二节 模模/数转换器数转换器第三节第三节 采样保持器和多路模拟开关采样保持器和多路模拟开关本章教学目标:本章教学目标:1、了解、了解ADC的基本概念的基本概念2、MSP430 ADC12的原理与基本应用的原理与基本应用2第一节第一节 概述概述l计算机测量控制系统计算机测量控制系统计计算算机机控控制制对对象象传感器传感器放大器放大器滤波器滤波器A/DD/A放大器放大器执行部件执行部件3计计算算机机多多路路开开关关传传感感器器1放放大大器器1滤滤波波器器1模模拟拟量量1 采采 样样 保保 持持A/D传传感感器器n放放大大器器n滤滤波波
2、器器n模模拟拟量量nl数据采集系统数据采集系统与本课程相关部分与本课程相关部分音频、视频信号音频、视频信号数字通信数字通信4第二节第二节 模模/数转换器数转换器一、一、A/D 转换器的基本原理转换器的基本原理二、二、MSP430 ADC12介绍介绍5一、一、A/D 转换器的基本原理转换器的基本原理模拟输入量模拟输入量数字输出量数字输出量000001010011000001010011 1v 2v 3v 4v 5v 6v 7vA/D转换器转换器模拟输入量模拟输入量数字输出量数字输出量量化量化6工作原理工作原理特点特点计数式计数式结构简单、结构简单、转换速度慢、精度低,实际少用转换速度慢、精度低,
3、实际少用双积分式双积分式精度高、转换速度慢、抗干扰性能好精度高、转换速度慢、抗干扰性能好逐次逼近式逐次逼近式转换速度较快、精度较高转换速度较快、精度较高实际常用、抗干扰性能不如积分式实际常用、抗干扰性能不如积分式高速并行式高速并行式转换速度快转换速度快,价格高,精度低价格高,精度低A/D转换器分类转换器分类式式7 1分辨率:分辨率:指指A/D转换器所能分辨的最小模拟输入量,转换器所能分辨的最小模拟输入量,通常用通常用A/D的位数表示。如:的位数表示。如:8位位A/D的的分辨率分辨率为为8位,位,10位位A/D的的分辨率分辨率为为10位位 2转换精度:转换精度:指实际输入的模拟值与理论输入的模拟
4、值指实际输入的模拟值与理论输入的模拟值(根据(根据A/D输出推算)之间的偏差。常用数字量最低有效位输出推算)之间的偏差。常用数字量最低有效位 LSB 的几分之几的几分之几表示。表示。1 14LSB1 12LSB 3转换时间和转换速度:转换时间和转换速度:转换时间转换时间指完成一次指完成一次A/D转换转换所需的时间,从启动信号开始到转换结束,得到稳定数字量的所需的时间,从启动信号开始到转换结束,得到稳定数字量的时间。时间。转换速度转换速度是转换时间的倒数。是转换时间的倒数。A/D转换器的主要技术指标转换器的主要技术指标8逐次逼近式逐次逼近式A/D转换器原理图转换器原理图-+D/A转换器转换器输出
5、缓冲器输出缓冲器控制控制电路电路启动信号启动信号STARTCLK 时钟时钟EOC转换结束信号转换结束信号D D7 7D D0 0比较器比较器模拟输入模拟输入数字输出数字输出 NADCVinOE 输出使能信号输出使能信号SARVREFVDA90000000010000000110000001010000010110000101000101010000110100101xxxxxxxx1010110110101101D7D6D5D4D0D1D3D210A/D转换器的典型信号、电源、地转换器的典型信号、电源、地A/D转换器转换器模拟量输入信号模拟量输入信号A/D转换启动信号转换启动信号数字量输出数字
6、量输出A/D转换完成信号转换完成信号输出使能信号输出使能信号ADC时钟时钟电源电源模拟地模拟地数字地数字地参考电源参考电源11A/D转换的转换的启动启动电平启动电平启动高电平启动高电平启动低电平启动低电平启动脉冲沿启动脉冲沿启动上升沿启动上升沿启动下降沿启动下降沿启动启动方法启动方法软件启动软件启动硬件启动硬件启动启动信号启动信号12 CPU 对对 ADC 转换结果的读取方式转换结果的读取方式q 程序延时方式程序延时方式q 程序查询方式程序查询方式q 中断方式中断方式13二、二、MSP430 ADC12介绍介绍ADC12模块是一个转换速度高达模块是一个转换速度高达200ksps、采样时间可编程
7、、采样时间可编程的的12-bit逐次逼近型模数转换器。由逐次逼近型模数转换器。由12-bit的的SAR核、采样保核、采样保持电路、模拟开关、参考电压产生与选择电路、持电路、模拟开关、参考电压产生与选择电路、ADC时钟时钟选择电路、采样与转换控制电路、选择电路、采样与转换控制电路、16个转换结果存储缓冲器个转换结果存储缓冲器及其对应的及其对应的16个存储控制寄存器、中断系统、片上集成温度个存储控制寄存器、中断系统、片上集成温度传感器等组成。传感器等组成。ADC12可以在没有可以在没有CPU的参与下,独立实的参与下,独立实现多达现多达16次的采样、转换和存储操作。次的采样、转换和存储操作。ADC1
8、2模块可以独模块可以独立断电,以便于低功耗设计。立断电,以便于低功耗设计。MSP430X13X,MSP430X14X,MSP43015X和和MSP430X16X等等芯片中均有芯片中均有ADC12模块。模块。14ADC12模块模块15ADC12 的特点与性能指标:的特点与性能指标:采样率可达采样率可达200ksps,采样率可编程;,采样率可编程;分辨率分辨率12-bit;内含内含16路模拟开关,其中路模拟开关,其中8路外部模拟输入,路外部模拟输入,1路内部温路内部温度传感器输入等;度传感器输入等;内含采样保持电路,采样时间可编程;内含采样保持电路,采样时间可编程;可由软件、可由软件、Timer_
9、A 或或Timer_B启动转换过程;启动转换过程;参考电压可编程:内部(参考电压可编程:内部(1.5V 或或2.5V)、外部;)、外部;4种转换模式;种转换模式;ADC核和内部参考电源可编程断电,以实现节能;核和内部参考电源可编程断电,以实现节能;具有中断(子)向量寄存器,供具有中断(子)向量寄存器,供18路路ADC中断译码用;中断译码用;具有具有16个转换结果存储寄存器。个转换结果存储寄存器。1612-BIT SAR ADC参参 考考电压源电压源时钟电路时钟电路采 样采 样/保持器保持器模模拟拟开开关关采样与转换控制电路采样与转换控制电路结果存储结果存储缓冲器缓冲器与与相应的控相应的控制寄存
10、器制寄存器MSP430 ADC12 原理框图原理框图1718ADC12的模数转换部分原理图的模数转换部分原理图19NADC=4095,当VinVR+NADC=0,当VinVR-VR+和和 VR-可由软件编程设置可由软件编程设置NADC=4095VinVR-VR+VR-ADC12的转换结果的转换结果NADC:20参考电压源参考电压源VR+,VR-电路电路21BIS#REFON+REF2_5V,&ADC12CTL0;turn on 2.5V ref BIS.B#SREF_1,&ADC12MCTL0 ;Vr+=Vref+举例举例:ADC12 通道通道 0 使用内部使用内部 2.5V 参考电压源参考电
11、压源SREF2 SREF1 SREF0 0 0 1#SREF_122BIS#REFON,&ADC12CTL0;turn on 2.5V ref BIS.B#SREF_1,&ADC12MCTL0 ;Vr+=Vref+举例举例:ADC12 通道通道 0 使用内部使用内部 1.5V 参考电压源参考电压源SREF2 SREF1 SREF0 0 0 1#SREF_123举例:举例:VR+使用外部正参考电压源使用外部正参考电压源 VeREF+BIS.B#SREF_2,&ADC12MCTL0SREF2 SREF1 SREF0 0 1 x#SREF_2 or#SREF_3 orBIS.B#SREF_3,&AD
12、C12MCTL024ADC12工作时钟(工作时钟(ADC12CLK)编程设置)编程设置例:例:BIS#ADC12SSEL_2,&ADC12CTL125MSP430F149 转换时钟、转换时间、电源建立时间转换时钟、转换时间、电源建立时间和采样时间等参数和采样时间等参数13/6.3=2.06,13/3.7=3.5126ADC12的模拟输入及其多路模拟开关的模拟输入及其多路模拟开关例:例:BIS.B#INCH_4,&ADC12MCTL027ADC12 中的采样保持器中的采样保持器采样采样/保持信号保持信号AD转换启动信号转换启动信号模拟开模拟开关输出关输出什么是采样保持器?什么是采样保持器?为什么
13、需要采样保持器?为什么需要采样保持器?请参见本章附录请参见本章附录28Sample/Hold Input SignalSAMPCON 为高电平时,采样保持器工作在采样模式为高电平时,采样保持器工作在采样模式SAMPCON 为低电平时,为低电平时,采样保持器工作在采样保持器工作在保持模式保持模式SAMPCON 的下降沿与的下降沿与 ADC12CLK 同步后启动同步后启动 AD 转换转换采样信号源选择采样信号源选择极性选择极性选择采样方式选择采样方式选择采样与转换控制采样与转换控制采样定时器采样定时器29采样与转换控制采样与转换控制ADC12SC.0ENC.1MSC.7SHT0 x.811SHT1
14、x.1215ISSH.8SHP.9SHSx.1011ADC12CTL0ADC12CTL130SHP=0,SAMPCON=SHI,非采样定时器采样方式非采样定时器采样方式 (Extended Sample Mode)SHP=1,SAMPCON=采样定时器输出采样定时器输出,采样定时器采样方式采样定时器采样方式 (Pulse Sample Mode)采样方式选择采样方式选择31非采样定时器采样方式(非采样定时器采样方式(Extended Sample Mode)SHP=0,SAMPCON=SHItsample=采样保持输入信号(采样保持输入信号(SHI)的宽度)的宽度32采样定时器采样方式(采样定
15、时器采样方式(Pulse Sample Mode)SHP=1,SAMPCON=采样定时器输出采样定时器输出tsample=采样定时器输出信号的宽度采样定时器输出信号的宽度采样保持输入信号的宽度采样保持输入信号的宽度01ADC12CLK4ADC12CLKtsample 1024ADC12CLK33采样定时器设置采样定时器设置设置采样时间设置采样时间 tsample4ADC12CLKtsample 1024ADC12CLKSHT0 xADC12CTL0.811SHT1xADC12CTL0.121534采样时间采样时间 计算计算tsampletsample (Rs+Ron)ln(2 )Cs+800n
16、s13tsample (Rs+2k )9.01140pF+800ns12-bit 分辨率下的最小采样时间计算公式:分辨率下的最小采样时间计算公式:当当Rs=10k 时,时,tsample 5.13sRsRonCsMSP430Vs外部模拟信号源外部模拟信号源模拟开关模拟开关导通电阻导通电阻采样保持电容采样保持电容采样期间模拟等效电路采样期间模拟等效电路2k 40pFVcVs-Vc 0.5LSB35举例举例:ADC12 通道通道 07,使用采样定时器采样方式,使用采样定时器采样方式,采样时间采样时间=16ADC12CLKSHT0 x=2,采样时间,采样时间=16ADC12CLKBIS#SHT0_2
17、,&ADC12CTL0 ;Sampling time=16ADC12CLKBIS#SHP,&ADC12CTL1 ;Use sampling timer36每进行一次采样和转换均需要每进行一次采样和转换均需要 SHI 上升沿上升沿去触发采样定时器去触发采样定时器除了启动第一次采样和转换时需要除了启动第一次采样和转换时需要 SHI 的的上升沿触发采样定时器外,后续的采样和转上升沿触发采样定时器外,后续的采样和转换过程无需换过程无需 SHI 的上升沿触发。一旦上一的上升沿触发。一旦上一次转换完毕,紧接着自动开始下一次的采样次转换完毕,紧接着自动开始下一次的采样和转换过程。和转换过程。MSC:多次采样
18、和转换控制位多次采样和转换控制位(仅序列或重复方式下有效)(仅序列或重复方式下有效)MSC=ADC12CTL0.7MSC=0:MSC=1:37采样保持信号源选择采样保持信号源选择同步同步SHSx=00,ADC12SC bit 软件启动软件启动SHSx=01,Timer_A Output Unit1启动启动SHSx=10,Timer_B Output Unit0启动启动SHSx=11,Timer_B Output Unit1启动启动ENCSHI采保源采保源ENCSHI采保源采保源ISSH=0ISSH=0SHSx=ADC12CTL1.101138MSP430F149 Timer_A Output
19、Unit1 具有内部启动采样转换信号具有内部启动采样转换信号3916个个12-bit的转换的转换结果存储缓冲器结果存储缓冲器16个个8-bit的转换的转换存储控制寄存器存储控制寄存器一一对应一一对应ADC12转换结果存储缓冲器转换结果存储缓冲器存储指针存储指针转换方式转换方式40ADC12 转换存储控制寄存器转换存储控制寄存器:ADC12MCTLx 参考电压源选择参考电压源选择 模拟输入通道选择模拟输入通道选择通道序通道序列结束列结束标志标志 EOS=1的通道是序列转换中最后转换的通道的通道是序列转换中最后转换的通道41n=CSTARTADDADC12MEM0ADC12MEM1ADC12MEM
20、nADC12MEM15ADC12MCTL0ADC12MCTL1ADC12MCTLnADC12MCTL15ADC12 通道(通道(channel)的概念)的概念ADC12 通道通道n一个一个ADC12通道通道(简称通道)(简称通道)由通道号、该通道的转换结果由通道号、该通道的转换结果存储缓冲器、该通道的参考电压源配置、该通道的模拟输入以存储缓冲器、该通道的参考电压源配置、该通道的模拟输入以及通道序列结束标志等组成。及通道序列结束标志等组成。ADC12通道通道n可以对应于可以对应于16个个模拟输入中的任何一个,不同的模拟输入中的任何一个,不同的ADC12通道可以对应于同一通道可以对应于同一个模拟输
21、入,不同的个模拟输入,不同的ADC12通道可以有不同的参考电压源。通道可以有不同的参考电压源。ADC12 通道与传统的模拟输入通道有很大的不同。通道与传统的模拟输入通道有很大的不同。CSTARTADD=ADC12CTL1的的最高最高 4 位的值位的值=01542ADC12 的通道序列(的通道序列(sequence of channels)n=CSTARTADDADC12MEMnADC12MEMn+1ADC12MEMn+2ADC12MEMn+m00011 1EOS序列开始序列开始序列结束序列结束k=(n+m)%16循环队列循环队列例:从例:从 n 号号ADC12 通道开始的,长度通道开始的,长度
22、=m+1 的通道序列的通道序列k4301n1514队首队首队尾队尾n=(n+1)%16n=CSTARTADD00001 EOS=1有限长通道序列:某些通道的EOS=111000044无限长通道序列:所有通道的EOS=001n1514队首队首n=(n+1)%16n=CSTARTADD00000 00000045ADC12的的 4 种转换方式(运行方式)种转换方式(运行方式)单通道单次转换方式单通道单次转换方式通道序列单轮转换方式通道序列单轮转换方式单通道重复转换方式单通道重复转换方式通道序列重复转换方式通道序列重复转换方式46常用转换方式常用转换方式通道序列单轮转换方式通道序列单轮转换方式每一轮
23、通道序列中第一通道的采样和转换都由定时器每一轮通道序列中第一通道的采样和转换都由定时器(TA1/TB0/TB1)启动,然后由采样定时器自动启动后续)启动,然后由采样定时器自动启动后续通道的快速采样和转换,直到通道的快速采样和转换,直到EOS=1的通道转换完毕,完的通道转换完毕,完成第一轮。成第一轮。定时器定时器采样定时器采样定时器采样间隔采样间隔ua ub uc icua ub uc ic第一轮第一轮第二轮第二轮47ADC12 offn=CSTARTADDx Wait for EnableSample,Input Channel Defined in ADC12MCTLnWait for Tr
24、iggerConvertConversion Completed,Result Stored into ADC12MEMn,ADC12IFGn is SetENCENC=ENC=SAMPCON=SAMPCON=1SAMPCON=12ADC12CLK1ADC12CLKEOS.n=1if n15 then n=n+1else n=0MSC=1 andSHP=1andEOS.n=0ADC12ON=1停止条件停止条件状态转换图状态转换图48定时器定时器 TA1 TA1 启动的通道序列单轮转换方式举例启动的通道序列单轮转换方式举例通道序列定义:通道序列定义:通道号通道号 结果存储结果存储缓冲器缓冲器模拟
25、输入模拟输入 参考电压源参考电压源EOS 0 ADC12MEM0 A0内部内部2.5V 0 1 ADC12MEM1 A1内部内部2.5V 0 2 ADC12MEM2 A2内部内部2.5V 0 3 ADC12MEM3 A3内部内部2.5V 149定时器定时器TA采样定时器采样定时器采样间隔采样间隔A0 A1 A2 A3第一轮第一轮A0 A1 A2 A3第二轮第二轮ADC12IFG3 interruptADC12IFG3 interrupt50BIS.B#BIT0+BIT1+BIT2+BIT3,&P6SELMOV#ADC12ON+SHT0_1+REF2_5V+REFON,&ADC12CTL0 ;M
26、OV#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 ;Enable ADC12BIS#BIT3,&ADC12IE ;Enable ADC12IFG3 interrupt ADC12 初始化编程:初始化编程:51Timer_A 初始化编程初始化编程采样间隔采样间隔=TACCR0(单位:
27、(单位:Timer clock 周期)周期)正脉冲宽度正脉冲宽度=TACCR0-TACCR1OUT152BIS.B#BIT2,&P1SEL ;OUT1:P1.2BIS.B#BIT2,&P1DIR ;P1.2 outputsMOV#INTERVAL,&TACCR0 ;TACCR0=INTERVALMOV#INTERVAL-WIDTH,&TACCR1MOV#OUTMOD_2,&TACCTL1MOV#TACLR+TASSEL_2+MC_1,&TACTL ;SMCLK,up mode53ADC12 模块模块ADC12OVADC12TOVADC12IFG0ADC12IFG1ADC12IFG15ADC12
28、 的中断的中断 分分3类,共类,共18个中断源个中断源ADC12MEMx 装入新数据中断装入新数据中断ADC12MEMx 被覆盖中断(上一被覆盖中断(上一次转换结果尚未读出,新的转换结次转换结果尚未读出,新的转换结果又写入同一个存储缓冲器中)果又写入同一个存储缓冲器中)ADC12转换时间溢出中断(采样转换时间溢出中断(采样转换间隔太短,前一次尚未转换完转换间隔太短,前一次尚未转换完毕,又启动新的毕,又启动新的AD转换)转换)中断优先级高中断优先级高中断优先级低中断优先级低如果如果ADC12OV/ADC12TOV中断是最高优先级的中断是最高优先级的已请求的中断,则读写已请求的中断,则读写ADC1
29、2IV寄存器将自动复位寄存器将自动复位ADC12OV/ADC12TOV54ADC12IFG0 ADC12IFG1 ADC12IFG15ADC12 中断控制中断控制ADC12IE0 ADC12IE1 ADC12IE15GIECPU0 No interrupt pending1 Interrupt pending0 Interrupt disable1 Interrupt enable读取读取ADC12MEMx将自动清零中断标志位将自动清零中断标志位ADC12IFGx,ADC12IFGx也可由软件清零。(存取也可由软件清零。(存取ADC12IV寄存器不会清寄存器不会清零中断标志位)零中断标志位)A
30、DC12OVADC12TOVADC12OVIE ADC12TOVIE ADC12CTL0.3ADC12CTL0.2优先级优先级总控总控分控分控0FFEEh共享中断向量共享中断向量55ADC12 的中断(子)向量寄存器的中断(子)向量寄存器read only register ADC12 中断服务子程的跳转表中断服务子程的跳转表56注意:注意:ADC12OV和和ADC12TOV没没有相应的可供读取有相应的可供读取的标志位的标志位57ADC12 中断服务子程结构中断服务子程结构ADC12_ISRADD&ADC12IV,PC;add offset to PCRETI;vector0:no inter
31、ruptJMP ADOV;vector2:ADC overflowJMP ADTOV;vector4:ADC timing overflowJMP ADM0;vector6:ADC12IFG0JMP ADM1;vector8:ADC12IFG1JMP ADM14;vector34:ADC12IFG14ADM15MOV&ADC12MEM15,XXX;mov result,flag is resetJMP INT_ADC12;check other int pendingADM14MOV&ADC12MEM14,XXX;mov result,flag is resetJMP INT_ADC12;ch
32、eck other int pending58ADM1MOV&ADC12MEM1,XXX;mov result,flag is resetJMP INT_ADC12;check other int pendingADM0MOV&ADC12MEM0,XXX;mov result,flag is resetRETIADTOVRETIADOVRETI;-;Interrupt Vectors Used MSP430 x13x/14x/15x/16x ORG 0FFEEh ;ADC12 Vector DW ADC12_ISR ;59ADC12 编程举例编程举例ADC12CTL0ADC12CTL1ADC1
33、2MCTLxADC12MEMxADC12IFGADC12IEP6SELADC12IV ADC12 的编程结构的编程结构(不考虑(不考虑TA1,TB0,TB1)60与与ADC12有关的引脚有关的引脚61模拟开关模拟开关A0.A7P6SEL.x=1必须为高阻态!必须为高阻态!P6SELBIS.B#BITx,&P6SEL62注意:应符合硬件互斥设计原则注意:应符合硬件互斥设计原则ADC12的的8个模拟输入引脚(个模拟输入引脚(A0A7)与)与P6数字输入输出引脚数字输入输出引脚复用,因此当上电复位后或编程选择这些引脚为复用,因此当上电复位后或编程选择这些引脚为I/O的输出功的输出功能的同时施加模拟输
34、入信号,将有可能导致大电流流经这些引能的同时施加模拟输入信号,将有可能导致大电流流经这些引脚的输出电路和模拟信号源,违反了互斥设计原则。脚的输出电路和模拟信号源,违反了互斥设计原则。为了实现互斥操作,应将与模拟信号相连接引脚的为了实现互斥操作,应将与模拟信号相连接引脚的P6SEL.x置置为为“1”:BIS.B#BIT.x,&P6SEL63ADC12CTL0自动自动快速快速连续连续采样采样转换转换控制控制内部参考电内部参考电压源控制位压源控制位ADC12模块供模块供电控制电控制溢出中断溢出中断使能控制使能控制转换转换使能使能控制控制软件软件启动启动采样采样转换转换控制控制815通道采样时间设置通
35、道采样时间设置07通道采样时间设置通道采样时间设置64ADC12CTL1通道序列起始通道号设置通道序列起始通道号设置采样信号采样信号源选择源选择采样采样方式方式选择选择采样采样保持保持信号信号反向反向控制控制位位ADC12时钟分频设置时钟分频设置ADC12时时钟源选择钟源选择转换方式转换方式选择选择ADC12“忙忙”指示位指示位65ADC12MCTLn 参考电压源选择参考电压源选择 模拟输入通道选择模拟输入通道选择通道序列结束标志通道序列结束标志n 通道属性控制寄存器通道属性控制寄存器注意:注意:ADC12CTL0、ADC12CTL1 和和 ADC12MCTLn 三种三种控制寄存器的大部分控制
36、位(灰色背景)需在控制寄存器的大部分控制位(灰色背景)需在 ENC=0 的情的情况下才能编程修改。况下才能编程修改。66ADC12控制寄存器的复位值:控制寄存器的复位值:不使用内部参考电压源不使用内部参考电压源ADC12模块处于断电状态模块处于断电状态禁止溢出中断禁止溢出中断ENC=0(未使能状态)(未使能状态)通道号或通道序列起始通道号通道号或通道序列起始通道号=0采样信号源为采样信号源为ADC12SC(软件启动)(软件启动)采样方式:不使用采样定时器采样方式:不使用采样定时器ADC12时钟为内部时钟,不分频时钟为内部时钟,不分频转换方式:单通道单次转换转换方式:单通道单次转换ADC12CT
37、L1=0000hADC12MCTLn=00hADC12CTL0=0000h模拟输入通道为模拟输入通道为A0参考电压源:参考电压源:VR-=AVSS,VR+=AVCC非结束通道(非结束通道(EOS=0)SHT0 x=0,SHT1x=0,MSC=0必须编程必须编程ADC12IE=0000h 禁止禁止ADC12IFGx中断中断67举例举例00 全部采用复位值,查询方式全部采用复位值,查询方式转换完毕后通过转换完毕后通过 P1.0 输出一个负脉冲输出一个负脉冲bis.b#01h,&P6SEL ;P6.0 ADC option selectmov#ADC12ON,&ADC12CTL0 ;ADC12 on
38、bis#ENC,&ADC12CTL0 ;Enable ADC12相关寄存器初始化编程:相关寄存器初始化编程:68软件启动单通道单次转换方式软件启动单通道单次转换方式状态转换图状态转换图ADC12 offn=CSTARTADDx Wait for EnableSample,Input Channel Defined in ADC12MCTLnConvertConversion Completed,Result Stored into ADC12MEMn,ADC12IFGn is SetADC12ON=1ENCSAMPCON=1ENC=1 or andADC12SC=SAMPCON=12个个ADC
39、12CLK1个个ADC12CLKENC=0ENC=0*ENC=0*Conversion result is unpredictable软件启动软件启动采样期间采样期间转换时间转换时间存储等时间存储等时间给模块供电给模块供电转换完毕后转换完毕后ADC12SC自动清零自动清零69#include ORG 01100h ;Program StartRESET mov#0A00h,SP ;Initialize stackpointermov#WDTPW+WDTHOLD,&WDTCTL ;Stop WDTbis.b#01h,&P6SEL ;P6.0 ADC option selectmov#ADC12O
40、N,&ADC12CTL0;ADC12 onbis#ENC,&ADC12CTL0 ;Enable ADC12 bis.b#01h,&P1DIR ;P1.0 outputbis.b#01h,&P1OUT ;P1.0=1Mainbis#ADC12SC,&ADC12CTL0;软件启动采样和转换软件启动采样和转换testIFG0 bit#BIT0,&ADC12IFG ;Conversion done?jnz testIFG0 ;No,test again bic.b#01h,&P1OUT ;P1.0=0bis.b#01h,&P1OUT ;P1.0=1 jmp Main70;-;Interrupt Vec
41、tors Used MSP430 x13x/14x/15x/16x;-ORG 0FFFEh ;MSP430 RESET Vector DW RESET ;END问题:请实验验证程序设计的正确性,如何改正?问题:请实验验证程序设计的正确性,如何改正?提示:采样时间?提示:采样时间?AD 转换启动信号?转换启动信号?ADC12SC automatically cleared at EOC.71举例举例 使用采样定时器,采样时间使用采样定时器,采样时间=16ADC12CLK,其它采用复位值。查询方式。其它采用复位值。查询方式。转换完毕后通过转换完毕后通过 P1.0 输出一个负脉冲输出一个负脉冲SHT
42、0 x=2,采样时间,采样时间=16ADC12CLK72不使用内部参考电压源不使用内部参考电压源ADC12模块处于断电状态模块处于断电状态禁止溢出中断禁止溢出中断ENC=0(未使能状态)(未使能状态)通道序列起始通道号通道序列起始通道号=0采样信号源为采样信号源为ADC12SC(软件启动)(软件启动)采样方式:采样方式:使用采样定时器使用采样定时器ADC12时钟为内部时钟,不分频时钟为内部时钟,不分频转换方式:单通道单次转换转换方式:单通道单次转换ADC12CTL1=0000hADC12MCTLn=00hADC12CTL0=0000h模拟输入通道为模拟输入通道为A0参考电压源:参考电压源:VR
43、-=AVSS,VR+=AVCC非结束通道(非结束通道(EOS=0)SHT0 x=0,SHT1x=0,MSC=0bis.b#01h,&P6SEL ;P6.0 ADC option selectmov#SHT0_2+ADC12ON,&ADC12CTL0 ;Sampling time,ADC12 onmov#SHP,&ADC12CTL1 ;Use sampling timerbis#ENC,&ADC12CTL0 ;Enable ADC12相关寄存器初始化编程:相关寄存器初始化编程:73#include ORG 01100h ;Program StartRESET mov#0A00h,SP ;Init
44、ialize stackpointermov#WDTPW+WDTHOLD,&WDTCTL ;Stop WDTbis.b#01h,&P6SEL ;P6.0 ADC option selectmov#SHT0_2+ADC12ON,&ADC12CTL0;Sampling time,ADC12 on mov#SHP,&ADC12CTL1 ;Use sampling timerbis#ENC,&ADC12CTL0 ;Enable ADC12 bis.b#01h,&P1DIR ;P1.0 outputbis.b#01h,&P1OUT ;P1.0=1Mainbis#ADC12SC,&ADC12CTL0;软件
45、启动采样和转换软件启动采样和转换testIFG0 bit#BIT0,&ADC12IFG ;Conversion done?jz testIFG0 ;No,test again bic.b#01h,&P1OUT ;P1.0=0bis.b#01h,&P1OUT ;P1.0=1 jmp Main74;-;Interrupt Vectors Used MSP430 x13x/14x/15x/16x;-ORG 0FFFEh ;MSP430 RESET Vector DW RESET ;END75举例举例01 使用采样定时器,采样时间使用采样定时器,采样时间=16ADC12CLK,使用使用 ADC12IF
46、G0 中断,中断,其它采用复位值。其它采用复位值。If A0 0.5*AVcc,P1.0 set,else reset.In Main MSP430 waits in LPM0 to save power untilconversion complete,ADC12_ISR will force exit from LPM0 in Main on reti.76bis.b#01h,&P6SEL ;P6.0 ADC option selectmov#SHT0_2+ADC12ON,&ADC12CTL0 ;Sampling time,ADC12 onmov#SHP,&ADC12CTL1 ;Use s
47、ampling timermov#01h,&ADC12IE ;Enable ADC12IFG0 interruptbis#ENC,&ADC12CTL0 ;Enable ADC12相关寄存器初始化编程:相关寄存器初始化编程:77#include ;-ORG 01100h ;Program Start;-RESET mov#0A00h,SP ;Initialize stackpointermov#WDTPW+WDTHOLD,&WDTCTL ;Stop WDTbis.b#01h,&P6SEL ;P6.0 ADC option selectmov#SHT0_2+ADC12ON,&ADC12CTL0;S
48、ampling time,ADC12 on mov#SHP,&ADC12CTL1 ;Use sampling timer mov#01h,&ADC12IE ;Enable ADC12IFG0 interrupt bis#ENC,&ADC12CTL0 ;Enable ADC12 bis.b#01h,&P1DIR ;P1.0 outputMainbis#ADC12SC,&ADC12CTL0 ;软件启动采样和转换软件启动采样和转换 bis#CPUOFF+GIE,SR ;LPM0,ADC12_ISR will force exit jmp Main ;Again 78;-ADC12_ISR;Exit
49、any LPMx on retibic.b#01h,&P1OUT ;P1.0=0 cmp#07FFh,&ADC12MEM0 ;ADC12MEM=A0 0.5AVcc?jlo ADC12_ISR_1 ;bis.b#01h,&P1OUT ;P1.0=1ADC12_ISR_1 bic#CPUOFF,0(SP);Exit any LPM0 on reti reti ;-;Interrupt Vectors Used MSP430 x13x/14x/15x/16x;-ORG 0FFFEh ;MSP430 RESET Vector DW RESET ;ORG 0FFEEh ;ADC12 Vector DW
50、 ADC12_ISR ;END79举例举例02使用内部使用内部 2.5V 参考电压源,参考电压源,使用采样定时器,采样时间使用采样定时器,采样时间=16ADC12CLK,其它采用复位值。查询方式。其它采用复位值。查询方式。转换完毕后通过转换完毕后通过 P1.0 输出一个负脉冲输出一个负脉冲80SREF2 SREF1 SREF0 0 0 1#SREF_181相关寄存器初始化编程:相关寄存器初始化编程:bis.b#BIT0,&P6SEL ;Enable A/D channel A0mov#REFON+REF2_5V+ADC12ON+SHT0_2,&ADC12CTL0 ;turn on 2.5V r
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。