收藏 分销(赏)

ADC设置流程.doc

上传人:pc****0 文档编号:7775152 上传时间:2025-01-16 格式:DOC 页数:9 大小:102.50KB
下载 相关 举报
ADC设置流程.doc_第1页
第1页 / 共9页
ADC设置流程.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述
   寄存器ADC12CTL0: SHT1  SHT0    MSC  2.5V REFON  ADC120N ADC12TOVIE  ADC12TVIE   ENC   ADC12SC 15-12  11-8    7    6     5     4     3    2        1        0 操作寄存器ADC12CTL1  CSSTARTADD   SHS     SHP  ISSH   ADC12DIV   ADC12SSEL   CONSEQ   ADC12BUSY   15-12      11-10    9    8     7-5     4-3      2-1       0 ADC12MCTL转换存储控制寄存器的操作: EOS             SREF          INCH  7              6 5 4         3 2 1 0 ADC12IE为中断使能寄存器 ADC12IE.15   14  .........1     0 ADC12IFG   ADC编程的流程如下: 1初始化, void Adc12int() { ADC12CTL0 &= ~ADC12ENC; //使AD模块处于初始状态 ADC12CTL0 = ADC12MSC+ADC12SHT0_15+ADC12SHT1_15;//使用外部部3.3V参考电压,使用采样保持器。 } // #define ADC12ENC            (0x0002u)  #define ADC12MSC            (0x0080u) #define ADC12SHT0_15        (15*0x100u) #define ADC12SHT1_15        (15*0x1000u) // 一、寄存器ADC12CTL0: SHT1  SHT0    MSC  2.5V REFON  ADC120N ADC12TOVIE  ADC12TVIE   ENC   ADC12SC 15-12  11-8    7    6     5     4     3    2        1        0 ADC120SC :ADC12内部时钟源(启动) ENC 位为转换允许,1允许AD转换,0时为不允许转换,即复位状态;由于ADC12CTL0和ADC12CTL1的一些位和ADCMCTILX的所有位必须在ENC位复位时才能修改。因而初始过程为: ENC复位——设置转换启动方式——打开参考电压——选择采样保持器时间 SHT1  SHT0 采样保持定时器1和0,定义转换结果中转换时序与采样时钟ADC12CLK的关系。程序设置都为1, MSC 多次采样、转换位。    有效条件:CONSE!=0,MSC=1表示仅首次转换同SHI信号的上升沿触发采定时器,采样转换在前一转换完成立即进行。程序中设置为1 MSC的作用是:在顺序转换或重复转换中,若MSC置1则只需最初有一个触发信号,随后都会在前一次转换完成后,自动进入下一次转换。否则的话,每次转换完成都还需另个的触发信号。-----------DATASHEET. 本文来自: 高校自动化网(W) 详细出处参考(转载请保留本链接): 2.5V 内部参考电压选择位:0——1.5V,1——2.5V REFON  参考电压控制位 0内部参考电压关闭  1则为打开 ADC12ON  内核控制位  0关闭 1打开 ADC12TOVIE  转换时间溢出中断允许 0没发生转换时间溢出  1则表示发生 ADC12TVIE   溢出中断允许位   0没有发生溢出  1表示发生溢出 以上5个位都设置0。 整个初始化意为选择使用外部参考源 2  打开ADC12模块 void Adc12Open(uchar doit) {  if(doit==0)  {   ADC12CTL0 |= ADC12ON;   ADC12CTL0 |= ADC12ENC;  //允许转换  }  else if(doit==100)  {   ADC12CTL0 &= ~ADC12ON;  //不允许转换   ADC12CTL0 &= ~ADC12ENC;  } } #define ADC12ON             (0x0010u)  #define ADC12ENC            (0x0002u)  寄存器ADC12CTL0中的ADC12ON复位时关闭ADC12的内核,置位时打开ADC12的内核。 寄存器同初始化,其实也可以看是初始化的一个步骤。即将ADC12CTL0中的ADC12ON和ENC置位,打开内核,允许ADC转换。 3   AdcDo函数 设置AD转换所使用的的模式和转换首地址。 AdcDo(0,2); void AdcDo(uint adr,uchar mod) {  ADC12CTL1 = (adr<<12)+ADC12SHP+(mod<<1);   //SHP意思为由采样定时器控制采样 } #define ADC12SHP            (0x0200u)    二、操作寄存器ADC12CTL1  CSSTARTADD   SHS     SHP  ISSH   ADC12DIV   ADC12SSEL   CONSEQ   ADC12BUSY   15-12      11-10    9    8     7-5     4-3      2-1       0 CSSTARTADD   转换存储器地址位,这4位表示二进制0-15分别对应ADC12MEM0-15.可以定义单次转换地址或序列转换的首地址。(程序中设置为0) 扩展采样模式(SHP=0):即SHI信号直接决定采样时间,参看DATASHEET和时序图; 脉冲采样模式时,SHI只负责输入一个上升沿信号来触发采样,而采样时间由ADC12CLK及SHT0_X或SHT1_X决定。 SHS   采样触发输入源选择位 0  ADC12SC   1 TIMER_A.OUT1    2  TIMER_B.OUT0      3 TIMER_B.OUT1    (程序中为1) SHP  采样信号(SAMPCON)选择控制位 0 采样信号源自采样触发输入信号   1 源自采样定时器,由输入信号(即采样信号)的上升沿触发采样定时器。   (程序中为0) ISSH  采样输入信号方向控制位   (程序中为0)       0 同向输入   1 反向输入 ADC12DIV  ADC12时钟源分频因子选择位,分频因子为3位二进制加一。  (程序中为0即分频因子为0) ADC12SSEL   ADC12内核时钟源选择 0 ADC12内部时钟源:ADC120SC   1 ACLK   2 MCLK    3 SMCLK (程序中为0,选ADC内部时钟) CONSEQ   转换模式选择位     0  单通道单次转换   1 序列通道单次转换   2 单通道多次转换   3 序列通道多次转换 (程序中为2) ADC12BSSY   ADC12忙标志      0  表示没有活动   1表示正处于采样期间、转换、或序列转换期间。   (程序中为0) 注:只用于单通道单次转换模式 3-15位只能大ENC=0的前提下才能修改,因而初始化时是让ENC为复位。 4. SetTongDao void SetTongDao(uchar tongdao,uchar eos,uchar mem,uchar verf,uchar inter)  4 0 0 2 1 {  char *pmem_ctl= ADC12MCTL;  pmem_ctl += mem;//pmem_ctl加上mem,所指向的即为要操作的寄存器ADC12MCTLx  *pmem_ctl = tongdao+ (eos<<7) + (verf<<4);  if(inter==0)   ADC12IE &= ~(0x1<<mem);  else   ADC12IE |= (0x1<<mem); }    此函数的功能是设置通道。有关通道的设置是针对某个转换存储器,应该设置以下内容:  1、选择转换通道         2、选择的通道是否是转换序列的最后一个通道  3、选择转换参考电压     4、转换完毕后是否触发中断    指针变量pmem_ctl指向ADC12MCTL的基地址,参数mem的取值为0~15,对应各存储器。pmem_ctl加上mem,所指向的即为要操作的寄存器ADC12MCTLx,在本模块中,应当至少使转换序列的最后一个通道转换完成时触发中断,以便置位等待转换结束的标志变量Wait,Wait为全局变量。    实质是对 三、ADC12MCTL转换存储控制寄存器的操作: EOS                   SREF          INCH  7                   6 5 4         3 2 1 0 EOS为序列结束控制位  0表示序列还没有结束  EOS=1表示此序列中最后一次转换 (程序中取0,取外部中断源) EOS位于所需AD通道中最后一个通道的ADC12MCTLX中,并且,中断允许是最后一个通道对应的ADC12MEMX对应的中断允许置位。 SREF  参考电压选择位   (程序中取2/3) 0 VR+=AVCC,VR=AVSS  (采集两路模拟电源)   1 VR+=VREF+ (内部参考源),VR-=AVSS (模拟电源)  2\3 VR+=VAREF+(外部参考),VR-=AVSS (模拟电源)  4  VR+=AVCC,VR-=VREF_/VEREF- 5 VR+ =VREF+,VR-= REF_/VEREF-        6,7 VR+=VEREF+,VR-=VREF-/VEREF- INCH     (程序中取0) 0-7  A0-A7          (此为8路外部通道) 8  VEREF+           9 Veref+          10 片内温度传感器输出   11(Avcc-Avss)/2  此为4路内部部通道 12-15   A12 - A15 其中 四、ADC12IE为中断使能寄存器 ADC12IE.15   14  .........1     0 意思1为允许相应的中断标志位ADC12IFG.X在置位时发生中断请求,0为禁止中断。 顺便介绍 五、ADC12IFG 各位为1表示转换结束,且转换结果已经装入转换存储器,0表示ADC12MEMX被仿问。 因此上面的程序中,如果INTER=则禁止中断,1则允许中断。 5  Adc12Go void Adc12Go() {  uchar q0;  for(q0=0;q0<16;q0++) AdMem[q0]=0;  Wait=0;  ADC12CTL0 |= ADC12ENC+ADC12SC; //转换开始  while(Wait==0)  {;}           //等待转换结束 } 此函数功能为使用软件方式AD,全局数组ADMEM用来存储转换结果,在启动前前16位全部赋0并复位转换完成标示WAIT。启动转换的方法为将ADC12CTL0的ENC置位,将寄存器在ADC12CTL0中的ADC12SC位置位, ADC12采样保持时间与采样频率 (由于近期要做简易示波器,要用到高频采样,所以对MSP430内部的ADC12进行了一些实验。技术手册中说明ADC12的最高采样频率可以达到200ksps,但是经过研究发现ADC12的最高采样频率只有165KHz;采样保持时间与转换时间是不可避免的。以下为微控资料: 【采样与转换】 ADC12完成对一个模拟信号模数转换过程由两部分组成:采样保持和转换. 完成采样转换周期时间= 采样保持时间 +转换时间 采样保持时间: 由产生SAMPCON信号开始到结束所需时间,这期间ADC进行对模拟信号采样保持。在脉冲采样模式时(SHP=1),采样时间: Tsample = 4 x ADC12CLK x N。式中,Tsample为采样保持时间,ADC12CLK为ADC12内核时钟周期,N则由SHT1(SHT0)的4位二进制码决定。采样保持时间与ADC12模块的等效输入电路有关。从ADC12模块输入看ADC内部等效为一个电阻(2K)与一个电容(30pf)相串联.这个内部RC常数直接影响着最小的采样保持时间参数.所以,在采样转换中有一个最小采样保持时间值概念.这个最小采样保持时间值从上式中可以看出是由ADC12CLK时间周期决定(N=1时),也就是说ADC12CLK的最高频率;这个频率不能超出MSP430芯片手册中所指定的最高频率(最小采样保持时间值)。关于脉冲采样模式(SHP=1)这个最小采样保持时间值因芯片不同,详情可以查看相应的芯片手册。 转换时间:ADC12核将采样保持的模拟信号转换成数字所需要的时间,这个转换时间在脉冲采样模式和扩展采样模式都是相同的。 转换时间=13 x (ADC12CLK/Fadc12clk) 在脉冲采样模式时完成一个模拟信号采样转换周期时间计数公式为: = (4 x ADC12CLK x N) + ( 13 xADC12CLK/Fadc12clk)) 以上内容来自微控论坛,因为要使用最高采样频率,对输入时钟以及采样保持时间不清楚,1611头文件中并未指出SHTx_x对应的分频因子具体是多少,所以自己亲自实验测量。输入信号为1kHz,ADC输入时钟为SMCLK,时钟频率为8MHz。 #define SHT0_0 (0*0x100u)//分频因子为N=0(此时无保持时间,无法运行) #define SHT0_1 (1*0x100u)//分频因子为N=8.8(对应采样频率为166k) #define SHT0_2 (2*0x100u)//分频因子为N=8.8 (对应采样频率为166k) #define SHT0_3 (3*0x100u)//分频因子为N=9 (对应采样频率为162k) #define SHT0_4 (4*0x100u)//分频因子为N=16 (对应采样频率为104k) #define SHT0_5 (5*0x100u)//分频因子为N=24 (对应采样频率为73k) #define SHT0_6 (6*0x100u)//分频因子为N=32 (对应采样频率为57k) #define SHT0_7 (7*0x100u)//分频因子为N=48 (对应采样频率为39k) #define SHT0_8 (8*0x100u)//分频因子为N=64 (对应采样频率为30k) 可见ADC12的最高采样频率为165KHz,实验数据没有进行数据统计,内容仅供参考。 补充:SHP=1时为脉冲采样模式(pulse mode),此时采样由采样定时器的上升沿触发, Tsample = 4 x ADC12CLK x N,分频因子N决定了采样保持时间的长短。SHP=0时为扩展采样模式(extended sample ),采样由SHI信号触发,(无采样保持时间,)SAMPCON信号在高电平时采样下降沿转换,转换时间为13个ADC12CLK。  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服