打印
[电路/定理]

AD7689相关问题请教

[复制链接]
3309|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
goldfishpfy|  楼主 | 2013-9-21 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在在设计一个数据采集卡,使用AD7689芯片,外部电压输入信号经AD202隔离、LM158运放跟随及增益调节后将输入数据送给AD7689,AD7689通过SPI口与C8051F040单片机进行通讯,通过单片机P0_6口控制AD7689的CNV信号,AD7689采用外部基准,单片机采用内部晶振24.5兆,单片机SPI配置频率为1225K,AD7689采用转换后数据读写模式,不采用通道序列器,目前遇到的问题是单片机读到AD7689转换的数据不是很稳定,数据老是跳动,误差最大50-70mv,想请问一下是什么原因。软件滤波基本上没什么作用,数据依然抖动
部分代码如下

AD转换程序
int AD7689_Covert(short int data)
{
short int temp=0;
short int outdata=0;

p0_6=1;
delay(20);//delay为单层for循环,此处最少要9个for循环,否则AD7689采集不到数据,这个好像和AD7689手册上写的tconv最大2.2us感觉有点不符合啊
p0_6=0;
SPIF=0;
SPI0DAT=data;
while(!SPIF);
temp=(unsigned char)SIP0DAT>>8;
outdata=temp;

SPIF=0;
SPI0DAT=data;
while(!SPIF);
temp=SIP0DAT;
outdata=((short int)outdata<<8)|temp;
p0_6=1;
return data;
}

main函数
main()
{
unsigned char MSB=0;
unsigned char LSB=0;
delay(20);//delay为单层for循环。
AD7689_Covert();
AD7689_Covert();
AD7689_Covert();
while(1)
{
MSB=AD7689_Covert()>>8;
LSB=AD7689_Covert();
}

}

相关帖子

沙发
shampo0| | 2013-9-21 22:42 | 只看该作者
我用的AD7685,刚开始难伺候,和你的一样,数据不准,后来改改,突然就准了哈哈
temp=(unsigned char)SIP0DAT>>8;
我觉得是这句,放置的位置不同,可能会有不同的效果

使用特权

评论回复
板凳
写代码的| | 2014-2-21 17:21 | 只看该作者
这里有一些关于AD7989使用时的问题,http://ezchina.analog.com/search ... iner=&q=+AD7689供参考哈

使用特权

评论回复
地板
airwill| | 2014-2-21 18:12 | 只看该作者
我看还得先测一下, 到底输入的信号里是不是就有那个纹波存在?

使用特权

评论回复
5
wuxian4683| | 2014-12-10 19:56 | 只看该作者
请问楼主,你这程序在哪里对芯片的CFG寄存器进行设置了?

使用特权

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

本版积分规则

1

主题

1

帖子

1

粉丝