Wir verwenden derzeit verschiedene Varianten der STM32-Mikrocontroller-Familie. Ich möchte folgendes wissen:
Was sind die empfohlenen Standardeinstellungen für Pins der Mikrocontroller im Allgemeinen, wenn Sie die Möglichkeit haben, sowohl Pull-Ups als auch Pull-Downs auszuwählen? Was sind die Vor- und Nachteile, mit dem einen oder anderen zu gehen? (Vorausgesetzt, Sie richten sie standardmäßig als Eingänge ein)
Insbesondere würde ich gerne wissen, was mit unbenutzten Pins für die STM32-Mikrocontroller-Familie zu tun ist. Es ist mir klar, dass wir die Pins nicht schwebend lassen sollten (was alles ist, was das Datenblatt sagt, :( ), aber sollte ich sie auf Eingabe mit Pull-Ups oder Eingaben mit Pull-Downs einstellen? Insbesondere möchte ich eine Einstellung zu wählen, die am wenigsten anfällig für ESD ist und möglichst auch am wenigsten Strom verbraucht.
Sollten wir uns bei kritischen Pins auf die Firmware verlassen, um die Pins korrekt auf den korrekten 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 Pull-Ups oder Pull-Downs sind, spielt die Einstellung in der Firmware keine Rolle.
Der Vorteil, den ich für das oben genannte tun kann, ist, dass wir uns nicht auf die Firmware verlassen, um den Pin korrekt einzurichten, wenn das Mikro aus irgendeinem Grund (fehlerhafte Hardware oder dergleichen) nicht richtig initialisiert wird.
Der Nachteil, den ich sehe, ist, dass es mehr kostet, dies zu tun, ist Hardware.
Jedes Licht, das Sie auf das Obige werfen können, wird wirklich geschätzt.
Vielen Dank..
Diese Antwort ist nicht STM32-spezifisch, sondern basiert auf Erfahrungen und vielen solchen Diskussionen über viele (viele) Jahre. Andere können dies ergänzen - 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 „banden“ können.
dh "Wenn das Mikro nicht richtig initialisiert ..." heißt eigentlich " ... wenn das Mikro nicht richtig initialisiert ..." :-) - und es ist offensichtlich, dass Sie das merken.
So:
Die Verwendung von externem Pullup oder Pulldown ist für diejenigen unerlässlich, die wirklich daran interessiert sind, ein gut definiertes Ergebnis zu erzielen. Dies ist das größte Muss hier. Alles andere ist ein Bonus. dh die Einstellung auf Eingänge mit internem Pullxxx ist ein Kompromiss, der fast immer funktioniert.
ABER wenn "fast immer" für Ihr Design nicht gut genug ist, brauchen Sie externe Pull-XXXs.
Pullup oder Down scheint kein überwältigend besseres Ergebnis zu haben. Sie kann zwischen ICs variieren, kann aber aus dem Datenblatt ermittelt werden. Wenn alle Dinge gleich sind (wie sie auch sein mögen), würde ich einen Pulldown bevorzugen, da möglicherweise geringere Leckströme zu externen Schaltkreisen des Geräts auftreten - dies ist jedoch bei einer konform beschichteten Leiterplatte und / oder einer harmlosen Umgebung wahrscheinlich minimal.
Vielleicht möchten Sie sich die Startaktion ansehen, wenn Sie sich wirklich dafür interessieren. zB wird ein hochgezogener Stift niedrig beginnen und irgendwann hoch gehen. Ein heruntergezogener Stift wird wahrscheinlich die ganze Zeit niedrig bleiben. Dies ist wahrscheinlich nicht wichtig, wird aber der Vollständigkeit halber erwähnt.
Die ESD-Empfindlichkeit ist gerätespezifisch, sehr wahrscheinlich symmetrisch und begünstigt im Durchschnitt über viele Prozessoren wahrscheinlich das Herunterziehen, da Treiber dazu neigen, besser als die Quelle zu 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 auf andere Weise dafür entwerfen 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 Ende des richtigen Designs liegen, und dann interne xxxs parallel zu verwenden, falls gewünscht. Da interne Pull-xxxs jedoch oft einen 2:1-Effektivwert haben, können Sie den größten R und den kleinsten Strom erhalten, indem Sie nur extern verwenden. 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 " ... limitierendes High-End des richtigen Designs ... " meine ich genau das und nicht "jenseits der Begrenzung ...". dh der Pin wird einen spezifizierten Widerstandswert haben, der es ermöglicht, dass die Vin-Spezifikation des ungünstigsten Falls erfüllt wird. Ein größerer Widerstand kann weniger Strom im Widerstand aufnehmen, kann jedoch beginnen, den internen Schalter sehr leicht einzuschalten. Das heißt, 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 Treiber erhöht und ihn sehr leicht weiterflüstert.
Wenn Sie z. B. Pulldown verwenden, finden Sie möglicherweise eine geringere Leistung, um den Pin auf Ausgang zu setzen und ihn niedrig zu treiben, aber dies ist eine Option, über die zu gegebener Zeit entschieden werden kann.
Fast nebenbei - lassen Sie NIEMALS zu, dass Schutzdioden während des Betriebs "signifikante Ströme" verarbeiten. Ihnen dies zu gestatten, kann zu völlig unerklärlichen Prozessoraktionen führen. Je geringer der Strom, desto geringer ist die Wahrscheinlichkeit, dass etwas schief geht – und desto schwieriger ist es, es zu finden, wenn es passiert.
Wofür optimieren Sie? Die Kostenoptimierung schreibt vor, dass Sie ungenutzte Pins auf Ausgänge setzen. Die Zuverlässigkeitsoptimierung schreibt vor, dass alle Pin-Ebenen definiert sind, selbst in der kurzen Zeit, bevor die Firmware die Möglichkeit hat, ungenutzte Pins auf das zu setzen, was sie für angemessen hält.
Ich musste einmal die Zuverlässigkeitsberechnungen einer Prozessorplatine überprüfen. Es war gut gestaltet, mit Entkopplungskappen überall und Pull-to-whatever-Widerständen an allen I / O-Pins. Der Zuverlässigkeitsingenieur zückte sein Handbuch, addierte die Ausfallraten aller beteiligten Komponenten und kam auf eine Zahl, die von den Ausfallraten der passiven Komponenten dominiert wurde. Diese Zahl war höher als die Anforderung, also hatten wir ein Problem. Entfernen Sie diese Widerstände, und die Figur wäre in Ordnung. Aber bei diesem Vorschlag fingen die Elektroingenieure an, vor Wut zu schreien (zu Recht, meiner Meinung nach). Ich erinnere mich nicht, wie die Geschichte endete; Ich glaube, wir sind zum Kunden gegangen und haben darum gebeten, die Ausfallraten der Widerstände aus der Berechnung wegzulassen, weil sie keinen nennenswerten Strom führten.
Ich konfiguriere einfach unbenutzte Pins als Ausgänge und setze sie niedrig.
Connor Wolf
vgl.engr