7516|3

114

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

430F5438A的ADC内部参考电压问题 [复制链接]

430F5438A的ADC内部参考电压问题   最近在搞ADC,把5438的ADC这章看了一遍,然后用例程去仿真了一下,发现一个问题,就是用内部参考电压的时候在寄存器CTL0设置了2.5V,REFON也置1了,然后MCTL1里的SREF为1,这都是按例程里来设置的,结果在A0输入的时候,得到的仿真结果是0X0FFF,也就是4095,这说明我的输入是超过或者是等于参考电压,但我实际测的A0的输入电压为1.1V左右,跟2.5V都差很多啊,为什么是满的值。
我把参考电压选择SREF改为0,也就是参考电压为AVCC跟AVSS,这样转换的值就正确了,3.3V的参考转换后在1453左右,误差不大,就是内部参考2.5V或者1.5V都不行,始终转换为满值4095,不知道问题出在哪,请大大指教
下面是调试程序:
#include
volatile long temp;
void AD_Init(void)
{
   int i;
   P6SEL |= 0x01;                            // Enable A/D channel A0
   ADC12CTL0 = ADC12ON+ADC12SHT0_4+ADC12REFON+ADC12REF2_5V; // Turn on ADC12, set sampling time,选用内部参考2.5V
   ADC12CTL1 = ADC12SHP;       // Use sampling timer, set mode
   ADC12MCTL0 = ADC12SREF_1+ADC12INCH_0;                 // Vr+=Vref+ and Vr-=AVss
   for ( i=0; i<0x30; i++);                  // Delay for reference start-up
   ADC12CTL0 |= ADC12ENC;                    // Enable conversions
}
void AD_Start(void)
{
   ADC12CTL0 |= ADC12SC;                     // Start conversion
}
int main(void)
{
   WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer
   AD_Init();                                             //AD初始化
  while(1)
   {
     AD_Start();                                        //开始AD转换
    while (!(ADC12IFG & BIT0));               //判断转换完成与否
    temp = ADC12MEM0;                        //读取转换数据,IFG自动清零
     __no_operation();                         // For debugger
   }
   
}
在修改ADCMCTL0中的ADC12SREF_1这个参数,当为0时,转换数据正常,当为1时,得到的结果就是4095,而不管CTL0中的REF_2.5V置1与否。
不知道是不是芯片的AVCC跟AVSS始终有输入,所以就内部参考电压设置不了?还望大大们指导下。

最新回复

那是因为你没使能内参考。 在初始化部分添加如下代码: REFCTL0 |= REFMSTR+REFVSEL_2+REFON+REFTCOFF;  详情 回复 发表于 2013-8-21 11:30
 
点赞 关注

回复
举报

400

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
那是因为你没使能内参考。
在初始化部分添加如下代码:
REFCTL0 |= REFMSTR+REFVSEL_2+REFON+REFTCOFF;

点评

非常感谢,是我漏掉了REF这一章,看过之后按照你给的配置,是可以使用内部参考的。非常感谢。  详情 回复 发表于 2013-9-10 16:03
这个寄存器我没在资料上看到有啊,使用手册上ADC12没有这个寄存器的,是哪个模块的?  详情 回复 发表于 2013-8-27 14:47
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

回复 沙发Triton.zhang 的帖子

这个寄存器我没在资料上看到有啊,使用手册上ADC12没有这个寄存器的,是哪个模块的?
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

4
 

回复 沙发Triton.zhang 的帖子

非常感谢,是我漏掉了REF这一章,看过之后按照你给的配置,是可以使用内部参考的。非常感谢。
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表