Pracuję nad projektem MSP430, który wymaga ode mnie kierowania wyjścia jednego urządzenia peryferyjnego do wejścia innego urządzenia peryferyjnego. Tak więc mam dwa piny MCU połączone bezpośrednio ze sobą. Wydaje mi się to podejrzane, ponieważ istnieje możliwość błędu programowania powodującego, że oba są wyjściami (być może sprzecznymi). Istnieje również kwestia stanów uruchamiania i programowania.
W najgorszym przypadku, jeśli jeden pin steruje HI, drugi kontroluje LO, piny GPIO mają na ogół znacznie większą zdolność pochłaniania niż zdolność źródła ... więc będzie to trochę jak wzięcie wyjścia HI i zwarcie go do prawie- ziemia. Co jest złe ... ale jakie to złe? Czy może to spowodować uszkodzenie MCU?
Często widzę przykłady w Internecie osób używających Arduinos do zapalania diody LED między dwoma pinami bez rezystora, i nie słyszałem o żadnych historiach o tym, że ktoś smaży cokolwiek poza diodą LED. Najwyraźniej nie chcesz tego robić w produkcie, ale czy producenci zazwyczaj próbują chronić MCU przed przeciążeniem styków GPIO?
Myślenie o tym z perspektywy czasu, umieszczenie rezystora ograniczającego prąd między dwoma pinami, pozwoliłoby uniknąć zmartwień, ale nawet niewielka zmiana sprzętu jest w tym momencie bardzo trudna.
Czy w celu odniesienia w przyszłości i korzyści dla potomności ktoś ma jakieś inne pomysły na właściwy sposób minimalizacji ryzyka połączenia dwóch pinów MCU razem, a bardziej ogólnie, minimalizacji ryzyka wynikającego z możliwości przeciążenia pinów GPIO?
źródło
Odpowiedzi:
Nie stanowi to problemu, ale jeśli obawiasz się, że może wystąpić konflikt wyjść, podłącz je za pomocą rezystora 1k om. To odpowiednio ograniczy prąd.
Jeśli jednak sygnał wejściowy wymaga naprawdę szybkich zboczy, wtedy, gdy jesteś pewien, że działa, możesz przełączyć 1k om z krótkimi lub 100 omami.
Dodatkową zaletą posiadania rezystora jest to, że jeśli masz projekt przypisany do PCB, daje to łatwą opcję ponownego podłączenia.
Jest to ten sam problem z nieużywanymi wejściami - przywiązuj je do uziemienia lub Vcc i ryzykujesz duży pobór prądu z urządzenia bez żadnego łatwego sposobu na ustalenie, co się dzieje - powiązaj za pomocą 1k, jeśli nieużywane, a może 10k.
Ograniczenie przeciążenia odbywa się na niektórych układach, ale tylko z tego powodu, że tranzystory z natury nie mogą dostarczyć „wzmacniaczy”, ale może to działać przeciwko tobie, ponieważ jeśli masz kilka styków o / p zwartych do masy (lub siebie nawzajem), a każdy z nich ogranicza się z wdziękiem, nadal możesz przekroczyć maksymalną wartość prądu na piny zasilania urządzenia.
W przypadku MSP430 serii 2 strona 21 tego dokumentu mówi:
To mówi mi, że jeśli połączone prądy wyjściowe kilku pinów osiągną pewien limit, to możliwości wyjściowe dowolnych innych pinów (nawet tych, które mogą być lekko obciążone) mogą ulec pogorszeniu o tę samą wartość lub być może gorsze.
źródło
Największym problemem jest, jak wspomniałeś, błędy programistyczne. Możliwe są problemy, więc musisz ostrożnie kodować. Poza tym, dopóki piny nie są wyjściami o różnych poziomach, jest w porządku.
Używanie dwóch pinów do napędzania jednego źródła nie jest rzadkością (łączenie prądu wyjściowego).
Używanie dwóch pinów do napędzania diody LED (lub dwóch) również nie jest rzadkością. Chociaż nie zaleca się używania rezystora, można go uniknąć. Jeśli napięcie wyjściowe jest względnie zbliżone do napięcia przewodzenia doprowadzonego, pobór prądu może nie stanowić problemu. I jest spadek napięcia na pinach. Wraz ze wzrostem prądu pobieranego napięcie maleje (Vcc do Vcc - 0,3 do -1 itd.). Wraz ze wzrostem natężenia prądu wzrasta napięcie (od Gnd do Gnd + 0,3 V do + 1 V itp.). Jest to trochę samokorekty błogosławieństwo, ale nie należy na nim polegać.
I jak już powiedziałeś, można zastosować prosty rezystor ograniczający prąd.
źródło