打印

MSP430F149 ADC12 不成功

[复制链接]
1982|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 arm菜鸟人 于 2013-7-15 21:29 编辑

使用MSP430F149 ADC12
想进行ADC转换,就是不成功。
请大家帮忙看看问题出在哪里。

/****************************************************************************************
函数名称: ADC12_Init(void)
功    能: ADC12 初始化
参    数: 无
返回值  : 无
****************************************************************************************/
void ADC12_Init(void)
{
P6SEL |= 0x01;   // 选择P6.0作为 ADC
P6DIR &= ~BIT0;  // 设置P6.0为输入

ADC12CTL0 &= ~ENC;                                        // 配置ADC寄存器 必须将ENC清零

ADC12CTL0 |= ADC12ON+SHT0_8+MSC;          // 打开ADC
                                                                            // 采样保持时间为 256 * ADC12CLK
                                                                            // 多次采样转换
ADC12CTL0 |= REFON + REF2_5V;                    // 打开参考电压发生器
                                                                            // 使用2.5V参考电压
ADC12CTL1 |= SHP+CONSEQ_2;                       // ADC12SC 启动 - SHSx = 00
                                                                            // 脉冲采样模式 SHP = 1
                                                                            // ADC12DIV = 000  /1
                                                                            // ADC12SSLx = 00 内部时钟
                                                                            // CONSEQx = 10 单通道多次转换
ADC12MCTL0 |= SREF_1;                                   // SREF0 = 001 - VR+ = VREF+/VR-=AVss
                                                                            // INCH = 0000 - A0
ADC12CTL0 |= ENC;                                           // 使能ADC12
}
/****************************************************************************************
函数名称: ADC12_Convert(void)
功    能: ADC12 启动函数
参    数: 无
返回值  : 无
说明    :
****************************************************************************************/
unsigned int ADC12_Convert(void)
{
unsigned char i;
unsigned int temp;
unsigned long int adc_temp;


for ( i = 0; i < Num_of_Results; i++)
    {
  ADC12CTL0 |=  ADC12SC;      // ADC12SC 启动模式
  while ((ADC12IFG & BIT0) == 0);    // 等待ADC 完成
  temp = ADC12MEM0;
  adc_temp += temp;
    }
adc_temp >>= 4;      // 求平均值
temp=adc_temp;

return temp;
}

ADC12_Convert.jpg (32.28 KB )

转换

转换

ADC12_Init.jpg (62.88 KB )

初始化

初始化

相关帖子

沙发
arm菜鸟人|  楼主 | 2013-7-15 21:17 | 只看该作者
发送的值固定,不随输入电压的变化而变化。

发送.jpg (18.92 KB )

发送.jpg

使用特权

评论回复
板凳
木子不二| | 2013-7-15 23:59 | 只看该作者
初始化没成功吧?  没有等待参考电源稳定?

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
arm菜鸟人 + 3
地板
arm菜鸟人|  楼主 | 2013-7-16 08:40 | 只看该作者
木子不二 发表于 2013-7-15 23:59
初始化没成功吧?  没有等待参考电源稳定?

谢谢您的回复,有这个可能,不知还有别的问题吗?

使用特权

评论回复
5
arm菜鸟人|  楼主 | 2013-7-16 10:53 | 只看该作者
木子不二 发表于 2013-7-15 23:59
初始化没成功吧?  没有等待参考电源稳定?

表示不是等待参考电源稳定的问题, 我设置参考电源 VR+ = AVCC 或者 延时等待一段时间
还是不能采集数据。

发送上来的数据 一直不变。

使用特权

评论回复
6
gaochy1126| | 2013-7-16 23:12 | 只看该作者
io口没有弄错吧!

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
arm菜鸟人 + 3
7
gaochy1126| | 2013-7-17 00:35 | 只看该作者
8
gaochy1126| | 2013-7-17 00:36 | 只看该作者
9
咚咚水深| | 2013-7-17 16:12 | 只看该作者
gaochy1126 发表于 2013-7-16 23:12
io口没有弄错吧!

io端口,一般接p6.0和p6.1。为什么程序里面就设定p6.0作为信号输入端

使用特权

评论回复
10
咚咚水深| | 2013-7-17 16:12 | 只看该作者
gaochy1126 发表于 2013-7-16 23:12
io口没有弄错吧!

io端口,一般接p6.0和p6.1。为什么程序里面就设定p6.0作为信号输入端

使用特权

评论回复
11
咚咚水深| | 2013-7-17 16:12 | 只看该作者
gaochy1126 发表于 2013-7-16 23:12
io口没有弄错吧!

io端口,一般接p6.0和p6.1。为什么程序里面就设定p6.0作为信号输入端

使用特权

评论回复
12
咚咚水深| | 2013-7-17 16:13 | 只看该作者
gaochy1126 发表于 2013-7-16 23:12
io口没有弄错吧!

端口 是不是接p6.0和p6.1的,为什么设定p6.0为信号输入端

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
arm菜鸟人 + 1
13
arm菜鸟人|  楼主 | 2013-7-17 19:49 | 只看该作者
咚咚水深 发表于 2013-7-17 16:12
io端口,一般接p6.0和p6.1。为什么程序里面就设定p6.0作为信号输入端

AD 当然是为模拟输入。

其实,问题是硬件问题。

谢谢你的关注。

使用特权

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

本版积分规则

个人签名:感染属性。

34

主题

539

帖子

1

粉丝