内部上拉电阻器故障常见吗?还是什么会使他们断断续续?


8

我有一个基于ASIC ARM Cortex-M3的板,经过数月的工作,该板突然开始报告虚假的按钮按下情况。ASIC不是我们的设计,而是知名公司的设计。

按钮示意图如下。该引脚被配置为输入且上拉电阻使能。电阻值约为30KOhm。

用数字万用表测量引脚侧时,我看到该值在浮动。有时为3.2V(= VCC,芯片范围:2.1V至3.6V),而其他时候则在0.6V至1.0V之间浮动。

没有湿气/冷凝水(9%RH)的问题,迹线上没有灰尘或其他物体。这是唯一遭受此困扰的董事会。该评估板的其他制造克隆都可以正常工作(到目前为止)。

我唯一能想到的就是内部上拉闪烁。内部上拉电路让位是常见的吗?还有什么可能导致这种情况?

按钮示意图

R9,R12为2.2Kohm,C10,C11为33nF。

Answers:


4

看起来您已经在努力将输入引脚与开关隔离,但是,仍然无法解决的ESD事件可能损坏了芯片上的某些引脚驱动器/接收器电路(不一定是上拉设备) 。

如果要使其更坚固,可以考虑在开关和引脚之间添加外部钳位二极管,铁氧体磁珠甚至晶体管缓冲器。


我考虑过ESD,但假设C10和C11靠近芯片,则不可能是ESD。通常的观点是3nF足以吸收大多数ESD事件,因此这些33nF的电容应该提供了重要的保护。

嗯,这里描绘了ps端 ,整流器的接地实际上会瞬变一个小的负电压(<-0.3V),并随着时间的流逝破坏一些钳位二极管吗?或通过引脚但通过VCC的ESD /瞬态。该引脚在物理上靠近芯片的VDD引脚。
MandoMando 2013年

@MandoMando:现在,您是否愿意通过外接外部上拉电路使电路板正常工作?
卡兹(Kaz)2013年

8

统计数据是您的朋友。我知道了,您的设备有故障,您怀疑这是我的错吗?批量运输安全吗?如果这确实是一个问题,我们将10,000单位运送到现场会怎样?所有迹象表明您很烂,或者您可能是一个尽职的设计师/工程师。

但是事实是,您有一个失败,而确认偏差的人为错误也同样适用于负面情况和正面情况。您遇到了一个失败,没有确定的原因。除非您知道引发这种效应的事件,否则这只是焦虑。

这是ESD。我可以证明这是ESD吗?-也许/也许不是-如果您将零件寄给我,而我花了大笔钱去修理它,并通过不同的测试(例如SEM和具有表面对比度增强功能的SEM)进行运行,也许。在很多情况下,作为ESD认证的一部分,我故意更换设备,该设备发生故障,但花了30个小时才找到故障点。了解故障机理和激活能量非常重要,因此必须进行搜寻(如果很浪费),但是有一半的时间我们看不到故障点。这是在FMEA分析和设计指导下消除位置之后进行的。

人们有一个错误的观念,即ESD始终意味着熔融的Si和刺鼻的烟雾会导致爆炸和碎屑呕吐。您有时确实会看到这种情况,但通常只是破裂的栅极氧化物中的一个微小的纳米级针孔。它可能在很久以前就发生了,随着时间的流逝,由于参数移动而失败了。

实际上,在ESD测试期间,我们使用Arrhenius方程来预测故障。我们在不同级别和不同型号(源阻抗)下对设备进行快速切换,然后将小炉子煮数小时,并随时间推移对其进行跟踪,以收集故障模式,从而预测未来的性能。您可以轻松地在环境箱中连续运行几个月的板上放置1000片芯片。这都是“质量”的一部分-即资格。

我们一直在寻找_some_failure模式的关键效果是EOS(电超负荷)。它可能是由ESD或其他情况引起的。我在现代工艺中对芯片内部门级EOS的容限最大为15%。(这就是为什么在预期的MAX Vss导轨上运行芯片如此重要的原因)。EOS可以在几个月后显现出来。操作产生的热量就像是一个微型加速寿命测试(您只是不应用Arrhenius方程,并且不受控制)。

如果要更好地理解,请查阅描述MM(机器模型)和HMB(人体模型)的JEDEC ESD22标准,它们描述测试探针和充电。

这是JEDEC JESD22-A114C.01(2005年3月)中模型的片段。

在此处输入图片说明

您会注意到它看起来与您的电路有点相似吗?而且该值甚至接近,并且可以与正确的电压电平配合使用,以将废料吹出ESD结构。

因此,您需要做的是:

-scrap that board
- track it's provenance, lot number and who handled it
- keep this info in a database (or spreadsheet)
- note in dB that you suspect ESD
- track all failures
- check the data over time.
- institute manufacturing controls so you can track.
- relax - you're doing fine.

非常感谢!我的PS输入端有一个45V TVS(可承受60V),我想这可以解决ESD问题,不是吗?虽然阅读您的答案,但我相信这可能是EOS或ESD。这是该位置烘烤过的第三块木板,但其他的则更多。输入功率比SMPS可以承受的温度高一点,ESD碎片会通过它破坏它。我很好奇如何防止ESD损坏,我什至对此有疑问。如果您能发现任何疑问,我很乐意接受这两个答案以及感激之情。
MandoMando 2013年

这里可能还有其他一些人对板级ESD的可用零件有更好的了解。我会注意到,虽然焊盘之间的芯片布局可能会有所不同,但是值得注意的是,芯片的外溢会溢出,如果这样定位,我会怀疑您的电路板在芯片之前。您的布局中是否存在使这些迹线更加敏感的内容?Dave TWeed的建议完全合理。
占位符

很好,SMPS的额定电压为40V,输入等于或高于该电压。我怀疑监管机构会让一些尖峰通过。第一块板溢出了胆量,我加了TVS,然后它就死了,我用稍高的正向电压交换整流器,使输入稍有下降,但它没有死,但这发生了。我认为EOS很有意义,并且输入电压仍然过高。如果SMPS可能是内部的3V3 TVS
MandoMando 2013年

(+1)我是来这里的,但发现这件事与我正在从事的项目非常相关。我的情况不是那么严重,但是我喜欢这种情况下需要采取的逻辑步骤。如果像这样的事情发生在我身上,我可能会感到恐慌。
威士忌酒客

4

最有可能的情况是芯片遭受了一些损坏(其可见的影响包括片状上拉行为),或者代码出于某种原因而导致偶然地启用有时禁用了上拉。如果主代码执行以下操作,则后一种情况可能经常出现:

WIDGET_PIN_PORT->PULLUPS |= WIDGET_PIN_PULLUP_MASK;

中断执行如下操作:

GADGET_PIN_PORT->PULLUPS |= GADGET_PIN_PULLUP_MASK;

其中WIDGET_PIN和GADGET_PIN是同一I / O端口上的不同位。主线代码将翻译为类似

ldr r0,= [[address of port pullup register]]
ldr r1,[r0] ; ***1
orr r1,#WIDGET_PIN_PULLUP_MASK
str r1,[r0] ; ***2

如果在之后***1之前发生了中断***2,则GADGET_PIN的上拉将由该中断打开,但随后由主线代码错误地关闭。有两种方法可以避免此问题:

  1. 利用可能允许使用单个指令而不是读-修改-写序列来设置上拉寄存器的硬件。我相信所有基于Cortex-M3的控制器都提供了一种“位撞”功能,可用于此目的,尽管除了手动定义位以外,我还没有找到任何用C语言编写的使用它的好方法。带地址。其他一些处理器可能具有特定于I / O端口的方式来完成类似任务。
  2. 在端口读-修改-写序列期间禁用中断。例如,将上面的C代码替换为对方法的调用

    void set32(uint32_t volatile * dest,uint32_t值){uint32_t old_int = __get_PRIMASK(); __disable_irq(); * dest = * dest | 值; __set_PRIMASK(old_int); }

该代码将导致中断被非常短暂地禁用(大约5条指令)。这足够简短,即使在时间相对紧迫的中断下也不会引起问题。请注意,将上述方法编译为内联可能会减少调用它的时间,但可能会增加禁用中断的时间(例如,如果优化程序碰巧重新排列代码,则加载地址的指令dest不会直到__disable_irq()]之后。

假设您说上拉行为是间歇性的,我认为代码问题可能比硬件问题更有可能。此外,会损坏上拉电路的损坏条件也可能对芯片造成其他损坏-有些可以检测到,而有些则没有。如果芯片发生任何类型的可证明的硬件损坏,则总比将希望的损坏仅是“唯一的”问题要好,那就是用旧的芯片替换新的芯片。


0

前面的一些答案忽略了最明显的答案:检查按钮,电阻器​​,电容器和uC的焊点。在显微镜下,您可能会看到裂纹的焊点。

如果没有显微镜,请重新焊接一个和一个关节,看是否可以解决问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.