Zalecenia dotyczące domyślnych ustawień nieużywanych pinów na STM32 (ARM Cortex M3) - pociągnij w górę / w dół?

15

Obecnie używamy różnych wariantów rodziny mikrokontrolerów STM32. Chciałbym wiedzieć, co następuje:

  1. Jakie są zalecane ustawienia domyślne dla pinów mikrokontrolerów w ogóle, jeśli masz opcję wyboru zarówno podciągania, jak i opuszczania? Jakie są zalety i wady korzystania z jednego lub drugiego? (Zakładając, że skonfigurujesz je domyślnie jako dane wejściowe)

  2. W szczególności chciałbym wiedzieć, co zrobić z nieużywanymi pinami dla rodziny mikrokontrolerów STM32. Jest dla mnie oczywiste, że nie powinniśmy zostawiać pinów unoszących się w powietrzu (to wszystko, co mówi arkusz danych :(), ale czy powinienem ustawić je tak, aby wprowadzało za pomocą podciągania lub wprowadzania z podciąganiem? W szczególności chciałbym wybranie ustawienia, które jest najmniej podatne na wyładowania elektrostatyczne, a także, jeśli to możliwe, zużywa najmniej energii.

  3. W przypadku krytycznych pinów, czy powinniśmy polegać na oprogramowaniu układowym, aby poprawnie ustawić pin do prawidłowego stanu domyślnego, czy też ta odpowiedzialność powinna spoczywać na zewnętrznym sprzęcie (podłączanie zewnętrznych podciągnięć lub podciągnięć)? Jeśli wartości wybrane dla zewnętrznych rezystorów są większe niż wewnętrzne podciągania lub opuszczania, ustawienie w oprogramowaniu układowym nie ma znaczenia.

Pro, który widzę, że robię to powyżej, polega na tym, że jeśli mikro nie zainicjuje się poprawnie z jakiegokolwiek powodu (wadliwy sprzęt lub podobne), nie polegamy na oprogramowaniu układowym, aby poprawnie ustawić pin.

Wadą jest to, że kosztuje to więcej, jest to sprzęt.

Każde światło, które możesz rzucić na powyższe, będzie naprawdę mile widziane.

Dzięki..

IntelliChick
źródło
Dlaczego nie ustawić nieużywanych pinów jako wyjść? To wyeliminowałoby problem „pull-up vs. pull-down”.
Connor Wolf,
Uwaga: „Przy każdym zdarzeniu resetowania wszystkie GPIO są zmiennymi wejściami. Zapobiega to przypadkowemu uszkodzeniu GPIO w nagłych przypadkach.” embedded-lab.com/blog/stm32-gpio-ports-insights
cp.engr

Odpowiedzi:

11

Ta odpowiedź nie jest specyficzna dla STM32, ale opiera się na doświadczeniu i wielu takich dyskusjach przez wiele (wielu) lat. Inni mogą do tego dodać - obejmuje główne punkty (myślę), ale mogą nie być kompletne.

To zachęcające, gdy ktoś zadaje te proste, ale fundamentalne pytania i pokazuje, w jaki sposób takie „małe rzeczy” mogą „gangować” w prawdziwym życiu.

tzn. „Jeśli mikro nie zainicjuje się poprawnie ...” naprawdę „czyta”… kiedy mikro nie inicjuje się poprawnie… ”:-) - i to oczywiste, że zdajesz sobie z tego sprawę.

Więc:

  • Korzystanie z zewnętrznego pullup lub pulldown jest niezbędne dla tych, którzy naprawdę chcą uzyskać dobrze określony wynik. To jedna z największych rzeczy do zrobienia tutaj. Cała reszta to bonus. tzn. ustawienie wejść za pomocą wewnętrznego pullxxx jest kompromisem, który prawie zawsze będzie działał.
    ALE jeśli „prawie zawsze” nie jest wystarczająco dobry dla twojego projektu, potrzebujesz zewnętrznego pull xxxs.

  • Podciąganie lub opuszczanie nie wydaje się mieć zdecydowanie lepszego wyniku. Może różnić się między układami scalonymi, ale można to ustalić na podstawie karty danych. Wszystkie rzeczy są równe (jak mogą być) Wolałbym obniżanie, ponieważ istnieje potencjał obniżenia prądów upływowych do zewnętrznego obwodu urządzenia - ale może to być minimalne w odpowiednio pokrytej płytce drukowanej i / lub w łagodnym środowisku.

  • Jeśli naprawdę Ci zależy, możesz przyjrzeć się akcji startowej. np. wyciągnięta szpilka zacznie się nisko i na pewnym etapie przejdzie wysoko. Rozebrana szpilka prawdopodobnie pozostanie niska przez cały czas. To prawdopodobnie nie jest ważne, ale zostało wspomniane dla kompletności.

  • Podatność na wyładowania elektrostatyczne będzie zależna od urządzenia, prawdopodobnie symetryczna i średnio w przypadku wielu procesorów prawdopodobnie sprzyja obniżeniu, ponieważ sterowniki mają tendencję do zapadania się lepiej niż źródło, jeśli są asymetryczne. Jeśli dbasz o ESD, możesz chcieć używać niskich wyjść z obniżkami - ponieważ ścieżka o niskiej impedancji (prawdopodobnie) zapewni lepszą ochronę przed ESD. Ale jeśli bardzo troszczysz się o ESD, będziesz chciał zaprojektować go w inny sposób i nie polegać na ochronie w IC jako głównej ochronie.

  • Do pytania 3 - pożądane jest zewnętrzne pullxxxs, ale wydaje się bezpieczne stosowanie wartości, które są na najwyższym poziomie właściwego projektu, a następnie równoległe stosowanie wewnętrznych xxx w razie potrzeby. Ponieważ jednak wewnętrzne wyciąganie xxxs często ma efekt 2: 1, możesz uzyskać największy R i najmniejszy prąd, używając tylko zewnętrznego. To, czego oczywiście chcesz uniknąć, to zewnętrzne podciągnięcia i wewnętrzne podciągnięcia lub vice bersa - ale to raczej nie będzie problem.

  • Kiedy mówię „… ograniczenie wysokiej klasy właściwego projektu…” mam na myśli to, a nie „przekroczyć granicę ...”. tzn. pin będzie miał określoną wartość rezystancji, co pozwala na spełnienie najgorszego przypadku specyfikacji Vin. Większy rezystor może pobierać mniej prądu w oporniku, ale może zacząć bardzo delikatnie włączać wewnętrzny przełącznik. tzn. może być tak, że występuje prąd Rpulldown_current w porównaniu z najniższym całkowitym prądem, ponieważ wewnętrzny sterownik zaczyna widzieć prąd upływu (który będzie bardzo mały) zwiększający prąd do kierownicy i szepczący go bardzo nieznacznie.

  • Jeśli użyjesz np. Rozwijanego menu, może okazać się, że niższe jest ustawienie pinu na wyjście i obniżenie go, ale jest to opcja, o której można zdecydować we właściwym czasie.

  • Prawie na bok - NIGDY nie pozwól, aby diody zabezpieczające radziły sobie z „wszelkimi znaczącymi prądami” na dowolnym etapie podczas pracy. Zezwolenie na to może prowadzić do całkowicie niewytłumaczalnego działania procesora. Im mniej prądu, tym mniejsza szansa, że ​​coś pójdzie nie tak - i tym trudniej go znaleźć.

Russell McMahon
źródło
1
Bardzo wnikliwa odpowiedź. Dziękuję Ci bardzo. Czy możesz rozwinąć nieco więcej na ten temat - „Jeśli dbasz bardzo o wyładowania elektrostatyczne, możesz chcieć stosować niskie wartości wyjściowe z obniżkami - ponieważ ścieżka o niskiej impedancji (prawdopodobnie) zapewni lepszą ochronę przed wyładowaniami elektrostatycznymi”? Jeśli ustawiasz wartość wyjściową - czy domyślnie wybierasz otwarty odpływ lub push pull (high / low)?
IntelliChick
@IntelliChick Głównym celem ustawienia wyjścia jest doprowadzenie go do znanego stanu przy niskiej impedancji, co oznacza, że ​​zdecydowanie NIE ustawiłbyś go na otwarty odpływ, szczególnie otwarty odpływ z wyjściem HI, ponieważ jest to tylko wysoka impedancja.
DKNguyen
@DKNguyen 8+ lat na ... :-). I od ponad 8 lat nie widziano Intellichick - ALE wciąż warto dodać swój komentarz.
Russell McMahon
@ RussellMcMahon Uwolnij się z więzienia, które jest konwencjonalnym postrzeganiem czasu.
DKNguyen
@DKNguyen Dawno temu zaprzyjaźniłem się z fotonami. Żyjemy teraz w wieczności. Nadal jednak nie udaje mi się osiągnąć tego, co robią. WSZYSTKIE fotony żyją w ponadczasowej, „bezprzestrzennej” jedności. Foton, który opuszcza Sol i foton, który opuszcza alfa centauri proxima, są razem przez cały czas, nigdy nie znają znaczenia przybycia na początku, na końcu, ani między nimi. Kiedy pytam, jak to osiągnąć, po prostu się uśmiechają. || Ciągły strumień ludzi komentuje moje posty wiele lat po ich opublikowaniu. Lub nawet je edytować. Z pewnością również.
Russell McMahon
2

Do czego optymalizujesz? Optymalizacja kosztów nakazuje ustawienie nieużywanych styków na wyjścia. Optymalizacja niezawodności określa, że ​​wszystkie poziomy pinów są zdefiniowane, nawet w krótkim okresie czasu, zanim oprogramowanie układowe ma szansę na ustawienie nieużywanych pinów zgodnie z tym, co uzna za stosowne.

Raz musiałem sprawdzić obliczenia niezawodności płyty procesora. Został dobrze zaprojektowany, z pokrywami odsprzęgającymi w każdym miejscu i rezystorami typu pull-to-cokolwiek na wszystkich pinach I / O. Inżynier ds. Niezawodności wyjął swój podręcznik, dodał wskaźniki awaryjności wszystkich zaangażowanych komponentów i ostatecznie uzyskał liczbę zdominowaną przez wskaźniki awarii komponentów pasywnych. Liczba ta była wyższa niż wymaganie, więc mieliśmy problem. Usuń te rezystory, a liczba będzie OK. Ale na tę propozycję elektrycy zaczęli krzyczeć ze złości (słusznie, IMO). Nie pamiętam, jak historia się skończyła; Myślę, że poszliśmy do klienta i poprosiliśmy o dyspensę za pominięcie wskaźników awaryjności rezystorów w obliczeniach, ponieważ nie przewodziły one znaczącego prądu.

Wouter van Ooijen
źródło
1

Po prostu konfiguruję nieużywane piny jako wyjścia i ustawiam je na niskim poziomie.

Leon Heller
źródło
czy normalnie ustawiłbyś je na odpychanie lub otwieranie odpływu? A w obu przypadkach ustawiłbyś je na niskie? Czy możesz mi powiedzieć, dlaczego wybrałeś jedną z nich.
IntelliChick
@Leon Heller - który spełnia test „zwykle działa”, ale kończy się niepowodzeniem, gdy mikroprocesor nie inicjuje się prawidłowo lub gdy Murphy odwraca się trochę losowo, jak to czasami robi. , działa
Russell McMahon,