Apakah umum untuk resistor pull-up internal gagal? atau apa yang akan menyebabkan mereka terputus-putus?

8

Saya memiliki papan yang didasarkan pada ASIC ARM Cortex-M3 yang setelah berbulan-bulan bekerja tiba-tiba mulai melaporkan penekanan tombol palsu. ASIC bukan desain kami, tetapi perusahaan terkemuka.

Skema tombol diberikan di bawah ini. Pin dikonfigurasikan sebagai input dengan resistor pull-up diaktifkan. Nilai resistor sekitar 30KOhm.

Saat mengukur pin-side dengan DMM, saya melihat nilainya mengapung. Kadang-kadang itu 3.2V (= VCC, rentang chip: 2.1V ke 3.6V) dan waktu lain melompat-lompat antara 0,6V ke 1,0V.

Tidak ada masalah kelembaban / kondensasi (9% RH), tidak ada debu atau benda lain pada jejak. Dan ini HANYA papan yang menderita ini. Klon lain yang diproduksi dari dewan ini berfungsi tanpa masalah (sejauh ini).

Satu-satunya hal yang dapat saya pikirkan adalah sesuatu membuat flicker internal pull-up. Apakah umum pull-up internal memberi jalan? Apa lagi yang menyebabkan ini?

Skema tombol

R9, R12 adalah 2.2Kohm, dan C10, C11 adalah 33nF.

MandoMando
sumber

Jawaban:

4

Sepertinya Anda telah berupaya mengisolasi pin input Anda dari sakelar, tetapi tetap saja, peristiwa ESD yang luar biasa mungkin telah merusak beberapa bagian sirkuit pin driver / receiver pada chip (dan belum tentu perangkat pullup khususnya) .

Jika Anda ingin membuatnya lebih kuat, Anda dapat mempertimbangkan untuk menambahkan dioda penjepit eksternal, manik ferit, atau bahkan penyangga transistor antara sakelar dan pin.

Dave Tweed
sumber
Saya berpikir tentang ESD, tetapi dengan asumsi bahwa C10 dan C11 dekat dengan chip maka tidak mungkin menjadi ESD. Kebijaksanaan normal adalah bahwa 3nF cukup untuk menyerap sebagian besar peristiwa ESD, sehingga tutup 33nF tersebut seharusnya memberikan perlindungan yang signifikan.
Hmm, sisi ps digambarkan di sini dapat tanah penyearah infact transient negatif kecil (<-0.3V) dan memecahkan beberapa dioda penjepit dari waktu ke waktu? Atau ESD / transien yang datang melalui pin tetapi melalui VCC. Pin ini secara fisik dekat dengan pin VDD chip.
MandoMando
@MandoMando: Untuk saat ini, apakah Anda dapat membuat papan Anda berfungsi dengan cara menarik secara eksternal?
Kaz
8

Statistik adalah teman Anda. Saya mengerti, Anda memiliki perangkat yang gagal, Anda bertanya-tanya apakah ini salah saya? apakah aman mengirim dalam volume? apa yang terjadi jika ini benar-benar masalah dan kami mengirimkan 10.000 unit ke lapangan? Semua tanda bahwa Anda memberikan omong kosong dan bahwa Anda mungkin seorang desainer / insinyur yang teliti.

Tetapi kenyataannya adalah, Anda memiliki satu kegagalan dan kelemahan manusia dari bias konfirmasi berlaku untuk situasi negatif yang siap seperti situasi positif. Anda pernah mengalami satu kegagalan, tanpa sebab yang pasti. Kecuali jika Anda mengetahui suatu peristiwa yang memicu efek ini maka ini hanya kecemasan.

Ini ESD. Bisakah saya membuktikan bahwa itu ESD? - Mungkin / mungkin tidak - jika Anda mengirimkan saya bagian dan saya menghabiskan $$ besar untuk menundanya dan menjalankannya melalui tes yang berbeda seperti SEM dan SEM dengan peningkatan kontras permukaan, mungkin. Saya punya banyak kasus di mana saya sengaja menabrak perangkat sebagai bagian dari kualifikasi ESD, perangkat gagal namun butuh waktu 30 jam untuk menemukan titik kegagalan. Penting untuk memahami mekanisme kegagalan dan energi aktivasi sehingga perburuan itu perlu (jika tampaknya boros) tetapi sepenuhnya separuh waktu kami tidak dapat melihat titik kegagalan. Dan itu setelah analisis FMEA dan desain memandu eliminasi lokasi.

Orang-orang memiliki gagasan yang salah bahwa ESD selalu berarti ledakan dan nyali chip yang muntah di seluruh tempat dengan Si cair dan asap yang tajam. Anda memang melihat ini kadang-kadang, tetapi seringkali itu hanya lubang jarum skala kecil nanometer di gerbang oksida yang telah pecah. Ini mungkin telah terjadi sejak lama dan gagal karena pergeseran parametrik.

Faktanya selama tes ESD kami menggunakan persamaan Arrhenius untuk memprediksi kegagalan. Kami zap perangkat di berbagai tingkat dan model yang berbeda (impedansi sumber) dan kemudian kami memasak b *** kecil selama berjam-jam dan melacak mereka dari waktu ke waktu untuk dapat memperoleh mode kegagalan dan dengan demikian memprediksi kinerja masa depan. Anda dapat dengan mudah memiliki 1000's chip yang terpasang di ruang lingkungan selama berbulan-bulan. Itu semua adalah bagian dari "qual" - yaitu kualifikasi.

Efek utama yang selalu kita cari untuk mode _some_failure adalah EOS (Electrical Overstress). Ini dapat disebabkan oleh ESD atau situasi lain. Saya proses modern toleransi terhadap gerbang level EOS di dalam chip mungkin maks 15%. (Itulah mengapa menjalankan chip pada MAX Vss rail yang dimaksudkan sangat penting). EOS dapat memanifestasikan dirinya berbulan-bulan kemudian. Panas dari operasi akan menjadi seperti tes seumur hidup mini yang dipercepat (Anda hanya tidak menerapkan persamaan Arrhenius, dan itu tidak dikontrol).

Jika Anda ingin pemahaman yang lebih baik, lihat standar JEDEC ESD22 yang menjelaskan MM (Model Mesin) dan HMB (model Tubuh Manusia) yang menjelaskan uji coba dan pengisian daya.

Berikut adalah snip model dari JEDEC JESD22-A114C.01 (Maret 2005).

masukkan deskripsi gambar di sini

Anda semacam memperhatikan bagaimana tampilannya agak mirip dengan sirkuit Anda? dan nilainya bahkan agak dekat, dan ini digunakan dengan level tegangan yang tepat untuk meledakkan omong kosong dari struktur ESD.

Jadi yang perlu Anda lakukan adalah:

-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.
placeholder
sumber
Terimakasih banyak! Saya memiliki TVV 45V di input PS (toleran 60V) dan saya kira itu akan menangani ESD, bukan? membaca jawaban Anda, saya yakin ini adalah EOS atau mungkin ESD. Ini adalah papan ketiga lokasi ini dipanggang tetapi yang lainnya lebih banyak chip-nyali-muntah. Daya input sedikit panas daripada yang bisa ditangani SMPS, entah bagaimana serpihan ESD muncul untuk memecahnya. Saya sangat ingin tahu bagaimana mencegah kerusakan ESD, saya bahkan punya pertanyaan tentang itu. Jika Anda dapat menjelaskan apa pun, saya akan dengan senang hati menerima kedua jawaban bersama dengan rasa terima kasih.
MandoMando
Mungkin ada orang lain di sini yang memiliki rasa yang lebih baik dari bagian yang tersedia untuk ESD tingkat papan. Saya akan mencatat bahwa meskipun ada kemungkinan bahwa tata letak chip mungkin berbeda di antara bantalan, perlu dicatat bahwa Anda punya nyali chip yang tumpah, saya menduga papan Anda sebelum chip jika dilokalkan seperti itu. Apakah ada sesuatu tentang tata letak Anda yang membuat jejak itu lebih sensitif? Saran Dave TWeed sepenuhnya masuk akal.
placeholder
baik, SMPS diberi peringkat untuk 40V dan input berada pada atau tepat di atas itu. Saya menduga regulator membiarkan beberapa paku masuk. Papan pertama menumpahkan nyali, saya menambahkan TVS, lalu baru saja mati, saya menukar penyearah dengan tegangan maju sedikit lebih tinggi untuk menjatuhkan input sedikit dan tidak mati, tetapi ini terjadi padanya. Saya pikir EOS masuk akal dan tegangan input masih terlalu tinggi. Mungkin TVS 3V3 di dalam jika SMPS
MandoMando
(+1) Saya datang ke sini untuk sesuatu yang lain tetapi menemukan hal ini cukup relevan dengan proyek yang sedang saya kerjakan. Kasus saya tidak separah ini tetapi saya menyukai langkah-langkah logis yang diperlukan untuk diambil dalam skenario seperti itu. Saya mungkin panik jika hal seperti ini terjadi pada saya.
Whiskeyjack
4

Skenario yang paling mungkin adalah bahwa chip tersebut telah mengalami beberapa kerusakan, yang efeknya terlihat termasuk perilaku pull-up yang rapuh, atau kode yang karena alasan apa pun yang menyebabkan pullup secara tidak sengaja kadang-kadang diaktifkan dan kadang-kadang dinonaktifkan. Situasi terakhir mungkin sering muncul jika kode jalur utama melakukan sesuatu seperti:

WIDGET_PIN_PORT->PULLUPS |= WIDGET_PIN_PULLUP_MASK;

dan interupsi melakukan sesuatu seperti:

GADGET_PIN_PORT->PULLUPS |= GADGET_PIN_PULLUP_MASK;

di mana WIDGET_PIN dan GADGET_PIN adalah bit yang berbeda pada port I / O yang sama. Kode jalur utama akan diterjemahkan sebagai sesuatu seperti

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

Jika interupsi terjadi setelah ***1tetapi sebelumnya ***2, maka penarikan GADGET_PIN akan dihidupkan oleh interupsi tetapi kemudian dimatikan secara salah oleh kode jalur utama. Ada dua cara untuk menghindari masalah ini:

  1. Manfaatkan perangkat keras yang memungkinkan sedikit register pull-up diatur menggunakan satu instruksi daripada urutan baca-modifikasi-tulis. Saya percaya bahwa semua pengendali berbasis Cortex-M3 menyediakan fitur "bit-banging" yang dapat digunakan untuk tujuan ini, meskipun saya belum menemukan cara yang baik untuk menggunakannya dari kode yang ditulis dalam C selain dari dengan mendefinisikan bit secara manual alamat yang di-banded. Beberapa prosesor lain mungkin memiliki sarana khusus I / O-port untuk menyelesaikan tugas serupa.
  2. Nonaktifkan interupsi selama urutan baca-modifikasi-tulis port. Misalnya, ganti kode C di atas dengan panggilan ke metode

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

Kode ini akan menyebabkan interupsi dinonaktifkan sangat singkat (mungkin sekitar 5 instruksi); itu cukup singkat sehingga tidak akan menimbulkan masalah bahkan dengan interupsi relatif waktu. Perhatikan bahwa mengkompilasi metode di atas sebagai inline dapat mengurangi waktu yang diperlukan untuk memanggilnya, tetapi dapat meningkatkan jumlah waktu yang interupsi dinonaktifkan [misalnya jika pengoptimal terjadi untuk mengatur ulang kode sehingga instruksi yang memuat alamat desttidak terjadi sampai setelah __disable_irq ()].

Mengingat Anda mengatakan bahwa perilaku pull-up intermiten, saya pikir masalah kode mungkin lebih mungkin daripada masalah perangkat keras. Selanjutnya, kondisi yang merusak yang akan merusak sirkuit pull-up kemungkinan akan menyebabkan kerusakan lain pada chip - beberapa terdeteksi dan beberapa tidak. Jika setiap jenis kerusakan hardware dibuktikan terjadi pada sebuah chip, hampir selalu lebih baik untuk sampah chip dan menggantinya dengan yang baru, daripada harapan bahwa kerusakan yang diamati adalah "hanya" masalah.

supercat
sumber
0

Beberapa jawaban sebelumnya mengabaikan yang paling jelas: Periksa sambungan solder untuk tombol, resistor, kapasitor, dan UC. Di bawah mikroskop Anda mungkin dapat melihat sambungan solder yang retak.

Jika Anda tidak memiliki mikroskop, solder ulang sambungan satu dan satu dan lihat apakah itu dapat mengatasi masalah.

Reidar Gjerstad
sumber