打印
[数据转换器-信号链]

24位 AD AD1252

[复制链接]
1388|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
assange|  楼主 | 2014-7-30 19:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADS, ads1, gp, pi
大学生,接触电路不久,正在过一个创新实验,用的基本是TI 的样片,最近在调试ADS1252,下面附上我的程序,但是有个小问题,测得的电压:a的值转化计算后于实际存在近两倍的误差,不知道哪里出了问题,特来请教论坛大神~多谢各位指点。测量值=a/(2^24)*5.0 是这样吗?

//ADS1251_4    ADS1252_CLK PAout(5)
//ADS1251_5    ADS1252_DOUT  PCin(12)
//ADS1251_6    ADS1252_SCLK PCout(10)

void ADS1252_Config(void)
{
        GPIO_QuickInit(HW_GPIOC,10,kGPIO_Mode_OPP);
        GPIO_QuickInit(HW_GPIOA, 5,kGPIO_Mode_OPP);
        GPIO_QuickInit(HW_GPIOC,12,kGPIO_Mode_IFT);
}
unsigned long int ADC_1252(void)
{
        unsigned long int a;
        unsigned char i;  
        a=0;
        ADS1252_SCLK = 0;  
        ADS1252_CLK  = 0;     
        //DRDY ģʽ,36¸öCLKÖÜÆÚ
        for(i=0;i<48;i++)  ADS1252_CLK = ~ADS1252_CLK; //t4     
        for(i=0;i<12;i++)  ADS1252_CLK = ~ADS1252_CLK; //t2   
        for(i=0;i<12;i++)  ADS1252_CLK = ~ADS1252_CLK; //t3   
        //DOUT ģʽ,348¸öCLKÖÜÆÚ   
        ADS1252_CLK  = 1;  
        ADS1252_CLK  = 0;   
        ADS1252_SCLK = 1;   
        if(ADS1252_DOUT==1)        a|=0x01;
        ADS1252_CLK  = 1;
        ADS1252_CLK  = 0;
        ADS1252_SCLK = 0;   
        ADS1252_CLK  = 1;  
        ADS1252_CLK  = 0;  
        ADS1252_CLK  = 1;  
        ADS1252_CLK  = 0;    //4¸öCLKÖÜÆÚ
        for(i=0;i<23;i++)  
        {
                a=a<<1;
                if(ADS1252_DOUT==1)        a|=0x01;   
                ADS1252_SCLK = 1;   
                ADS1252_CLK  = 1;  
                ADS1252_CLK  = 0;  
                ADS1252_CLK  = 1;  
                ADS1252_CLK  = 0;
                ADS1252_SCLK = 0;  
                ADS1252_CLK  = 1;  
                ADS1252_CLK  = 0;  
                ADS1252_CLK  = 1;  
                ADS1252_CLK  = 0;
        }            //4*23=92¸öCLKÖÜÆÚ
        ADS1252_SCLK = 1;   
        ADS1252_CLK  = 1;  
        ADS1252_CLK  = 0;  
        ADS1252_CLK  = 1;  
        ADS1252_CLK  = 0;
        ADS1252_SCLK = 0;  
        ADS1252_CLK  = 1;  
        ADS1252_CLK  = 0;  
        ADS1252_CLK  = 1;  
        ADS1252_CLK  = 0;    //4¸öCLKÖÜÆÚ
        //248¸öCLKÖÜÆÚ
        for(i=0;i<248;i++)        {ADS1252_CLK = ~ADS1252_CLK;}
        for(i=0;i<248;i++)        {ADS1252_CLK = ~ADS1252_CLK;}
        return a;
}


相关帖子

沙发
airwill| | 2014-7-31 11:30 | 只看该作者
你可以先测量一下电压, 具体数值和 ADC 结果对比.
如果结果正好是 2倍关系, 很可能是通信时序里的脉冲边沿搞错了

使用特权

评论回复
板凳
assange|  楼主 | 2014-7-31 12:11 | 只看该作者
airwill 发表于 2014-7-31 11:30
你可以先测量一下电压, 具体数值和 ADC 结果对比.
如果结果正好是 2倍关系, 很可能是通信时序里的脉冲边沿 ...

测过了,试过对多个值测量都有2倍的偏差

使用特权

评论回复
地板
xyz549040622| | 2014-8-1 08:17 | 只看该作者
抓你的时钟的波形看看,是不是正好对应的

使用特权

评论回复
5
assange|  楼主 | 2014-8-1 21:18 | 只看该作者
xyz549040622 发表于 2014-8-1 08:17
抓你的时钟的波形看看,是不是正好对应的

没有逻辑分析仪:(

使用特权

评论回复
6
mmuuss586| | 2014-8-2 15:37 | 只看该作者
单端还是差分输入啊?
差分的话刚好是2倍;
接个直流的输入,用万用表测试下就知道是不程序问题了;

使用特权

评论回复
7
assange|  楼主 | 2014-8-2 20:31 | 只看该作者
mmuuss586 发表于 2014-8-2 15:37
单端还是差分输入啊?
差分的话刚好是2倍;
接个直流的输入,用万用表测试下就知道是不程序问题了; ...

单端信号,v+输入 v-接地,

使用特权

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

本版积分规则

9

主题

38

帖子

0

粉丝