1878|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

MSP430F149的ADC转换过程详解 [复制链接]

关于MSP430F149的A/D转换:(都必须经过以下阶段)

1、设置通道                  

2、打开ADC,设置采样时间     

3、使用采用定时器                       

4、设置参考电压   

5、使能开始                  

6、采样开始               

7、等待转换完成                             

8、把转换的值存入变量                    

一、单通道单次转换()



#include

#define uint unsigned int

/**********************************************************************************

                 延时语句

*********************************************************************************/

#define CPU_F ((double)8000000.0)

#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))

#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))



uint ad_temp;

void main(void)

{

     WDTCTL=WDTPW+WDTHOLD;                        //关闭看门狗

     P6SEL=0X01;                                                        //通道0

     ADC12CTL0=ADC12ON+SHT0_2+MSC;       //打开ADC12内核+采样周期+仅首次转换由SHI信号的上升沿触发采样定时器后面的采样在前一次完成后,立即进行

/*

1、ADC12ON: ADC12内核控制位   0:关闭内核   1:表示打开内核

2、ADC12CTL0 只有在ENC=0时才能被修改

*/

     ADC12CTL1=SHP+CONSEQ_0;                      //SAMPCON源自采样定时器,由采样输入信号的上升沿触发+单通道单次转换

/*

1、SHP  采样信号(SAMPCON)选择控制位

       0:采样信号源自采样触发器输入信号

       1:采样信号源自采样采样定时器,由采样输入信号的上升沿触发采样定时器

2、CONSEQ  转换模式选择位

       0:单通道单次转换

       1:序列通道单次转换模式

        2:单通道多次转换模式

        3:序列通道多次转换模式

*/

     ADCMCTL0=SREF_0;                                        //Vr+=AVcc,Vr-=AVss;

/*

SREF  参考电压选择位

*/

    ADC12CTL0|=ENC;                                               //首次转换由SAMPCON上升沿启动

/*

ENC 转换允许位

   0:ADC12为初始状态,不能启动A/D转换

   1:首次转换由采样信号上升沿启动

*/

    ADC12CTL0|=ADC12SC;                                     //采样/转换控制位开

/*

    ADC12SC  采样/转换控制位

*/

    delay_ms(100);                                                      //等待转换完成

   ad_temp=ADC12MEM0;                                       //将转换的值赋给变量ad_temp;

   delay_ms(50);

}

二、单通道多次转换

void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;
  P6SEL=0x01;
  ADC12CTL0=ADC12ON+SHT0_0+MSC;//打开内核,设置采样时间,设置采样模式
  ADC12CTL1=SHP+CONSEQ_2;       //选择采样信号,采用单通道多次转换模式
  ADC12IE=0X01;                                 //使能中断ADC12IFG.0
  ADC12CTL0|=ENC;                //转换允许
  _EINT();
  ADC12CTL0|=ADC12SC;            //开始转换
  _BIR_SR(LPM0_bits);
}
#pragma vector = ADC_VECTOR
__interrupt void ADC12ISR(void)
{

  ad_temp = ADC12MEM0;

}

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表