Obecnie używamy różnych wariantów rodziny mikrokontrolerów STM32. Chciałbym wiedzieć, co następuje:
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)
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.
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..
źródło
Odpowiedzi:
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źć.
źródło
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.
źródło
Po prostu konfiguruję nieużywane piny jako wyjścia i ustawiam je na niskim poziomie.
źródło