打印
[51单片机]

请教:AD558应用中一个非常怪异的问题

[复制链接]
4192|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的情形;偶数输入时错误输出造成的毛刺也没画出):

新建 BMP 图像.bmp (351.26 KB )

新建 BMP 图像.bmp

相关帖子

沙发
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 | 只看该作者
又为什么输入为奇数时,所有输出都正确呢?

使用特权

评论回复
5
forrest11| | 2013-11-28 08:56 | 只看该作者
把0-255实际输出图画出来看一下,或许能知道原因。

使用特权

评论回复
6
forrest11| | 2013-11-28 08:57 | 只看该作者
”特别是输入数字量为4, 8, 16, 32, 64, 128时,输出模拟电压均为2个LSB对应的模拟电压“这句话不理解。

使用特权

评论回复
7
wf.yang|  楼主 | 2013-11-28 09:01 | 只看该作者
已经画出来了,百思不得其解,所以向这里的先辈请教。

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

用PC串口一个数一个数送的,同时用万用表测量AD558输入数据线上的八位数据,每次送数都正确;测量到的输出模拟电压就是问题中所说的那样。

使用特权

评论回复
8
ayb_ice| | 2013-11-28 09:04 | 只看该作者
上SCH图,上程序

使用特权

评论回复
9
wf.yang|  楼主 | 2013-11-28 09:08 | 只看该作者
好的,我准备程序和图。

也就是说,输入4、8、16、32、64、128时,输出电压均为0.02V

使用特权

评论回复
10
wf.yang|  楼主 | 2013-11-28 09:15 | 只看该作者

电路图和程序

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

包括51程序和VB程序

所有资料.rar

79.97 KB

所有资料.rar

75.64 KB

所有资料.rar

75.64 KB

使用特权

评论回复
11
wf.yang|  楼主 | 2013-11-28 09:29 | 只看该作者
附件传乱了,这个是对的。不好意思!

所有资料.rar

75.64 KB

使用特权

评论回复
12
ayb_ice| | 2013-11-28 09:30 | 只看该作者
简单看了一下,感觉你的硬件应该有问题

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

建议就在当前硬件条件下(或简单改动一下硬件),用非总线方式方式试一下

使用特权

评论回复
13
ayb_ice| | 2013-11-28 09:33 | 只看该作者
本帖最后由 ayb_ice 于 2013-11-28 09:35 编辑

总线方式下,连读写信号都没有用上,是不可能正常工作的
不过好久没有用这种总线方式做项目了

使用特权

评论回复
14
wf.yang|  楼主 | 2013-11-28 09:34 | 只看该作者
您给点建议?

其实,我用的就是非总线方式,用P2产生AD558所需的控制脉冲,用P0送数据。

使用特权

评论回复
15
wf.yang|  楼主 | 2013-11-28 09:35 | 只看该作者
本帖最后由 wf.yang 于 2013-11-28 09:48 编辑

这样做,是为了主板能够和其它的总线扩展板兼容。AD DA板例外,实质没采用总线方式。

使用特权

评论回复
16
ayb_ice| | 2013-11-28 09:39 | 只看该作者
你这程序也太外行了吧

中断居然连PSW都没有入栈保护

使用特权

评论回复
17
wf.yang|  楼主 | 2013-11-28 09:40 | 只看该作者
现在,保证在AD558的CE为低电平时,把数据送上数据线,让后让CE变为高电平,锁存数据。符合AD558的时序。其它数据能够正确发送到AD558,这种方法应该是可行的。

现在老怀疑AD558会不会有什么问题。

使用特权

评论回复
18
ayb_ice| | 2013-11-28 09:40 | 只看该作者
既然是非总线方式,那么P0是要加上拉电阻的

使用特权

评论回复
评论
wf.yang 2013-11-29 10:16 回复TA
是的,这是问题的症结。 
19
wf.yang|  楼主 | 2013-11-28 09:42 | 只看该作者
这可能是一个问题。我测了,数据线为高电平时,电压为1.45V,低电平时,为0V。  对于奇数输入,AD558都能正确接收。

使用特权

评论回复
20
wf.yang|  楼主 | 2013-11-28 09:44 | 只看该作者
可能,我离问题的解决不远了,谢谢你!

这个问题还需要得到大家的帮助!

使用特权

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

本版积分规则

34

主题

836

帖子

2

粉丝