Pytanie:
Powody, dla których stany pinów MCU domyślnie ustawiają się w górę / w dół po zresetowaniu
TRISAbits
2019-03-19 10:33:28 UTC
view on stackexchange narkive permalink

W wielu MCU stany pinów są domyślnie ustawione na potrójne (a.k.a. wejścia analogowe), gdy MCU resetuje się, aby nie wpływać na obwody, do których są podłączone, dopóki oprogramowanie nie skonfiguruje styków.Potrójne piny pozwalają również projektantowi sprzętu komputerowego wybrać stan wyciągnięcia każdego z pinów w zależności od przypadku w zależności od podstawowego obwodu.

Istnieją jednak MCU (i SoC), które domyślnie swoje piny aktywują zamiast tego wewnętrzne podciąganie / opuszczanie.Na przykład LPC845 domyślnie ustawia wszystkie szpilki na podciąganie wychodzące z resetowania. LPC845 Datasheet Section 8.11.1

Czy istnieje powód, dla którego domyślne ustawienie pinów do podnoszenia / opuszczania jest lepsze niż potrójne (poza możliwymi przyrostowymi oszczędnościami energii podczas resetowania lub krańcowymi oszczędnościami BOM)?

Jeśli już, rzadko stwierdzam, że szpilki powinny być wyciągane - w górę wychodzące z resetu (zazwyczaj muszę je wyciągnąć, jeśli w ogóle).

Prawdopodobnie chciałbym, aby to zachowanie było konfigurowalne za pomocą bezpieczników dla urządzenia podczas programowania.To moja myśl, teraz.
Brzmi jak dobry chip.Prawdziwe pytanie brzmi, dlaczego zdecydowana większość MCU pozostawia je w trójstanowych / wejściach, narażając piny na EMI i ESD podczas uruchamiania MCU.Ponieważ wszyscy lubimy testy EMC zakończone niepowodzeniem i uszkodzone przez ESD układy scalone, prawda?
@Lundin To ciekawy punkt.Widzę, że problem EMI stanowi problem, jeśli szpilki nie są wyciągane z zewnątrz, ale w jaki sposób można by złagodzić ESD przez domyślne ustawienie pinów w określonym stanie ściągania wychodzącym z resetowania?Czy diody wejściowe nie są wystarczające?
@TRISAbits W nowoczesnych mikrokontrolerach diody powinny być w porządku ... może.Często nie ma publicznej specyfikacji.Dlatego dobrą praktyką jest posiadanie pewnego rodzaju rezystora między pinem a złączami / przyciskami / rzeczami, w które ludzie mogą szturchać.
Pięć odpowiedzi:
Mr. Snrub
2019-03-19 10:54:17 UTC
view on stackexchange narkive permalink

Ponieważ dobrą praktyką jest, aby nigdy nie pozostawiać pinów logicznych w pełni pływających.
Krótkie omówienie wyznacznika celu dydaktycznego
Szczegółowy przegląd wyznacznika celu dydaktycznego
Zabawna dramatyczna opowieść wojenna na przykładzie z prawdziwego świata

Całkowicie się zgadzam.Pływające szpilki są rzeczywiście złe dla zużycia energii.Jednak każde dobrze działające oprogramowanie układowe powinno ustawić wszystkie nieużywane styki w znanym stanie, aby utrata zasilania wystąpiła tylko w wyniku resetu (a utratę tę można wyeliminować, stosując zewnętrzne ciągi).Czy jest więc pomysł, że nadając pinowi domyślny stan (pull-up / down), FW wymaga mniejszego masowania, aby uzyskać niższe wartości mocy?
Myślę, że doszedłeś do sedna sprawy.Jeśli oprogramowanie układowe jest grzeczne i / lub projektant sprzętu miał rozsądek, aby zastosować odpowiednie podciągnięcia lub obniżenia, nie byłoby absolutnie potrzeby tego typu inicjalizacji.I myślę, że dlatego nie wszyscy projektanci chipów to robią.Wszystko to kwestia filozofii - czy chcesz zakładać, że Twoi użytkownicy są wystarczająco sprytni, aby robić Właściwe Rzeczy, czy też chcesz ich chronić, jeśli tego nie zrobią?Można by się z tym spierać ...
Niektóre MCU mają wyłączoną logikę bufora wejścia cyfrowego po wyzerowaniu (np.PIC12 / 16/18), co przypuszczalnie ma na celu zapobieganie wyciekom spowodowanym przez przebicie?Jeśli tak, byłaby to alternatywa dla wtłaczania szpilek w pewien znany stan.
Swoją drogą, wspomniał pan o prądach upływowych, ale jak pokazano w „zabawnej, udramatyzowanej historii wojennej”, moim większym zmartwieniem będą oscylacje.Prądy upływowe znikną, gdy FW ustawi pin w dobrym stanie, ale jeśli pływający pin oscyluje, istnieje niebezpieczeństwo, że spowoduje to przejście logiki w stan nieprawidłowy.
Masz na myśli: oscylacje na wejściu * podczas * resetowania MCU, co uniemożliwia MCU prawidłowe zakończenie resetowania?
Naprawdę chcę powiedzieć, że oscylacja na pinie wejściowym w dowolnym momencie, niezależnie od tego, czy jest resetowana, czy nie, jest prawdopodobnie złą wiadomością.Tak, jeśli oscylacja wystąpiła podczas procesu resetowania, byłbym poważnie zaniepokojony, że proces resetowania może nie w pełni zainicjować rzeczy do znanego dobrego stanu.
jpa
2019-03-19 18:32:05 UTC
view on stackexchange narkive permalink

Inne odpowiedzi podały ogólne powody, dla których producent chipów może zdecydować się na domyślne włączenie podciągania. Jednak w konkretnym przypadku LPC845 istnieje dodatkowy powód: posiada wyspecjalizowaną pamięć FAst Initialization Memory (FAIM), której można użyć do ustawienia stanu natychmiast po resecie:

Zawartość FAIM zapewnia programowalną przez użytkownika początkową konfigurację dla aspektów mikrokontrolera, które zaczynają działać natychmiast po resecie, zanim kod zacznie działać. Dla Na przykład standardowe podkładki I / O normalnie nie resetują się przy wewnętrznych podciągnięciach włączone. W niektórych systemach może to powodować przepływ nadmiernego prądu, aż oprogramowanie będzie to możliwe ponownie skonfigurować klocki. Jednak poprzez odpowiednie zaprogramowanie FAIM reset każdego padu konfigurację można dostosować.

( instrukcja obsługi LPC84x sekcja 4.2)

Dlatego wybrali bezpieczne (z punktu widzenia zużycia energii i punktu widzenia EMI) domyślne, pozwalając bardziej zaawansowanym użytkownikom na dostosowanie tego ustawienia.

Wadą FAIM jest to, że wymaga dodatkowego kroku programowania, aby ustawić go z góry, co oznacza, że projekt powinien przetrwać nieprawidłowy stan ściągania, dopóki FAIM nie zostanie zaktualizowany.Alternatywnie możesz zainstalować silniejsze zewnętrzne przyciąganie, aby przesterować domyślną konfigurację wewnętrzną, ale teraz wprowadziłeś ciągłą utratę mocy przez zewnętrzne przyciąganie.Chyba nie możesz mieć ciasta i też go zjeść.
@TRISAbits Tak.Ale w końcu, nawet gdyby było to potrójne, potrzebowałbyś zewnętrznego rozwijania na ważnych pinach, a jeśli ciągnie się do stanu domyślnego, średnia strata nie jest tak duża.
Chodzi o to, że (słabo) mówiłem, że zewnętrzne ciągnięcie będzie musiało być silniejsze niż w innym przypadku wymagane, aby nadciągnąć wewnętrzne.Gdyby piny były potrójne, siła naciągu mogłaby być słabsza, co skutkowałoby mniejszą utratą mocy przez ciągnięcie zewnętrzne.
Justme
2019-03-19 11:39:08 UTC
view on stackexchange narkive permalink

W dawnych czasach istniały mikrokontrolery Intel 8051, które miały tylko piny I / O z otwartym drenem, więc przez większość czasu potrzebne były zewnętrzne podciągnięcia, aby robić przydatne rzeczy, takie jak podłączanie przycisków lub kontrolowanie wejść CMOS innych układów.Najprawdopodobniej będzie to łatwe przeprojektowanie takich płyt z nowoczesnym mikrokontrolerem lub ludzi z tamtej epoki, którzy są przyzwyczajeni do projektowania z podciągniętymi wejściami / wyjściami typu open-collector.Kiedyś potrzebowałeś głównie podciągnięć, jeśli w ogóle, a rzadko podciągnięć.

To naprawdę interesujący wgląd i wyjaśnia, dlaczego wiele układów logicznych ma piny aktywujące aktywne i niskie wyjście.Logika aktywny-wysoki nie łączy się tak dobrze, gdy domyślny stan ściągania jest wysoki.Poza tym nie łączy się dobrze, gdy jest bezpośrednio podłączony do bramki NMOS, chyba że chcesz, aby tranzystor włączał się domyślnie.
Również inne chipy z tamtej epoki mają aktywne sygnały, gdy są niskie.Układy TTL (na przykład serie 74XX i 74LSXX) mogą ciągnąć nisko silniej niż push wysoko.Dlatego szybko opadająca krawędź jest ostrzejsza i bardziej zdefiniowana niż powolna, wykładniczo narastająca krawędź.Również małe prądy wpływają i wychodzą z wejść chipa, ponieważ nie mają tak wysokiej impedancji.Dlatego czasami konieczne są podciągnięcia, a podciągnięcia mogą być słabsze niż podciągnięcia, dlatego masz aktywną niską logikę z podciągnięciami, z przyciskami uziemiającymi wejścia i wyjścia, włączającymi diody przez uziemienie diody przez rezystor.
Ale..chenski
2019-03-19 10:55:34 UTC
view on stackexchange narkive permalink

Pozostawienie pinów GPIO jako potrójnych danych wejściowych ma wiele niepożądanych skutków:

  1. Ponieważ proces produkcyjny jest zróżnicowany i wiele innych obwodów jest podłączonych do GPIO (jako bufor wyjściowy i ochrona ESD), kierunek wynikowego wycieku pasożytniczego jest nieprzewidywalny, więc stan może przyjmować wartość logiczną wysoką lub niską;

  2. Ponownie, ze względu na zmienność procesu i zależność od temperatury, wyciek pinów może być bardzo mały, powodując albo bardzo powolną zmianę stanu logicznego po, powiedzmy, kilku minutach, co może być wyzwaniem przy uwzględnieniu w kodzie, lub może dryfować w nieprzewidywalnym kierunku.

  3. Pozostawienie pinów pływających może prowadzić do ustanowienia pewnego średniego potencjału, gdzie bufor wejściowy pinów może działać jako wzmacniacz liniowy ze znacznym wzmocnieniem, powodując albo samoczynne oscylacje (z powodu pasożytniczego dodatniego sprzężenia zwrotnego na szynach zasilających) lub być podatny na zewnętrzne zakłócenia elektromagnetyczne. Oscylacje mogą być gdzieś wewnętrznie i prowadzić do poboru mocy poza zakresem.

4 ... trzeba zapomnieć o czymś innym ... transjenty po włączeniu?

awjlogan
2019-03-19 16:11:44 UTC
view on stackexchange narkive permalink

Z punktu widzenia systemu, posiadanie kołków rozpoczynających się w określonym stanie jest zaletą.Na przykład może być podłączony silnik, który nie powinien być uruchamiany bez polecenia.Urządzenia peryferyjne zwykle oczekują, że ich interfejsy będą w określonym stanie, a uruchamianie z wysokim Z może nie zapewnić wymaganego stanu.Ponieważ wewnętrzne podciąganie / opadanie w typowym mikrokontrolerze jest stosunkowo słabe, w razie potrzeby można je zastąpić silniejszym zewnętrznym podciąganiem / opuszczaniem.Jako dodatkowa uwaga, miło jest zobaczyć w arkuszu danych, jakie jest oczekiwane zachowanie pinów, czasami nie jest to uwzględnione ..!

Problem z zapewnieniem zewnętrznego podciągania, gdy włączony jest wewnętrzny, jest dwojaki: [1] Zewnętrzne pociągnięcie musi być odpowiednio dobrane, aby było * znacznie * silniejsze (dobra zasada to co najmniej 10x).W przeciwnym razie utworzysz dzielnik napięcia, który może ustawić napięcie w środkowej strefie bez ludzi.[2] Silniejsze przyciąganie zewnętrzne powoduje ciągłą utratę mocy (jeśli stan pinów jest często odwrotny do kierunku ciągnięcia), co szybko zużywa więcej energii niż jakiekolwiek straty wynikające z wyregulowania potrójnych pinów.
@TRISAbits Uzgodnione w obu punktach.Nie jest to pożądane zastąpienie, ale większość wewnętrznych ma 50-100K, więc nie jest to katastrofa.Przeczytaj instrukcję jak zawsze :)
@TRISAbits W tym przykładzie nie chodzi też o moc, chodzi o to, jak szerszy system współdziała podczas resetowania, a nie tylko MCU.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...