发新帖我要提问
12
返回列表
打印

ad7705输出码值非线性的问题

[复制链接]
楼主: 80572892
手机看帖
扫描二维码
随时随地手机跟帖
21
xuyaqi| | 2010-9-27 23:49 | 只看该作者 回帖奖励 |倒序浏览
“用硬件SPI和IO口模拟SPI都试过,两者结果有差异”是否得到的AD内码就有问题。
另外会不会是内码/电压换算公式有问题。

使用特权

评论回复
22
xuyaqi| | 2010-9-27 23:56 | 只看该作者
另外如果是单极性的话 BM_OUT- 应接 REF_IN- (GND).

使用特权

评论回复
23
ssgg2003| | 2010-9-28 00:53 | 只看该作者
外部测试的电压取自USB口,5V电压经1K固定电阻和一个2K的滑动变阻器接地。取1K电阻和滑动变阻器间导线和滑动变阻器抽头作为模拟的差分输入,比如正端输入为3.2V,负端输入为3.0V。这部分没有用AD780做激励。

使用特权

评论回复
24
ssgg2003| | 2010-9-28 01:02 | 只看该作者
多谢!根据实际应用,还是得用BM_OUT-构成差分输入。这样的话,不改变原来的电路, 把AD转换模式改为双极性就可以了吧?准备把这种设置和xuyaqi指出的单极性负端走线都试一下。此外,上位机增加了直接显示AD采样HEX码的界面,可以看到前面提到的归零现象。

使用特权

评论回复
25
xuyaqi| | 2010-9-28 08:57 | 只看该作者
如果要用差分输入,那末测试时应该用与单片机供电隔离的电源供输入用,把AD转换模式改为双极性,否则会出现“奇怪”现象。

使用特权

评论回复
26
liuf| | 2011-6-26 18:14 | 只看该作者
AD7705问题,我的差分输入,输入短接,读得32768左右没问题,但运行几分钟或者几十分种后读的值就保持65535了,有时偶尔跳到0再跳回65535。后来我软件处理出现这情况时单片机I/O控制RESET复位AD7705,资料上说RESET脚复位后,寄存器为上电值,发现复位也没用。读值还保持65535,必须重新上电才能正常。

使用特权

评论回复
27
cheny3922| | 2013-9-6 01:50 | 只看该作者
你读取那段有问题,试试我的
unsigned int ReadWord7705(uchar addr)
{
        unsigned char b;
        unsigned long y=0;
         WriteByte7705(addr);//设置AD7705数据寄存器通道1
//         P1M0=0X00;
//         P1M1=0X00;
//         P1M1=0X20;

        AdClk = 1 ;
        AdDout = 1        ;
        delayNOP();
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);
        y=(y<<1);          //1
        AdClk = 0 ;           //
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout); //2
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //3
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //4
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //5
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //6
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //7
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //8
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //9
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //0
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //1
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //2
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //3
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //4
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //5
        y=(y<<1);
        AdClk = 0 ;
        delayNOP();
        AdClk = 1 ;
        delayNOP();
        y=(y|AdDout);  //6
//        y=(y<<1);
         AdDin=1;
          AdClk=1;
        return y;


}

使用特权

评论回复
28
黑小子mxx| | 2014-4-11 14:56 | 只看该作者
不知道楼主最后怎么解决的?

使用特权

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

本版积分规则