打印
[ARM7]

LPC2148的ADC为什么数据读取错误呢?返回数据一直是3FF

[复制链接]
1369|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大神好,麻烦帮小弟指点下以下问题。谢谢

硬件上:





代码如下:

/*
*******************************************************************************************************
** 函数名称 :main()
** 函数功能 :进行3通道电压ADC转换,并把结果转换成电压值,发送到串口。
** 调试说明 :
*******************************************************************************************************
*/
int main (void)
{
        uint32 ADC_Data;
        char str[20];
       
        PINSEL0 = 0x00000005;        // 管脚连接串口
        PINSEL1 = 1 << 28;                // P0.30连接到AD0.3
        UART0_Init();
       
        /* 进行ADC模块设置 */
        AD0CR = (1 << 3)                                                |        // SEL=8,选择通道3
                        ((Fpclk / 1000000 - 1) << 8)        |        // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
                        (0 << 16)                                                |        // BURST=0,软件控制转换操作
                        (0 << 17)                                                |        // CLKS=0, 使用11clock转换
                        (1 << 21)                                                |          // PDN=1,正常工作模式
                        (0 << 22)                                                |          // TEST1:0=00,正常工作模式
                        (1 << 24)                                                |        // START=1,直接启动ADC转换
                        (0 << 27);                                                // 直接启动ADC转换时,此位无效
        DelayNS(10);
        ADC_Data = AD0DR3;                // 读取ADC结果,并清除DONE标志位
       
        while (1)
        {
                AD0CR |= 1 << 24;                                        // 进行第一次转换
                while ((AD0DR3 & 0x80000000) == 0);        // 等待转换结束
                AD0CR |= 1 << 24;                                        // 再次启动转换
                while ((AD0DR3 & 0x80000000) == 0);        // 等待转换结束
                ADC_Data = AD0DR3;                                        // 读取ADC结果
                ADC_Data = (ADC_Data >> 6) & 0x3ff;
                sprintf(str, "%4d mV VIN3", ADC_Data);
                ISendStr(0,0,0x30,str);
                DelayS(1);
        }
       
        return 0;               
}

硬件上的AD管脚都换过了,AD0.0~AD0.2输出都是同样的值 3FF,用万用表确实有分压1.8V左右的,请各位大神帮忙看下




相关帖子

沙发
ningling_21| | 2014-10-22 18:17 | 只看该作者
参考电压如何设置?

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
wonderful111 + 2
板凳
wonderful111|  楼主 | 2014-10-22 21:40 | 只看该作者
Vref管脚我是直接接3.3V,难道此管脚应该要小于我所测量的电压值??

使用特权

评论回复
地板
wwloser| | 2014-10-27 15:19 | 只看该作者
原因找到了?

使用特权

评论回复
5
wonderful111|  楼主 | 2014-11-5 21:45 | 只看该作者
ningling_21 发表于 2014-10-22 18:17
参考电压如何设置?

原因居然是参考电压3.3V焊接不良,重新焊一次,就可以了。

使用特权

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

本版积分规则

9

主题

54

帖子

2

粉丝