搜索
bottom↓
回复: 2

下面 msp430 的AD转换设定有问题吗?测得数据不太对啊?

[复制链接]

出0入0汤圆

发表于 2011-8-11 10:43:09 | 显示全部楼层 |阅读模式
//===================

void init_ad(void)
{
  //ADC12CTL0 = ADC12ON+MSC+SHT0_8;           // 开启ADC12, 设置采样时间                                          
  //ADC12CTL1 = SHP+CONSEQ_3;                 // 多次采样
   
  ADC12CTL0 = ADC12ON+SHT1_6+SHT0_6+MSC+REFON;           // 开启ADC12, 设置采样时间      
  ADC12CTL0|= REF2_5V  ;
  ADC12CTL1 = SHP+CONSEQ_3;                 // 多次采样
  
  //ADC12MCTL3 = INCH_3;                      // ref+=AVcc, channel = A2
  //ADC12MCTL4 = INCH_4+EOS;                  // ref+=AVcc, channel = A3, end seq.
  
   //ADC12MCTL0 = INCH_0;                      // ref+=AVcc, channel = A2
  ADC12MCTL0 = INCH_0;                     // ref+=AVcc, channel = A2
  ADC12MCTL1 = INCH_1+EOS+SREF_5;                  // ref+=AVcc, channel = A3, end seq.
}
//=======================下面需要改
void close_ad(void)
{
  ADC12CTL0 &= ~ENC;
// ADC12CTL0 &= ~ADC12ON;
}   

void data_convert(void)
{
  ADC12CTL0 |=ENC +ADC12SC;
  P6SEL |= 0x03;                            // P6.0 ADC option select
  while( 1 == (ADC12IFG&ADC12BUSY))
  {
   ad_data0 = ADC12MEM0;
   ad_data1 = ADC12MEM1;
  }
  close_ad();
端口0实际电压为:0.725  0.725/2.5*4096=1187,msp430给出数据880;
端口1实际电压为:1.9    1.9/2.5*4096  =3112,msp430给出数据3967;
参考源为 :2.5吧 (我设定成 2.0数据也没有变化,不知道什么原因?)
上面数据  差距很大啊,是不适哪里设定有问题?
为何设定 SREF_5  与否 采集到的数据都是一样的?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-8-16 13:28:02 | 显示全部楼层
说实话,没发现什么问题,就是拿不定 参考电压源应该用SREF_5么?
SREF_5 :正选ref+,负选ref-/eREF-、
SREF_1: 正选ref+,负选AVss。

我用F169的片子,也是2.5内部参考电压,用的都是SREF_1,相当准确。

当时用的AD初始化:
void init_AD(void)
{
  P6SEL = 0x0F;                             // Pin P6 used by ADC module
  REFCTL0 &= ~REFMSTR;                      // Reset REFMSTR to hand over control to
                                            // ADC12_A ref control registers
  ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT03+ADC12REFON+ADC12REF2_5V;           // ADC12 on, extend sampling time
                                            // to avoid overflow of results
  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_3;                 // Use sampling timer, repeated seq
  ADC12MCTL0 = ADC12SREF_1+ADC12INCH_0;                      // ref+=AVcc, channel = A0
  ADC12MCTL1 = ADC12SREF_1+ADC12INCH_1;                      // ref+=AVcc, channel = A1
  ADC12MCTL2 = ADC12SREF_1+ADC12INCH_2;                      // ref+=AVcc, channel = A2
  ADC12MCTL3 = ADC12SREF_1+ADC12INCH_3+ADC12EOS;                  // ref+=AVcc, channel = A3, end seq.
}

出0入0汤圆

发表于 2011-8-16 13:31:51 | 显示全部楼层
同样MCTL0与MCTL1为什么不用同样的SREF,上边的程序 MCTL0用的是SREF_0 :正 AVcc,负 ACss;MCTL1用的是SREF_5
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-28 15:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表