打印
[MSP430]

msp430f5438A ADC内部参考问题

[复制链接]
2084|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjxcml|  楼主 | 2013-11-21 14:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5438A 中不支持 ADC12 使用 REFMSTR=1模式。 但是在程序中使用REFMSTR=1模式也能得到正确的电压值 不知道为什么?
程序如下:
#include "msp430f5438a.h"
#define uchar unsigned char
#define uint unsigned int
void Adc12()
{
  P6SEL |= BIT5;                            // 选择P6.5作为模拟信号的输入端
  ADC12CTL0 = ADC12ON;                      // 使能转换模块                                
  REFCTL0|=REFMSTR+REFVSEL_2+REFON;
  //使能REF管理,内部参考电压选择2.5v、打开内部参考电压
  ADC12CTL1 = ADC12SHP;//                       // 选择脉冲触发模式、单通道单次次转换模式
  ADC12MCTL0= ADC12SREF_1+ADC12INCH_5;               //选择参考电压源、现在a5通道
  ADC12CTL0 |= ADC12ENC;                        // 使能转换模块
  for ( uchar i=0; i<0x30; i++);
  ADC12CTL0 |= ADC12SC;               // 开始转换
  while ((ADC12CTL1 & ADC12BUSY));
  uint Average= ADC12MEM0;            //观察Average
  Average=Average-1;
  
}
void main()
{
  Adc12();
}  
如下图 :

截图2013.png (9.8 KB )

截图2013.png

相关帖子

沙发
ayb_ice| | 2013-11-21 15:15 | 只看该作者
不是说的很清楚吗,5438A不支持此种模式

使用特权

评论回复
板凳
zjxcml|  楼主 | 2013-11-22 09:12 | 只看该作者
ayb_ice 发表于 2013-11-21 15:15
不是说的很清楚吗,5438A不支持此种模式

如程序:REFCTL0|=REFMSTR+REFVSEL_2+REFON;
在硬件上跑的时候也可以得到正确的结果,然后我又用REFMSTR=0 的模式试了下两者的结果几乎没有差距,这就有点搞不清楚了。

使用特权

评论回复
地板
ayb_ice| | 2013-11-22 09:25 | 只看该作者
可能测试条件不严格而已

我只关注正常操作的结果

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
zjxcml + 3 谢谢
5
zjxcml|  楼主 | 2013-11-24 12:00 | 只看该作者
ayb_ice 发表于 2013-11-22 09:25
可能测试条件不严格而已

我只关注正常操作的结果

呵呵,谢谢啦

使用特权

评论回复
6
gfy90043184| | 2014-3-21 15:50 | 只看该作者
我打算用ADC检测供电电池的电压,用149可以。用5438A怎么设置都不行。不知道为什么?电池正极接到AVCC端,VREF接电容到地。我不知道是哪里设置有误,你看看,下面是我的设置。还请高手指点一下
ADC12CTL0&= ~ADC12ENC;//

  ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12SHT1_8+ADC12MSC+ADC12REFON;//
  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2; //

ADC12CTL2 |=ADC12TCOFF;//
ADC12MCTL0|=ADC12SREF1+ADC12INCH_11;//
                             
  ADC12IE =ADC12IE0;// 0x01; //
  
  ADC12CTL0 |= ADC12ENC;    //              
  ADC12CTL0 |= ADC12SC;     //

使用特权

评论回复
7
gfy90043184| | 2014-3-21 15:51 | 只看该作者
看资料好像还要专门设置一下REF;我加上下面一句话,也还是不行。输出都是最大量程的样子。
REFCTL0 |= REFMSTR+REFVSEL_2+REFON+REFTCOFF;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

339

帖子

1

粉丝