CS5550 采集到的数据不对应

[复制链接]
3578|6
 楼主| zhbwgh 发表于 2008-4-29 09:55 | 显示全部楼层 |阅读模式
程序能采到数据,但是&nbsp;得到的数据,&nbsp;比如&nbsp;在输入量程的三分之一处,而采集到的数据&nbsp;在转换后结果的二分之一处,对应的关系不对,而且&nbsp;我固定输入的时候(采的是同一电阻的电压值),转换的倒数第三位在跳,(我采集到的是六位数据),不知道&nbsp;我的程序哪里有问题,请教大家。<br />#include&nbsp;&quot;pic.h&quot;<br /><br />#define&nbsp;AD_SDI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RA2<br /><br />#define&nbsp;AD_SDO&nbsp;&nbsp;&nbsp;&nbsp;RA3<br /><br />#define&nbsp;AD_CLK&nbsp;&nbsp;&nbsp;&nbsp;RA4<br /><br />#define&nbsp;AD_CS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RA5<br /><br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br /><br />#define&nbsp;ulng&nbsp;&nbsp;&nbsp;unsigned&nbsp;long<br /><br />ulng&nbsp;target;<br /><br />void&nbsp;AD_TranData(uchar&nbsp;tran_data)<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=8;i!=0;i--)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(tran_data&0x80)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_SDI=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_SDI=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CLK=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran_data&lt&lt=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CLK=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br />void&nbsp;ADCmd&nbsp;(uchar&nbsp;command)<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CS=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_TranData(command);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CS=1;<br /><br />}<br /><br />ulng&nbsp;ADRead(uchar&nbsp;address)<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i,j,sync_1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ulng&nbsp;ret_value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CS=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_TranData(address);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=3;i!=0;i--)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_1=SYNC;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=8;j!=0;j--)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sync_1&0x80)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_SDI=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_SDI=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CLK=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret_value&lt&lt=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(AD_SDO)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret_value++;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CLK=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD_CS=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(ret_value);<br /><br />}<br /><br />void&nbsp;main(void)<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;status;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADWrite(0x1e,0xffffff);//清除状态位,ADWrite函数未写出<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADWrite(0x74,0x100000);//允许中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADCmd(0xe0);//启动转换<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(RC5)//等待中断信号,低电平有效<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status=ADRead(0x1e);//读状态寄存器<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AdWrite(0x74,0);//禁止中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target=AdRead(0x16);//读AIN1有效值寄存器的值<br /><br />}<br />
兰天白云 发表于 2008-4-29 21:08 | 显示全部楼层

CS5550图有虚名

CS5550精度很低的
 楼主| zhbwgh 发表于 2008-4-30 15:32 | 显示全部楼层

回复

楼上,能不能说说&nbsp;我的程序是哪里设置的不对,读出来的数据差很多啊。讲一下,设置的流程就行。<br /><br />
兰天白云 发表于 2008-5-1 18:00 | 显示全部楼层

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

  
 楼主| zhbwgh 发表于 2008-5-7 10:14 | 显示全部楼层

回复

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

粉丝
快速回复 在线客服 返回列表 返回顶部