Empfehlung für Standardeinstellungen für nicht verwendete Pins an einem STM32 (ARM Cortex M3) - Pull-Up / Pull-Down?


13

Derzeit verwenden wir verschiedene Varianten der STM32-Mikrocontroller-Familie. Ich möchte folgendes wissen:

1) Was sind die empfohlenen Standardeinstellungen für Pins der Mikrocontroller im Allgemeinen, wenn Sie die Option haben, beide Pullups oder Pulldowns auszuwählen? Was sind die Vor- und Nachteile des einen oder anderen? (Angenommen, Sie richten sie standardmäßig als Eingaben ein.)

2) Insbesondere möchte ich wissen, was mit nicht verwendeten Pins für die STM32-Mikrocontrollerfamilie zu tun ist. Mir ist klar, dass wir die Stifte nicht schweben lassen sollten (das ist alles, was das Datenblatt sagt :(), aber sollte ich sie so einstellen, dass sie mit Pull-Ups oder Eingaben mit Pull-Downs eingegeben werden? Insbesondere möchte ich Wenn Sie eine Einstellung wählen, die am wenigsten gegen elektrostatische Entladungen anfällig ist und wenn möglich auch am wenigsten Strom verbraucht.

3) Sollten wir uns bei kritischen Pins auf die Firmware verlassen, um die Pins korrekt auf den richtigen Standardzustand einzustellen, oder sollte diese Verantwortung bei der externen Hardware liegen (Anschließen externer Pull-ups oder Pull-downs)? Wenn die für die externen Widerstände gewählten Werte größer als die internen Pullups oder Pulldowns sind, spielt die Einstellung in der Firmware keine Rolle.

Der Vorteil, den ich für das oben Genannte sehen kann, ist, dass wir uns nicht auf die Firmware verlassen, um den Pin richtig einzurichten, wenn das Mikro aus irgendeinem Grund nicht richtig initialisiert wird (fehlerhafte Hardware oder ähnliches).

Der Nachteil, den ich sehe, ist, dass es mehr kostet, dies als Hardware zu tun.

Jedes Licht, das Sie auf dem oben genannten vergießen können, wird wirklich geschätzt.

Vielen Dank..


Warum nicht verwendete Pins nicht als Ausgänge festlegen? Das würde das Problem Pull-Up vs. Pull-Down beseitigen.
Connor Wolf

Hinweis: "Bei einem Reset-Ereignis sind alle GPIOs potentialfreie Eingänge. Dies verhindert, dass GPIOs im Notfall versehentlich beschädigt werden." embedded-lab.com/blog/stm32-gpio-ports-insights
cp.engr

Antworten:


10

Diese Antwort ist nicht STM32-spezifisch, sondern basiert auf Erfahrungen und vielen solchen Diskussionen über viele (viele) Jahre. Andere können das hinzufügen - es deckt die Hauptpunkte ab (glaube ich), ist aber möglicherweise nicht vollständig.

Es ist ermutigend, jemanden zu sehen, der diese einfachen, aber grundlegenden Fragen stellt und ein Bewusstsein dafür zeigt, wie solche "kleinen Dinge" im wirklichen Leben zu einer "Gang Aglae" werden können.

dh "Wenn das Mikro nicht richtig initialisiert wird ..." lautet wirklich "... wenn das Mikro nicht richtig initialisiert wird ..." :-) - und es ist offensichtlich, dass Sie dies erkennen.

So:

  • Die Verwendung von externem Pullup oder Pulldown ist wichtig für diejenigen, die wirklich ein genau definiertes Ergebnis erzielen möchten. Dies ist das größte Muss. Der Rest ist ein Bonus. dh das Setzen auf Eingänge mit internem pullxxx ist ein Kompromiss, der fast immer funktionieren wird.
    ABER wenn "fast immer" nicht gut genug für Ihr Design ist, brauchen Sie externe Pull-xxxs.

  • Pullup oder Down scheint kein überwältigend besseres Ergebnis zu haben. Es kann zwischen den ICs variieren, die anhand des Datenblattes bestimmt werden können. Alle Dinge sind gleich (wie sie auch sein mögen). Ich würde Pulldown bevorzugen, da die Gefahr besteht, dass externe Ströme nicht so stark an das Gerät abgegeben werden - dies ist jedoch in einer konform beschichteten Leiterplatte und / oder in einer harmlosen Umgebung wahrscheinlich minimal.

  • Vielleicht möchten Sie sich die Startaktion ansehen, wenn Sie sich wirklich dafür interessieren. zB ein hochgezogener Stift beginnt irgendwann niedrig und geht hoch. Ein heruntergezogener Stift bleibt wahrscheinlich durchgehend niedrig. Dies ist wahrscheinlich nicht wichtig, wird jedoch der Vollständigkeit halber erwähnt.

  • Die ESD-Anfälligkeit ist gerätespezifisch, sehr wahrscheinlich symmetrisch und wird im Durchschnitt gegenüber vielen Prozessoren wahrscheinlich herabgesetzt, da die Treiber tendenziell besser als die Quelle sinken, wenn sie asymmetrisch sind. Wenn Sie sich sehr für ESD interessieren, möchten Sie möglicherweise niedrige Ausgänge mit Pulldowns verwenden, da ein Pfad mit niedriger Impedanz (wahrscheinlich) einen besseren ESD-Schutz bietet. Wenn Sie sich jedoch sehr für ESD interessieren, sollten Sie es auf andere Weise entwickeln und sich nicht auf den In-IC-Schutz als Hauptschutz verlassen.

  • Zu Frage 3 - Externe Pullxxxs sind wünschenswert, aber es scheint sicher zu sein, Werte zu verwenden, die am oberen Rand des ordnungsgemäßen Designs liegen, und dann, falls gewünscht, interne xxxs parallel zu verwenden. Da interne Pull-xxxs jedoch häufig einen 2: 1-Refekt haben, können Sie das größte R und den kleinsten Strom nur durch Verwendung von externem Strom erhalten. Was Sie natürlich vermeiden möchten, sind externe Klimmzüge und interne Klimmzüge oder umgekehrt - aber das ist wahrscheinlich kein Problem.

  • Wenn ich sage "... das High-End des richtigen Designs einschränken ...", meine ich genau das und nicht "das Limit überschreiten ...". Das heißt, der Stift hat einen festgelegten Widerstandswert, der es ermöglicht, dass die Vin-Spezifikation im ungünstigsten Fall erfüllt wird. Ein größerer Widerstand nimmt möglicherweise weniger Strom im Widerstand auf, beginnt jedoch möglicherweise, den internen Schalter geringfügig einzuschalten. dh es kann sein, dass es einen Kompromiss zwischen Rpulldown_current und dem niedrigsten Gesamtstrom gibt, wenn der interne Treiber beginnt, einen Leckstrom (der extrem klein sein wird) zu sehen, der den Strom zum Dirver erhöht und ihn sehr leicht anflüstert.

  • Wenn Sie z. B. Pulldown verwenden, ist die Leistung möglicherweise geringer, wenn Sie den Pin auf Ausgang setzen und auf LOW fahren. Diese Option kann jedoch zu gegebener Zeit festgelegt werden.

  • Fast beiseite - NIEMALS zulassen, dass Schutzdioden während des Betriebs mit "erheblichen Strömen" umgehen. Wenn Sie dies zulassen, kann dies zu völlig unerklärlichen Prozessoraktionen führen. Je geringer die Strömung ist, desto geringer ist die Wahrscheinlichkeit, dass etwas schief geht - und desto schwieriger ist es, es zu finden, wenn sie es tun.


1
Sehr aufschlussreiche Antwort. Vielen Dank. Können Sie noch etwas genauer darauf eingehen: "Wenn Sie viel Wert auf ESD legen, möchten Sie möglicherweise niedrige Ausgänge mit Pulldowns verwenden, da ein Pfad mit niedriger Impedanz (wahrscheinlich) einen besseren ESD-Schutz bietet." Wenn Sie einen Ausgang einstellen - würden Sie standardmäßig Drain öffnen oder Pull drücken (hoch / niedrig)?
IntelliChick

2

Wofür optimieren Sie? Die Kostenoptimierung schreibt vor, dass Sie nicht verwendete Pins für die Ausgänge festlegen. Die Zuverlässigkeitsoptimierung schreibt vor, dass alle Pin-Ebenen definiert werden, auch in der kurzen Zeit, bevor die Firmware die Möglichkeit hat, nicht verwendete Pins auf das zu setzen, was sie für angemessen hält.

Ich musste einmal die Zuverlässigkeitsberechnungen einer Prozessorkarte überprüfen. Es war gut gestaltet, mit überall verteilten Entkopplungskappen und Pull-to-Any-Widerständen an allen E / A-Pins. Der Zuverlässigkeitsingenieur nahm sein Handbuch heraus, fügte die Ausfallraten aller beteiligten Komponenten hinzu und ergab eine Zahl, die von den Ausfallraten der passiven Komponenten dominiert wurde. Diese Zahl war höher als die Anforderung, sodass wir ein Problem hatten. Entfernen Sie diese Widerstände, und die Abbildung wäre OK. Aber bei diesem Vorschlag begannen die Elektrotechniker, wütend zu schreien (zu Recht, IMO). Ich kann mich nicht erinnern, wie die Geschichte endete. Ich glaube, wir sind zum Kunden gegangen und haben um eine Erstattung gebeten, weil wir die Ausfallraten der Widerstände aus der Berechnung herausgenommen haben, weil sie keinen nennenswerten Strom führten.


1

Ich konfiguriere nur unbenutzte Pins als Ausgänge und setze sie auf low.


Würden Sie sie normalerweise auf Push-Pull oder Open Drain einstellen? Und würden Sie sie in beiden Fällen auf niedrig setzen? Können Sie mir sagen, warum Sie sich für einen anderen entscheiden würden?
IntelliChick

@Leon Heller - das erfüllt den Test "Funktioniert normalerweise", scheitert jedoch, wenn der Mikroprozessor nicht ordnungsgemäß initialisiert wird oder wenn Murphy, wie er es gelegentlich tut, ein wenig zufällig kippt , funktioniert.
Russell McMahon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.