标题: 你被半高电平坑过吗? [打印本页]

作者: hubaba    时间: 2016-3-28 15:42
标题: 你被半高电平坑过吗?
摘要

一排整齐的高电平竟然被活生生的砸下一个缺口,是软件Bug,硬件故障,信号干扰,还是另有主谋?一个扑朔迷离的案件正在拉开序幕……


案发现场

一日,在测试DATA线的信号时发现,一排整齐的3.3V高电平被活生生的砸下一个缺口,是谁如此胆大!当日的案发现场如下,随后又发现旁边的15根DATA线亦是如此,案情严重,刻不容缓!


图1 异常波形

现场侦查

狄大人说:你要寻找蛛丝马迹,得有专业的家伙,ZDS2000系列示波器有个欠幅触发的功能,可以秒抓那个缺口,一试果不其然,如下:


图2 异常波形展开

案情背景

3.3V信号夹杂着1.5V的成分,这确实很棘手。经明察暗访发现,案件背景如下,三个芯片A,B,C共享同一数据总线DATA[0..15],而且测试三个芯片的管脚都是以上波形。


图3 芯片拓扑图

推理论断

这到底是何方妖孽所为?于是邀请各路高手一同探讨,一番激辩之后,出现以下猜测:

       ……

经查明,电源域没问题,第2、3点暂时无法排除。至此,案件依旧毫无头绪,毫无进展……


线索追踪

以上波形包含了AB,BC,AC间的通信数据,而且1.5V的占比比较小,或许是发生在某两个芯片之间。经过进一步测试,有了重大发现!

1.5V的出现竟然对应着BC间传输使能信号(绿色波形)


图4 BC使能信号

现在来看有两种可能:

马上断开A的DATA0脚,上电却无法启动,看来还需另找线索了

柳暗花明
查找了一些资料,基本都是一些“一端拉高一端拉低”的说法,难道是B输出高的同时C拉低总线了?要怎样证明呢?

经过讨论,要找出拉低总线的元凶,最好的办法是看电流是否增大,依此思路,分别割断ABC的DATA0脚,串线连通,结合CP8030A电流探头和ZP1025S探头,测试结果如下:

1、芯片A处DATA脚电压、电流波形如下,电流约为30mA


图5 A处电流

2、芯片B处DATA脚电压、电流波形如下,电流几乎为0


图6 B处电流

3、芯片C处DATA脚电压、电流波形如下,电流约为30mA


图7 C处电流

结果表明,1.5V对应的位置其电流竟然达到30mA(远远超出正常IO口的电流值),且宽度与1.5V的宽度一致。

真相大白

结合电流钳的箭头标识,可进一步确定电流方向,如下:


图8 电流方向

我们可以判定,30mA的电流方向是由C到A,BC间传输数据,A本不该插手,如今它却给总线制造了30mA的异常电流,因此怀疑是A把总线拉低了。

后查看A芯片的固件,发现BC传输数据时,A竟然处于低电平状态!

修改为高阻后,1.5V电平恢复到3.3V了,30mA的电流也消失不见,如下图


图9 电流验证

至此,元凶已归案,此案成功告破。

于是,三个芯片又能够愉快的传输数据了

案后语

当初遇到这个问题时,硬件开发说芯片之间采用直连方式,不可能有问题,软件开发查看代码也没有发现什么问题。看似一个无解的问题,显然用常规方式难以解决,电压波形不是万能的,有时候结合电流来看,问题却能迎刃而解,你觉得呢?






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1