Có phổ biến cho điện trở kéo lên nội bộ không thành công? hoặc điều gì sẽ khiến họ trở nên không liên tục?


8

Tôi có một bảng dựa trên ASIC ARM Cortex-M3 mà sau nhiều tháng làm việc đột nhiên bắt đầu báo cáo các nút bấm giả. ASIC không phải là thiết kế của chúng tôi, mà là một công ty có uy tín.

Các sơ đồ nút được đưa ra dưới đây. Pin được cấu hình như đầu vào với kích hoạt điện trở kéo lên. Giá trị của điện trở là khoảng 30KOhm.

Khi đo mặt pin bằng DMM, tôi thấy giá trị nổi xung quanh. Đôi khi nó là 3,2V (= VCC, phạm vi chip: 2.1V đến 3.6V) và những lần khác nhảy xung quanh nổi giữa 0,6V đến 1,0V.

Không có vấn đề về độ ẩm / ngưng tụ (9% rh), không có bụi hoặc các vật thể khác trên dấu vết. Và đây là bảng DUY NHẤT chịu đựng điều này. Bản sao được sản xuất khác của bảng này hoạt động mà không có bất kỳ vấn đề (dù sao cho đến nay).

Điều duy nhất tôi có thể nghĩ là một cái gì đó đang làm cho nội bộ kéo lên nhấp nháy. Có phổ biến cho các pull-up nội bộ để nhường đường? Điều gì khác có thể gây ra điều này?

Nút sơ đồ

R9, R12 là 2.2Kohm và C10, C11 là 33nF.

Câu trả lời:


4

Có vẻ như bạn đã nỗ lực để cách ly các chân đầu vào của mình khỏi các công tắc, tuy nhiên, một sự kiện quá lớn có thể đã làm hỏng một phần của mạch điều khiển / bộ thu pin trên chip (và không nhất thiết là thiết bị pullup) .

Nếu bạn muốn làm cho điều này mạnh mẽ hơn, bạn có thể xem xét thêm các điốt kẹp ngoài, hạt ferrite hoặc thậm chí là một bộ đệm bóng bán dẫn giữa công tắc và pin.


Tôi đã nghĩ về ESD, nhưng giả sử rằng C10 và C11 gần với chip thì không chắc là ESD. Sự khôn ngoan thông thường là 3nF là đủ để hấp thụ hầu hết các sự kiện ESD, vì vậy những chiếc mũ 33nF đó đã cung cấp sự bảo vệ đáng kể.

Hmm, phía ps được mô tả ở đây có thể mặt đất của bộ chỉnh lưu không bị quá âm (<-0.3V) và phá vỡ một số diode kẹp theo thời gian? Hoặc ESD / thoáng qua qua pin nhưng thông qua VCC. Chân này gần với chân VDD của chip.
MandoMando

@MandoMando: Hiện tại, bạn có sẵn sàng để làm cho hội đồng quản trị của bạn hoạt động bằng cách loại bỏ các pull-up bên ngoài?
Kaz

8

Thống kê là bạn của bạn. Tôi hiểu rồi, bạn có một thiết bị thất bại, bạn tự hỏi đây có phải lỗi của tôi không? Có an toàn để vận chuyển trong khối lượng? Điều gì xảy ra nếu đây thực sự là một vấn đề và chúng tôi gửi 10.000 đơn vị đến hiện trường? Tất cả các dấu hiệu mà bạn đưa ra một tào lao và rằng bạn có thể là một nhà thiết kế / kỹ sư có lương tâm.

Nhưng thực tế là, bạn có một thất bại và các yếu tố sai lệch xác nhận của con người áp dụng cho các tình huống tiêu cực cũng như các tình huống tích cực. Bạn đã có một thất bại, không có nguyên nhân rõ ràng. Trừ khi bạn biết về một sự kiện làm giảm hiệu ứng này thì đây chỉ là sự lo lắng.

Đây là ESD. Tôi có thể chứng minh rằng đó là ESD không? - Có thể / có thể không - nếu bạn gửi cho tôi một phần và tôi dành $$ lớn để xóa nó và chạy nó qua các thử nghiệm khác nhau như SEM và SEM với khả năng tăng cường độ tương phản bề mặt, có thể. Tôi đã có nhiều trường hợp tôi cố tình hạ gục một thiết bị như là một phần của chứng nhận ESD, thiết bị đã thất bại và phải mất 30 giờ để tìm ra điểm thất bại. Điều quan trọng là phải hiểu các cơ chế thất bại và năng lượng kích hoạt để việc săn bắn là cần thiết (nếu rõ ràng là lãng phí) nhưng hoàn toàn bằng một nửa thời gian chúng ta không thể thấy điểm thất bại. Và đó là sau khi phân tích FMEA và hướng dẫn loại bỏ vị trí.

Mọi người có ý tưởng sai lầm rằng ESD luôn có nghĩa là vụ nổ và ruột chip nôn mửa khắp nơi với Si nóng chảy và khói cay. Đôi khi bạn thấy điều này, nhưng thường thì nó chỉ là một lỗ kim nhỏ ở quy mô nanomet trong cổng oxit đã bị vỡ. Nó có thể đã xảy ra từ lâu và theo thời gian nó đã thất bại vì sự thay đổi tham số.

Trong thực tế trong các thử nghiệm ESD, chúng tôi sử dụng phương trình Arrhenius để dự đoán thất bại. Chúng tôi hạ gục các thiết bị ở nhiều cấp độ và kiểu máy khác nhau (trở kháng nguồn) và sau đó chúng tôi nấu các bds nhỏ hàng giờ và theo dõi chúng theo thời gian để có thể lượm lặt chế độ thất bại và do đó dự đoán hiệu suất trong tương lai. Bạn có thể dễ dàng có 1000 chip trên bảng chạy trong các buồng môi trường trong nhiều tháng. Đó là tất cả một phần của "chất lượng" - tức là trình độ chuyên môn.

Hiệu ứng chính mà chúng tôi luôn tìm kiếm cho các chế độ _some_failure là EOS (Điện áp quá mức). Nó có thể được gây ra bởi ESD hoặc các tình huống khác. Tôi hiện đại xử lý dung sai cho mức EOS cổng bên trong chip có thể tối đa là 15%. (Đó là lý do tại sao việc chạy chip tại đường ray MAX Vss dự định của nó rất quan trọng). EOS có thể xuất hiện vài tháng sau đó. Nhiệt từ hoạt động sẽ giống như một thử nghiệm trọn đời tăng tốc nhỏ (bạn không áp dụng phương trình Arrhenius và nó không được kiểm soát).

Nếu bạn muốn hiểu rõ hơn, hãy tìm các tiêu chuẩn JEDEC ESD22 mô tả MM (Kiểu máy) và HMB (Kiểu cơ thể người) mô tả các đầu dò thử nghiệm và sạc.

Đây là snip của mô hình từ JEDEC JESD22-A114C.01 (tháng 3 năm 2005).

nhập mô tả hình ảnh ở đây

Bạn sắp xếp thông báo như thế nào trông giống với mạch của bạn? và các giá trị thậm chí gần đúng, và điều này được sử dụng với các mức điện áp phù hợp để thổi bay các cấu trúc ra khỏi cấu trúc ESD.

Vì vậy, những gì bạn cần làm là:

-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.

Cảm ơn nhiều! Tôi có TVS 45V trên đầu vào PS (dung sai 60V) và tôi cho rằng sẽ quan tâm đến ESD, phải không? Đọc câu trả lời của bạn, tôi tin rằng đây là EOS hoặc có thể là ESD. Đây là bảng thứ ba vị trí này đã được rang nhưng những cái khác thì nhiều hơn-ruột-nôn. Sức mạnh đầu vào là một chút nóng hơn SMPS có thể xử lý, bằng cách nào đó mảnh vỡ của ESD đi qua để phá vỡ nó. Tôi rất tò mò muốn biết làm thế nào để ngăn chặn thiệt hại của ESD, tôi thậm chí còn có một câu hỏi về nó. Nếu bạn có thể làm sáng tỏ bất kỳ điều gì, tôi sẽ vui lòng chấp nhận cả hai câu trả lời cùng với lòng biết ơn.
MandoMando

Có lẽ có những người khác ở đây có ý thức tốt hơn về các bộ phận có sẵn cho cấp độ bảng mạch. Tôi sẽ lưu ý rằng mặc dù có thể bố trí chip có thể khác nhau giữa các miếng đệm, nhưng đáng chú ý là bạn đã bị đổ chip, tôi sẽ nghi ngờ bo mạch của bạn trước chip nếu nó được bản địa hóa như thế. Có điều gì về bố cục của bạn làm cho những dấu vết đó nhạy cảm hơn? Đề xuất của Dave TWeed là hoàn toàn hợp lý.
giữ chỗ

tốt, SMPS được đánh giá cho 40V và đầu vào ở hoặc ngay trên mức đó. Tôi nghi ngờ cơ quan quản lý cho phép một số gai thông qua. Tấm ván đầu tiên bị đổ, tôi thêm TVS, sau đó nó chết, tôi đổi bộ chỉnh lưu với điện áp cao hơn một chút để giảm đầu vào một chút và nó không chết, nhưng điều này đã xảy ra với nó. Tôi nghĩ rằng EOS có ý nghĩa và điện áp đầu vào vẫn còn quá cao. Có thể là TVS 3V3 ở bên trong nếu SMPS
MandoMando

(+1) Tôi đến đây vì một cái gì đó khác nhưng thấy điều này khá phù hợp với dự án tôi đang thực hiện. Trường hợp của tôi không nghiêm trọng nhưng tôi thích các bước hợp lý cần thiết để được thực hiện trong một kịch bản như vậy. Có lẽ tôi đã hoảng loạn nếu chuyện như thế này xảy ra với tôi.
Whiskeyjack

4

Các tình huống có thể xảy ra nhất là chip đã bị một số thiệt hại, mà các hiệu ứng có thể nhìn thấy bao gồm hành vi kéo lên không ổn định, hoặc mã khác là vì bất kỳ lý do gì khiến cho pullups đôi khi được kích hoạt và đôi khi bị vô hiệu hóa. Tình huống thứ hai có thể thường xuyên phát sinh nếu mã dòng chính làm điều gì đó như:

WIDGET_PIN_PORT->PULLUPS |= WIDGET_PIN_PULLUP_MASK;

và một ngắt làm một cái gì đó như:

GADGET_PIN_PORT->PULLUPS |= GADGET_PIN_PULLUP_MASK;

trong đó WIDGET_PIN và GADGET_PIN là các bit khác nhau trên cùng một cổng I / O. Mã dòng chính sẽ dịch như một cái gì đó như

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

Nếu một ngắt xảy ra sau ***1nhưng trước ***2đó, thì pullup của GADGET_PIN sẽ được bật bởi ngắt nhưng sau đó bị tắt nhầm bởi mã dòng chính. Có hai cách để tránh vấn đề này:

  1. Sử dụng phần cứng có thể cho phép thiết lập một chút thanh ghi kéo lên bằng một lệnh duy nhất thay vì trình tự đọc-sửa đổi-ghi. Tôi tin rằng tất cả các bộ điều khiển dựa trên Cortex-M3 đều cung cấp tính năng "đập bit" có thể được sử dụng cho mục đích này, mặc dù tôi chưa tìm thấy cách sử dụng nào tốt từ mã được viết bằng C ngoài cách xác định bit thủ công địa chỉ có dải. Một số bộ xử lý khác có thể có các phương tiện dành riêng cho cổng I / O để hoàn thành một nhiệm vụ tương tự.
  2. Vô hiệu hóa các ngắt trong chuỗi đọc-sửa-ghi cổng. Ví dụ, thay thế mã C ở trên bằng một cuộc gọi đến một phương thức

    void set32 (uint32_t dễ bay hơi * mệnh, giá trị uint32_t) {uint32_t old_int = __get_PRIMASK (); __disable_irq (); * mệnh = * mệnh | giá trị; __set_PRIMASK (old_int); }

Mã này sẽ khiến các ngắt bị vô hiệu hóa rất nhanh (có thể khoảng 5 hướng dẫn); đủ ngắn gọn để nó không gây ra vấn đề ngay cả với các ngắt tương đối quan trọng về thời gian. Lưu ý rằng biên dịch phương thức trên dưới dạng nội tuyến có thể giảm thời gian cần thiết để gọi nó, nhưng có thể tăng thời gian ngắt bị vô hiệu hóa [ví dụ: nếu trình tối ưu hóa xảy ra để sắp xếp lại mã để lệnh tải địa chỉ destkhông xảy ra cho đến sau __disable_irq ()].

Cho rằng bạn nói rằng hành vi kéo lên không liên tục, tôi nghĩ rằng một vấn đề về mã có lẽ nhiều khả năng hơn là vấn đề phần cứng. Hơn nữa, các điều kiện gây tổn hại sẽ gây hại cho mạch kéo lên cũng có khả năng gây ra thiệt hại khác cho chip - một số có thể phát hiện được và một số thì không. Nếu bất kỳ loại hư hỏng phần cứng nào có thể xảy ra đối với chip, thì hầu như luôn luôn tốt hơn để loại bỏ chip và thay thế nó bằng một cái mới, hơn là hy vọng rằng thiệt hại quan sát được là vấn đề "duy nhất".


0

Một số câu trả lời trước bỏ qua điều rõ ràng nhất: Kiểm tra các mối hàn cho nút, điện trở, tụ điện và uC. Dưới kính hiển vi, bạn có thể thấy khớp hàn bị nứt.

Nếu bạn không có kính hiển vi, hãy hàn lại một và một khớp và xem nó có khắc phục được sự cố không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.