Frage:
Gründe für MCU-Pin-Zustände sind standardmäßig Pull-Up / Down aus dem Reset
TRISAbits
2019-03-19 10:33:28 UTC
view on stackexchange narkive permalink

Bei vielen MCUs werden die Pin-Zustände standardmäßig dreifach angegeben (a.k.a. analoge Eingänge), wenn die MCU zurückgesetzt wird, um die Schaltkreise, mit denen sie verbunden sind, nicht zu beeinträchtigen, bis die Software die Pins konfiguriert.Die dreifach angegebenen Stifte ermöglichen es dem HW-Konstrukteur auch, den Zugzustand jedes Stifts von Fall zu Fall in Abhängigkeit von der zugrunde liegenden Schaltung zu wählen.

Es gibt jedoch einige MCUs (und SoCs), deren Pins standardmäßig ein internes Pull-Up / Down aktivieren.Zum Beispiel verwendet der LPC845 standardmäßig alle Pins als Klimmzüge, die aus dem Reset herauskommen. LPC845 Datasheet Section 8.11.1

Gibt es einen Grund, warum die Standardeinstellung der Pins für das Hoch- / Herunterziehen der dreifachen vorzuziehen ist (abgesehen von den möglichen inkrementellen Energieeinsparungen beim Zurücksetzen oder den geringfügigen Einsparungen bei den Stücklistenkosten)?

Wenn überhaupt, finde ich selten, dass Stifte nach oben gezogen werden sollten - nach dem Zurücksetzen (ich muss sie normalerweise nach unten ziehen, wenn überhaupt).

Ich möchte wahrscheinlich, dass dieses Verhalten während der Programmierung mit Sicherungen für das Gerät konfiguriert werden kann.Das ist jetzt mein Gedanke.
Klingt nach einem guten Chip.Die eigentliche Frage ist, warum die überwiegende Mehrheit der MCUs sie in drei Zuständen / Eingängen belässt und die Pins während des Starts der MCU EMI und ESD aussetzt.Weil wir alle es mögen, dass EMV-Tests fehlschlagen und ICs durch ESD beschädigt werden, oder?
@Lundin Dies ist ein interessanter Punkt.Ich könnte sehen, dass EMI ein Problem ist, wenn die Stifte nicht extern gezogen werden, aber wie würde ESD gemindert, wenn die Stifte standardmäßig auf einen bestimmten Zugzustand eingestellt werden, der sich aus dem Zurücksetzen ergibt?Sind die Eingangs-Pin-Dioden nicht ausreichend?
@TRISAbits Auf modernen MCUs sollten die Dioden hoffentlich in Ordnung sein ... vielleicht.Es gibt oft keine öffentliche Spezifikation für sie.Es ist daher empfehlenswert, eine Art Widerstand zwischen dem Stift und den Anschlüssen / Tasten / Dingen zu haben, an denen Menschen stoßen könnten.
Fünf antworten:
#1
+10
Mr. Snrub
2019-03-19 10:54:17 UTC
view on stackexchange narkive permalink

Weil es eine gute Praxis ist, Logikstifte niemals rein schwebend zu lassen.
Kurze TI-Übersicht
Detaillierte TI-Übersicht
Amüsante dramatisierte Kriegsgeschichte eines realen Beispiels

Ich stimme vollkommen zu.Schwimmende Stifte sind in der Tat eine schlechte Sache für den Stromverbrauch.Jede gut erzogene Firmware sollte jedoch alle nicht verwendeten Pins in einen bekannten Zustand versetzen, damit der Stromausfall nur bei einem Reset auftritt (und dieser Verlust kann durch Platzieren externer Zugvorgänge beseitigt werden).Ist die Idee also, dass die FW durch das Zuweisen eines Standardzustands zu einem Pin (Pull-Up / Down) weniger Massagen benötigt, um niedrigere Leistungszahlen zu erhalten?
Ich denke, Sie haben hier den Kern der Sache auf den Punkt gebracht.Wenn sich die Firmware gut verhält und / oder der Hardware-Designer den gesunden Menschenverstand hatte, geeignete Pull-Ups oder Pull-Downs anzuwenden, wäre diese Art der Initialisierung absolut nicht erforderlich.Und ich denke, deshalb tun dies nicht alle Chipdesigner.Es ist alles eine Frage der Philosophie - möchten Sie davon ausgehen, dass Ihre Benutzer klug genug sind, um das Richtige zu tun, oder möchten Sie sie schützen, wenn sie dies nicht tun?Es könnte so oder so argumentiert werden ...
Bei bestimmten MCUs ist die digitale Eingangspufferlogik deaktiviert, wenn sie zurückgesetzt werden (z. B. PIC12 / 16/18). Dies soll vermutlich Leckagen verhindern, die durch Durchschießen verursacht werden.Wenn ja, wäre dies eine Alternative zum Erzwingen von Stiften in einem bestimmten bekannten Zustand.
Übrigens, Sie haben Leckströme erwähnt, aber wie in der "amüsanten dramatisierten Kriegsgeschichte" dargestellt, wären Oszillationen meine größere Sorge.Leckströme verschwinden, sobald die FW den Pin in einen guten Zustand versetzt. Wenn jedoch ein schwebender Pin schwingt, besteht die Gefahr, dass die Logik in einen ungültigen Zustand übergeht.
Sie wollen damit sagen: Schwingungen am Eingang * während * die MCU zurückgesetzt wird, die verhindern, dass die MCU den Reset ordnungsgemäß beendet?
Ich möchte wirklich sagen, dass eine Oszillation an einem Eingangspin zu jeder Zeit, ob beim Zurücksetzen oder nicht, wahrscheinlich eine schlechte Nachricht ist.Ja, wenn die Schwingung während des Rücksetzvorgangs aufgetreten ist, wäre ich ernsthaft besorgt, dass der Rücksetzvorgang die Dinge möglicherweise nicht vollständig auf einen bekannten guten Zustand initialisiert.
#2
+6
jpa
2019-03-19 18:32:05 UTC
view on stackexchange narkive permalink

Andere Antworten haben allgemeine Gründe angegeben, warum ein Chiphersteller möglicherweise die Wahl trifft, standardmäßig Pull-ups zu aktivieren. Im speziellen Fall von LPC845 gibt es jedoch einen weiteren Grund: Es verfügt über einen speziellen FAst-Initialisierungsspeicher (FAIM), mit dem der Status unmittelbar nach dem Zurücksetzen festgelegt werden kann:

Der FAIM-Inhalt bietet eine vom Benutzer programmierbare Erstkonfiguration für Aspekte des Mikrocontroller, der unmittelbar nach dem Zurücksetzen wirksam wird, bevor der Code ausgeführt wird. Zum Beispielsweise werden die Standard-E / A-Pads normalerweise nicht mit den internen Klimmzügen zurückgesetzt aktiviert. In einigen Systemen kann dies dazu führen, dass überschüssiger Strom fließt, bis die Software dies kann Konfigurieren Sie die Pads neu. Durch geeignete Programmierung des FAIM wird jedoch jedes Pad zurückgesetzt Konfiguration kann angepasst werden.

( LPC84x-Benutzerhandbuch, Abschnitt 4.2)

Daher haben sie die Standardeinstellung "sicher" (aus Sicht des Stromverbrauchs und der EMI) gewählt, während fortgeschrittenere Benutzer die Einstellung anpassen können.

Der Nachteil des FAIM besteht darin, dass ein zusätzlicher Programmierschritt erforderlich ist, um es im Voraus einzurichten. Dies bedeutet, dass Ihr Design den falschen Pull-Status überstehen sollte, bis das FAIM aktualisiert wird.Alternativ können Sie einen stärkeren externen Zug installieren, um das interne Standard-Setup zu übersteuern. Sie haben jetzt jedoch einen dauerhaften Stromausfall durch den externen Zug eingeführt.Ich denke, du kannst deinen Kuchen nicht haben und ihn auch essen.
@TRISAbits Ja.Aber selbst wenn es tristiert wäre, müssten Sie das externe Pulldown an wichtigen Stiften durchführen, und wenn es in den Standardzustand versetzt wird, ist der durchschnittliche Verlust nicht so groß.
Der Punkt, den ich (schlecht) gemacht habe, ist, dass der externe Zug stärker sein muss als sonst erforderlich, um den internen Zug zu übersteuern.Wenn die Stifte dreifach angegeben wären, könnte der Zug schwächer sein, was zu einem geringeren Leistungsverlust durch den externen Zug führen würde.
#3
+4
Justme
2019-03-19 11:39:08 UTC
view on stackexchange narkive permalink

Früher gab es Intel 8051-Mikrocontroller, die nur Open-Drain-E / A-Pins hatten. Daher brauchten Sie die meiste Zeit ohnehin externe Klimmzüge, um nützliche Dinge wie das Anschließen an Drucktasten oder das Steuern der CMOS-Eingänge anderer Chips zu erledigen.Dies ist höchstwahrscheinlich eine einfache Neugestaltung solcher Platinen mit einem modernen Mikrocontroller oder von Personen aus dieser Zeit, die es gewohnt sind, mit hochgezogenen Open-Collector-E / A zu entwerfen.Früher brauchten Sie meistens Klimmzüge, wenn überhaupt, und selten Klimmzüge.

Das ist eine wirklich interessante Erkenntnis und erklärt, warum viele Logikchips Aktiv-Niedrig-Ausgangs-Aktivierungs-Pins haben.Die Aktiv-Hoch-Logik greift nicht so gut ineinander, wenn der Standard-Pull-Status hoch ist.Abgesehen davon greift es auch nicht gut ineinander, wenn es direkt mit dem Gate eines NMOS verbunden ist, es sei denn, Sie möchten, dass der Transistor standardmäßig eingeschaltet wird.
Auch andere Chips dieser Ära haben aktive Signale, wenn sie niedrig sind.TTL-Chips (zum Beispiel die Serien 74XX und 74LSXX) können stärker nach unten ziehen als nach oben.Daher ist eine schnell fallende Flanke schärfer und definierter als eine langsam exponentiell ansteigende Flanke.Auch kleine Ströme fließen in und aus Chip-Eingängen, da sie nicht so hochohmig sind.Daher sind manchmal Klimmzüge erforderlich, und Klimmzüge können schwächer sein als Klimmzüge. Deshalb haben Sie eine aktive Low-Logik mit Klimmzügen, bei der Drucktasten die Ein- und Ausgänge erden und LEDs einschalten, indem Sie die LED über einen Widerstand erden.
#4
+3
Ale..chenski
2019-03-19 10:55:34 UTC
view on stackexchange narkive permalink

Das Belassen von GPIO-Pins als dreifach angegebene Eingänge hat viele unerwünschte Auswirkungen:

  1. Da der Herstellungsprozess eine gewisse Varianz aufweist und viele andere Schaltkreise an GPIO angeschlossen sind (als Ausgangspuffer und ESD-Schutz), ist die Richtung der resultierenden parasitären Leckage nicht vorhersehbar, sodass der Zustand entweder logisch hoch oder niedrig sein kann.

  2. Auch hier kann aufgrund von Prozessschwankungen und Temperaturabhängigkeit die Pin-Leckage sehr gering sein, was entweder zu einer sehr langsamen Änderung des Logikzustands nach beispielsweise einigen Minuten führt, was eine Herausforderung sein kann, die im Code berücksichtigt werden muss. oder es kann in unvorhersehbare Richtung driften.

  3. Wenn Sie die Pins schweben lassen, kann dies zu einem mittleren Potential führen, bei dem der Pin-Eingangspuffer als linearer Verstärker mit erheblicher Verstärkung fungieren kann, der entweder Selbstoszillationen (aufgrund parasitärer positiver Rückkopplung über Stromschienen) verursacht oder anfällig ist zu externen elektromagnetischen Störungen. Schwingungen können irgendwo intern auftreten und zu einem Stromverbrauch außerhalb des Bereichs führen.

  4. ol>

    4 ... muss noch etwas vergessen ... Einschalttransienten?

#5
+3
awjlogan
2019-03-19 16:11:44 UTC
view on stackexchange narkive permalink

Aus Systemsicht ist es von Vorteil, wenn die Pins in einem definierten Zustand starten.Beispielsweise könnte ein Motor angeschlossen sein, der nicht ohne Befehl aktiviert werden sollte.Peripheriegeräte erwarten normalerweise, dass sich ihre Schnittstellen in einem bestimmten Zustand befinden, und das Starten in High-Z liefert möglicherweise nicht den erforderlichen Zustand.Da die internen Pull-Ups / Downs in einem typischen Mikrocontroller relativ schwach sind, können sie bei Bedarf durch ein stärkeres externes Pull-Up / Down außer Kraft gesetzt werden.Als zusätzliche Anmerkung ist es schön, im Datenblatt zu sehen, wie das erwartete Verhalten der Stifte ist, dies ist manchmal nicht enthalten ..!

Das Problem beim Bereitstellen eines externen Pull-Ups, wenn ein internes aktiviert ist, ist zweierlei: [1] Der externe Pull-up muss die richtige Größe haben, um * weitaus * stärker zu sein (gute Faustregel ist mindestens 10x).Andernfalls erstellen Sie einen Spannungsteiler, mit dem die Spannung in dieser mittleren Niemandslandzone eingestellt werden kann.[2] Der stärkere externe Zug führt zu einem kontinuierlichen Leistungsverlust (wenn der Stiftzustand häufig der Zugrichtung entgegengesetzt ist), der schnell mehr Strom verbraucht als Verluste, wenn dreifach festgelegte Stifte nicht zurückgesetzt werden.
@TRISAbits Einverstanden in beiden Punkten.Nicht so wünschenswert zu überschreiben, aber die meisten Interna sind 50-100K, also nicht katastrophal.Lesen Sie das Handbuch wie immer :)
@TRISAbits In diesem Beispiel geht es auch nicht um die Stromversorgung, sondern darum, wie das breitere System beim Zurücksetzen interagiert, nicht nur die MCU.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...