[51单片机] 请教:AD558应用中一个非常怪异的问题

[复制链接]
4857|43
 楼主| wf.yang 发表于 2013-11-28 08:08 | 显示全部楼层 |阅读模式
本帖最后由 wf.yang 于 2013-11-28 08:44 编辑

应用AD558做数模转换过程中遇到一个非常怪异的问题:

当输入数字量为奇数时,输出模拟电压是正确的;

当输入数字量为偶数时,输出模拟电压比正确值偏小。多数情况比正确值低一个LSB的电压,有时低几个LSB的电压;

特别是输入数字量为4, 8, 16, 32, 64, 128时,输出模拟电压均为2个LSB对应的模拟电压。

现在,完全可以排除数据线交叉错误、单片机发送错误。因为在0~255之间的每个输入数据,在AD558的数据线上均测量到正确的八位数据。

也排除了万用表测量错误,因为在能够正确转换的输入数据情况下,每个输出模拟电压正好对应相应输入数据。

曾经怀疑AD558芯片存在问题,换了三片,都存在同样的问题。

请求老师指点,感谢感谢!

连续输入0~255时,得到的锯齿波如下(输入为4、8时,不太好画,没有画出,只画出了对应16、32、64、128的情形;偶数输入时错误输出造成的毛刺也没画出):

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2013-11-28 08:21 | 显示全部楼层
误差几个LSB是正常的
 楼主| wf.yang 发表于 2013-11-28 08:40 | 显示全部楼层
那么,为什么,输入4、8、16、32、64、128时,有那么大的误差呢?而且都输出只有2LSB对应的电压。
 楼主| wf.yang 发表于 2013-11-28 08:42 | 显示全部楼层
又为什么输入为奇数时,所有输出都正确呢?
forrest11 发表于 2013-11-28 08:56 | 显示全部楼层
把0-255实际输出图画出来看一下,或许能知道原因。
forrest11 发表于 2013-11-28 08:57 | 显示全部楼层
”特别是输入数字量为4, 8, 16, 32, 64, 128时,输出模拟电压均为2个LSB对应的模拟电压“这句话不理解。
 楼主| wf.yang 发表于 2013-11-28 09:01 | 显示全部楼层
已经画出来了,百思不得其解,所以向这里的先辈请教。

另外,对于0~255之间的每一个输入数据,对应的输出电压都用万用表测试过,如问题中叙述的那样。

用PC串口一个数一个数送的,同时用万用表测量AD558输入数据线上的八位数据,每次送数都正确;测量到的输出模拟电压就是问题中所说的那样。
ayb_ice 发表于 2013-11-28 09:04 | 显示全部楼层
上SCH图,上程序
 楼主| wf.yang 发表于 2013-11-28 09:08 | 显示全部楼层
好的,我准备程序和图。

也就是说,输入4、8、16、32、64、128时,输出电压均为0.02V
 楼主| wf.yang 发表于 2013-11-28 09:15 | 显示全部楼层

电路图和程序

本帖最后由 wf.yang 于 2013-11-28 09:31 编辑

包括51程序和VB程序

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| wf.yang 发表于 2013-11-28 09:29 | 显示全部楼层
附件传乱了,这个是对的。不好意思!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2013-11-28 09:30 | 显示全部楼层
简单看了一下,感觉你的硬件应该有问题

主要是片选信号控制不正常,

建议就在当前硬件条件下(或简单改动一下硬件),用非总线方式方式试一下
ayb_ice 发表于 2013-11-28 09:33 | 显示全部楼层
本帖最后由 ayb_ice 于 2013-11-28 09:35 编辑

总线方式下,连读写信号都没有用上,是不可能正常工作的
不过好久没有用这种总线方式做项目了
 楼主| wf.yang 发表于 2013-11-28 09:34 | 显示全部楼层
您给点建议?

其实,我用的就是非总线方式,用P2产生AD558所需的控制脉冲,用P0送数据。
 楼主| wf.yang 发表于 2013-11-28 09:35 | 显示全部楼层
本帖最后由 wf.yang 于 2013-11-28 09:48 编辑

这样做,是为了主板能够和其它的总线扩展板兼容。AD DA板例外,实质没采用总线方式。
ayb_ice 发表于 2013-11-28 09:39 | 显示全部楼层
你这程序也太外行了吧

中断居然连PSW都没有入栈保护
 楼主| wf.yang 发表于 2013-11-28 09:40 | 显示全部楼层
现在,保证在AD558的CE为低电平时,把数据送上数据线,让后让CE变为高电平,锁存数据。符合AD558的时序。其它数据能够正确发送到AD558,这种方法应该是可行的。

现在老怀疑AD558会不会有什么问题。
ayb_ice 发表于 2013-11-28 09:40 | 显示全部楼层
既然是非总线方式,那么P0是要加上拉电阻的

评论

是的,这是问题的症结。  发表于 2013-11-29 10:16
 楼主| wf.yang 发表于 2013-11-28 09:42 | 显示全部楼层
这可能是一个问题。我测了,数据线为高电平时,电压为1.45V,低电平时,为0V。  对于奇数输入,AD558都能正确接收。
 楼主| wf.yang 发表于 2013-11-28 09:44 | 显示全部楼层
可能,我离问题的解决不远了,谢谢你!

这个问题还需要得到大家的帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

846

帖子

2

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