几年前,我为需要测试的热辐射传感器阵列开发驱动板。串行多路复用的传感器输出需要多步闭环校正方案,以改善传感器的不均匀性。
为了进行测试,我采用带双串行DAC的设计。我编写了校正方案软件代码,然后检查其工作情况。我决定单独查看DAC芯片及其工作,而不管其它元件。我将带有DAC的板子连接到控制其工作的微控制器。为了验证控制器的输出,我使用了一个示波器来监视到达DAC的串行信号。检查结果很好,满足了DAC制造商设置的所有参数。
但是,DAC的模拟输出不正确。在启动时,一个DAC通道的读数是200 mV,另一个读数是5V。 DAC接收到数据包后,输出读数为0和5V。我怀疑自己忽略了一些软件问题,于是花了整整一个下午的时间来研究校正方案以及串行数据包从控制器传输到DAC的细节。我还检查了与DAC的连接和接线,没有发现任何问题。
DAC芯片是一个新元件,我认为它不可能有问题。我拼命挠头咬牙,仍是徒劳。无奈之,我只好暂时放弃努力,希望第二天能有一些思路。
那天晚上注定无眠。我一直都清楚地了解串行数据包传输是如何与DAC制造商数据表上的时序图保持一致的。电源检查了,硬件接线检查了,软件也检查了。还要检查什么呢?不管从哪个方面来说,DAC都应该正常工作。也许它根本就可能是一个有缺陷的芯片。我思来想去,一夜未眠,走到第二天早上我回到实验室。
我从控制器上卸下DAC板并为其加电。DAC具有上电复位功能,可在启动时将DAC输出清零,但这一功能似乎不起作用。一个通道仍为5V,另一个通道仍约为200 mV。当DAC从控制器接收到串行数据包时,200mV的通道降至0V,另一个通道仍为5V。我再次检验串行数据包数据,发现它是正确的。我又仔细检查DAC的接线和串行连接,也没有发现任何错误。看起来确实像芯片有故障。
不幸的是,我的元件似乎已经用完了,所以不能进行更换。一想到如果不尽快解决问题,我可能还会再遭受不眠之夜,我的心情瞬间就不好了。于是我把我的零件仓翻了个底朝天,希望找到另一个芯片进行测试。哈,我箱子的角落还剩下最后一个DAC芯片。我激动地拿起部件,准备更换主板上的芯片。这颗芯片是DIP,我用拔出器从将可疑芯片从板子上取下来了。
当我仔细检查芯片并将拔出器对准它时,我震惊地发现,已经褪色的部件号表明这根本不是一颗DAC芯片,而是双运放!我所做的一系列测试,原来用错了对象!我一边骂自己,一边感谢幸运之神的垂念。我其他什么也没动,只是用力拔出了这颗双运放,换了正确的元件,然后接上控制器,一切都正常了。
正如墨菲定律的所说的,“当你卸下用来固定大门的40颗螺钉的最后一颗时,才发现拆错了门。”那天晚上我睡得很好。
编者注:
作者犯的这个错误,遭到美国工程师读者集体吐槽“自作自受”……
@merlin749
一位不太将DAC和运算放大器混为一谈的工程师读者:无论从哪个方面,双运算放大器的情况怎么可能像DAC?我认为这两种芯片相同引脚上的信号根本不会相近。
@ Grant Smith
我的技术支持研讨会(包括组件级维修),总是从故障排除101开始。我的技术人员会在30分钟内解决这个问题,并始终在嵌入塑料处的引脚底部进行测量。首先检查电源,然后检查输入,然后用仪表在显微镜下检查可能出现的走线短路。猜猜接下来怎样?问题解决了。绝对不能在没有证明正确的放过任何元件,否则将走上一条浪费数小时甚至数天时间而得不到结论的不归路。作为工程师并不意谓着你比技术员更聪明。用爱因斯坦的话来说,就是“你上的学越多,需要忘记的东西也就越多”。推理不能替代正确的技术和科学的方法。
@ Worldpowerlabs
我之前也想到是这个原因。
@ David Ashton
我也犯过几次类似的错误,有时候是放入了错的IC,有时候是用错误的方式将IC放入插槽。这样种问题的最大的问题是,你不能责怪别人,只能怪你自己。
(原文刊登于ASPENCORE旗下EDN英文网站,参考链接:DAC days, sleepless nights,由Jenny Liao编译。)