打印

CS5550 采集到的数据不对应

[复制链接]
2564|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhbwgh|  楼主 | 2008-4-29 09:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序能采到数据,但是 得到的数据, 比如 在输入量程的三分之一处,而采集到的数据 在转换后结果的二分之一处,对应的关系不对,而且 我固定输入的时候(采的是同一电阻的电压值),转换的倒数第三位在跳,(我采集到的是六位数据),不知道 我的程序哪里有问题,请教大家。
#include "pic.h"

#define AD_SDI      RA2

#define AD_SDO    RA3

#define AD_CLK    RA4

#define AD_CS      RA5

#define uchar unsigned char

#define ulng   unsigned long

ulng target;

void AD_TranData(uchar tran_data)

{

       uchar i;

       for(i=8;i!=0;i--)

       {

             if(tran_data&0x80)

                      AD_SDI=1;

             else

                     AD_SDI=0;

             AD_CLK=1;

             tran_data<<=1;

             AD_CLK=0;

       }

}

void ADCmd (uchar command)

{

         AD_CS=0;

         AD_TranData(command);

         AD_CS=1;

}

ulng ADRead(uchar address)

{

        uchar i,j,sync_1;

         ulng ret_value;

        AD_CS=0;

       AD_TranData(address);

       for(i=3;i!=0;i--)

       {

              sync_1=SYNC;

               for(j=8;j!=0;j--)

               {

                        if(sync_1&0x80)

                                 AD_SDI=1;

                        else

                                 AD_SDI=0;

                        AD_CLK=1;

                       ret_value<<=1;

                       if(AD_SDO)

                              ret_value++;

                       AD_CLK=0;

               }

       }

       AD_CS=1;

       return(ret_value);

}

void main(void)

{

     uchar status;

      ADWrite(0x1e,0xffffff);//清除状态位,ADWrite函数未写出

      ADWrite(0x74,0x100000);//允许中断

      ADCmd(0xe0);//启动转换

      while(RC5)//等待中断信号,低电平有效

      {;}

      status=ADRead(0x1e);//读状态寄存器

      AdWrite(0x74,0);//禁止中断

      target=AdRead(0x16);//读AIN1有效值寄存器的值

}
沙发
兰天白云| | 2008-4-29 21:08 | 只看该作者

CS5550图有虚名

CS5550精度很低的

使用特权

评论回复
板凳
zhbwgh|  楼主 | 2008-4-30 15:32 | 只看该作者

回复

楼上,能不能说说 我的程序是哪里设置的不对,读出来的数据差很多啊。讲一下,设置的流程就行。

使用特权

评论回复
地板
兰天白云| | 2008-5-1 18:00 | 只看该作者

CS5550应该是24位ADC,你分3次读?SYNC是什么?

使用特权

评论回复
5
zhbwgh|  楼主 | 2008-5-7 10:14 | 只看该作者

回复

    我每次读8位,资料说 可以 8位 8位的读取,SYNC 是发送到SDI口的0xfe, 不是要求在读取的时候 SDI要输入0xfe的吗?
    我的问题是  我能够读写寄存器的值 但是 转换值和输入值对应不上,用偏移寄存器 也不能修正到0值。
    我想请教一下 是我编制的读写 有问题?还是 芯片的设置有问题。多谢斑竹

使用特权

评论回复
6
wucongshuang| | 2017-12-27 17:12 | 只看该作者
zhbwgh 发表于 2008-5-7 10:14
&nbsp;&nbsp;&nbsp;&nbsp;我每次读8位,资料说&nbsp;可以&nbsp;8位&nbsp;8位的读取,SYNC&nbsp;是发送到SDI ...

我用CS5550 把通道1输入都接地   读出来的数值也很大

使用特权

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

本版积分规则

17

主题

51

帖子

0

粉丝