注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
ren364940161的个人空间 https://home.eeworld.com.cn/space-uid-282794.html [收藏] [复制] [分享] [RSS]
日志

msp430ADC12

已有 3207 次阅读2012-2-26 15:33 |个人分类:MSP430

1.1.    介绍

Figure 4  AD模块图

在处AD时,我们关注的对象有如下几个,参考源、通道、存储地址、时钟、触发方式、精度,速度(200k)。

在上图中我们都可以找到,msp430f149的参考正电源有VRFE+ VeREF+ ,Vcc,同时有对应的负电源。采样通道有16个,存储地址则有对应16个通道,时钟则是有内部时钟及3种时钟源的分频,触发方式有4种。

因此,对于这些特点我们可以实现4种模式,单通道单次采样,单通道多次采样,多通道单次采样,多通道多次采样。

1.2.    相关寄存器

ADC12CTL0:前面8位是对采样保持时间的设置。后8位分别对应8种设置

ADC12CTL1:4位进行通道选择,后12位中有其它设置

ADC12MEMX:存储地址

ADC12MCTLX:通道,是否结速,在ENC=0时才可写

1.3.    样例代码

单通道单次采样:

P6SEL |= 0x01;                        // 使能A/D 通道A0

ADC12CTL0 = ADC12ON+SHT0_2; // 打开 ADC12, 设置采样时钟

ADC12CTL1 = SHP;                      // 使用采样时钟

//ADC12MCTL0 = SREF_2;            // Vr+ = VeREF+ (外部)

ADC12CTL0 |= ENC+ADC12SC;                     // 使能转换

While(1)

{

   ADC12CTL0 |= ADC12SC;               // 开始转换

   while ((ADC12IFG & ADC12BUSY)==0);

   value=ADC12MEM0;

}

单通道多次采样:

P6SEL |= 0x01;                        // 使能A/D 通道A0

ADC12CTL0 = ADC12ON+SHT0_2; // 打开 ADC12, 设置采样时钟

ADC12CTL1 = SHP+CONSEQ_2;                      // 使用采样时钟

//ADC12MCTL0 = SREF_2;            // Vr+ = VeREF+ (外部)

ADC12CTL0 |= ENC+ADC12SC+MSC;                     // 使能转换

While(1)

{

  while ((ADC12IFG & ADC12BUSY)==0);

           value=ADC12MEM0;

}

多通道单次采样

P6SEL |= 0xff;                        // 使能A/D 通道A0

   ADC12CTL0 = ADC12ON+SHT0_2; // 打开 ADC12, 设置采样时钟

   ADC12CTL1 = SHP+CONSEQ_1;                      // 使用采样时钟

   //ADC12MCTL0 = SREF_2;            // Vr+ = VeREF+ (外部)

   ADC12MCTL4|=INCH_5;

   ADC12MCTL6|=EOS+INCH_4;

   ADC12CTL0 |= ENC+ADC12SC+MSC;                     // 使能转换

While(1)

{

   ADC12CTL0 |= ADC12SC;               // 开始转换

   while ((ADC12IFG & ADC12BUSY)==0);

   value=ADC12MEM0;

  // value=ADC12MEM1;

}

多通道多次转换

P6SEL |= 0xff;                        // 使能A/D 通道A0

   ADC12CTL0 = ADC12ON+SHT0_2; // 打开 ADC12, 设置采样时钟

   ADC12CTL1 = SHP+CONSEQ_3;                      // 使用采样时钟

   //ADC12MCTL0 = SREF_2;            // Vr+ = VeREF+ (外部)

   ADC12MCTL4|=INCH_5;

   ADC12MCTL6|=EOS+INCH_4;

   ADC12CTL0 |= ENC+ADC12SC+MSC;                     // 使能转换

   ADC12CTL0 |= ADC12SC;               // 开始转换

while(1)

  { 

   while ((ADC12IFG & ADC12BUSY)==0);

         value=ADC12MEM0;

    Delay_nop(1000);

  }

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章