内部プルアップ抵抗が故障することは一般的ですか?または、それらが断続的になる原因は何ですか?


8

私はASIC ARM Cortex-M3をベースにしたボードを持っています。何ヶ月もの作業の後に突然、誤ったボタンプレスを報告し始めました。ASICは私たちのデザインではなく、評判の良い会社のデザインです。

ボタンの回路図を以下に示します。このピンは、プルアップ抵抗を有効にして入力として構成されています。抵抗器の値は約30KOhmです。

DMMでピン側を測定すると、値が変動することがわかります。時々それは3.2V(= VCC、チップ範囲:2.1Vから3.6V)であり、他の時間は0.6Vから1.0Vの間でフローティングの周りをジャンプします。

湿度/結露(9%RH)の問題がなく、ほこりや他の物体がトレース上にありません。そして、これはこれに苦しむ唯一のボードです。このボードの他の製造されたクローンは問題なく動作します(これまでのところ)。

私が考えることができる唯一のことは、何かが内部のプルアップをちらつくことです。内部プルアップが崩れることは一般的ですか?他に何が原因ですか?

ボタンの回路図

R9、R12は2.2KΩ、C10、C11は33nFです。

回答:


4

入力ピンをスイッチから分離するために何らかの努力をしたようですが、それでも、圧倒的なESDイベントにより、チップ上のピンドライバー/レシーバー回路の一部が損傷している可能性があります(特にプルアップデバイスは必ずしも必要ではありません)。 。

これをより堅牢にする場合は、外部クランプダイオード、フェライトビーズ、またはスイッチとピンの間にトランジスタバッファを追加することを検討できます。


ESDについて考えましたが、C10とC11がチップに近いと仮定すると、ESDになる可能性は低くなります。通常の知識では、3nFはほとんどのESDイベントを吸収するのに十分であるため、これらの33nFのキャップは重要な保護を提供しているはずです。

うーん、ps側がここに描かれてい ます。整流器のグラウンドに影響を与える過渡的な小さな負の負電圧(<-0.3V)があり、時間の経過とともにいくつかのクランプダイオードが壊れますか?または、ESD /トランジェントはピンを介して、VCCを介して発生します。このピンは物理的にチップのVDDピンに近接しています。
MandoMando 2013年

@MandoMando:とりあえず、ボードを外付けのプルアップに組み入れることで、ボードを動作させることを拒否しますか?
Kaz

8

統計はあなたの友達です。わかりました。デバイスが故障しています。これが私のせいですか。大量に出荷しても安全ですか?これが本当に問題で、10,000ユニットをフィールドに出荷するとどうなりますか?あなたががらくたを与え、あなたがおそらく良心的なデザイナー/エンジニアであることのすべての兆候。

しかし、実際には、1つの失敗があり、確認バイアスの人間の可能性は、肯定的な状況と同じくらい簡単に否定的な状況に適用されます。明確な原因はなく、1つの失敗がありました。あなたがこの効果を引き起こした出来事を知らない限り、これはただの不安です。

これはESDです。ESDであることを証明できますか?-たぶん、そうでないかもしれません-部品を発送して、$$を費やしてそれを削除し、SEMや表面コントラスト強調機能付きのSEMなどのさまざまなテストを実行した場合。ESD認定の一環として意図的にデバイスをザッピングした多くのケースがありましたが、デバイスは故障しましたが、故障点を見つけるのに30時間ほどかかりました。障害のメカニズムと活性化エネルギーを理解することは重要でした。そのため、狩りは(明らかに無駄である場合)必要でしたが、完全に半分の時間で障害ポイントを見つけることができませんでした。そして、それはFMEAの分析と設計に基づく場所の排除の後でした。

人々は、ESDが常に爆発を意味し、チップの腸が溶けたSiと刺激的な煙でくまなく吐き出されるという誤った考えを持っています。あなたはこれを時々見ますが、しばしば破裂したのはゲート酸化物のほんの小さなナノメートルスケールのピンホールです。それはずっと前に起こり、時間が経つにつれてパラメトリックシフトのために失敗した可能性があります。

実際、ESDテストでは、アレニウスの式を使用して故障を予測します。デバイスをさまざまなレベルおよびさまざまなモデル(ソースインピーダンス)でザッピングし、少し時間をかけて**追跡し、それらを経時的に追跡して、故障モードを収集し、将来のパフォーマンスを予測できるようにします。一度に数か月間、環境チャンバー内で実行されるボード上に数千のチップを簡単に配置できます。それはすべて「資格」、つまり資格の一部です。

_some_failureモードで常に求めている主な効果は、EOS(電気的オーバーストレス)です。ESDやその他の状況によって引き起こされる可能性があります。現代のプロセスでは、チップ内のゲートレベルEOSの許容誤差は最大15%です。(そのため、意図されたMAX Vssレールでチップを実行することが非常に重要です)。EOSは数か月後に現れます。動作による熱は、ミニ加速寿命試験のようなものです(アレニウスの式を適用しておらず、制御されていません)。

よりよく理解したい場合は、テストプローブと充電を説明する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であると思います。これはこの場所がローストした3番目のボードですが、他のボードはよりチップガッツの嘔吐物でした。入力電力はSMPSが処理できるよりも少し熱く、どういうわけかESDの破片がそれを破壊するために通過します。ESDによる損傷を防ぐ方法を知りたいと思っています。質問があります。光を当てることができれば、感謝と一緒に両方の答えを受け入れたいと思います。
MandoMando 2013年

おそらく、ボードレベルのESDに利用できる部品をよりよく理解している人が他にもいるでしょう。パッド間でチップレイアウトが異なる可能性はありますが、チップガットがこぼれたことは注目に値します。このようにローカライズされている場合は、チップの前にボードが疑われます。これらのトレースをより敏感にするレイアウトについて何かありますか?Dave TWeedの提案は完全に合理的です。
プレースホルダー2013年

まあ、SMPSの定格は40Vで、入力はそれ以上です。規制当局はスパイクを通過させているのではないかと思います。最初のボードはガッツをこぼし、TVSを追加しましたが、それが終了しました。わずかに高い順方向電圧で整流器を交換して、入力を少し落としましたが、終了しませんでしたが、これは起こりました。EOSは理にかなっていて、入力電圧がまだ高すぎると思います。SMPSなら3V3 TVSが内側にあるかもしれません
MandoMando

(+1)私は何か他の目的でここに来ましたが、これが私が取り組んでいるプロジェクトにかなり関連していることがわかりました。私の場合はそれほど深刻ではありませんが、そのようなシナリオで実行する必要がある論理的な手順が好きでした。このようなことが起こったとしたら、おそらくパニックになっていたでしょう。
Whiskeyjack 2016年

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のプルアップは割り込みによってオンになりますが、メインラインコードによって誤ってオフになります。この問題を回避するには2つの方法があります。

  1. プルアップレジスタのビットを、読み取り-変更-書き込みシーケンスではなく、単一の命令を使用して設定できるハードウェアを利用してください。すべてのCortex-M3ベースのコントローラーは、この目的に使用できる「ビットバンギング」機能を提供していると思いますが、手動でビットを定義する以外の方法で、Cで書かれたコードからそれを使用する方法はまだ見つけていませんバンドアドレス。他の一部のプロセッサには、同様のタスクを実行するためのI / Oポート固有の手段がある場合があります。
  2. ポートの読み取り-変更-書き込みシーケンス中の割り込みを無効にします。たとえば、上記のCコードをメソッドの呼び出しに置き換えます。

    void set32(uint32_t volatile * dest、uint32_t value){uint32_t old_int = __get_PRIMASK(); __disable_irq(); * dest = * dest | 値; __set_PRIMASK(old_int); }

このコードにより、割り込みがごく短時間(おそらく約5つの命令)で無効になります。これは非常に短いので、比較的タイムクリティカルな割り込みでも問題を引き起こしません。アドレスをロードする命令がそう例えば、[インラインはそれを呼び出すために必要な時間を減らすことができるよう、上記の方法をコンパイルしますが、割り込みが無効になっている時間の量を増加させる可能性があることは、オプティマイザがコードを再配置するために発生した場合ことに注意してくださいdestません__disable_irq()]の後まで発生します。

プルアップ動作が断続的であると言うと、コードの問題はおそらくハードウェアの問題よりも可能性が高いと思います。さらに、プルアップ回路に害を及ぼすような損傷条件は、チップに他の損傷を引き起こす可能性もあり、検出可能なものもあれば、そうでないものもあります。場合は任意の明白なハードウェアの損傷のタイプはチップに発生し、それはほとんど常により良いジャンクへのチップであると観測されたダメージは「唯一」の問題であることを希望するよりも、新しいものと交換してください。


0

以前の回答のいくつかは最も明白なものを見落としています:ボタン、抵抗器、コンデンサー、およびuCのはんだ接合部を確認してください。顕微鏡下で、はんだ接合部にひび割れが見られる場合があります。

顕微鏡がない場合は、1つと1つのジョイントを再度はんだ付けして、問題が解決するかどうかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.