Überlegungen zur Verwendung interner Pull-Up/Down-Widerstände

Ich arbeite mit STM32-Mikrocontrollern. Diese Mikrocontroller haben die Möglichkeit, den Eingangspin als Pull-Up oder Pull-Down einzustellen:

Geben Sie hier die Bildbeschreibung ein

Früher habe ich bei Bedarf externe Pull-Up- oder Pull-Down-Widerstände gegeben, aber jetzt frage ich mich, ob ich auf externe Komponenten verzichten und die Pull-Down-Funktion des Mikrocontrollers selbst nutzen kann.

Wird das eine gute Sache sein?

Gibt es einen Anwendungsfall, bei dem ich besonders vorsichtig sein oder diese Funktion überhaupt nicht verwenden sollte?

Ich benutze das interne pu/pd wann immer ich kann und hatte bisher keine Probleme. Wenn Sie also keinen triftigen Grund haben , die eingebauten Pull-Ups/Downs nicht zu verwenden, können Sie sie einfach verwenden. Ein Grund, sich nicht auf den internen pu/pd zu verlassen, könnte sein, dass an den Eingang ein langes Kabel angeschlossen ist, das mit anderen Leitungen koppeln und unerwartetes Verhalten verursachen könnte. Der interne pu/pd ist ziemlich schwach (um Strom zu sparen) und wird leichter gestört als beispielsweise ein 10-kOhm-Widerstand.
@Fake - Danke. Sieht so aus, als könnte ich es bedenkenlos verwenden. Mein Eingang ist optoisoliert.
Eine kleine Anmerkung: Es funktioniert möglicherweise nicht als Pullup, während der Mikrocontroller zurückgesetzt wird. Wenn also externe Schaltkreise davon abhängig sind, dass sie ständig heruntergezogen werden, haben Sie möglicherweise ein Problem beim Start. Wenn es nur vom Mikro gelesen wird, ist das kein Problem.
@ pjc50 Sie hätten das als Antwort posten sollen, ich habe Ihren Kommentar erst bemerkt, nachdem ich meine Antwort gepostet hatte.
Wenn Sie dem Pull-up-Widerstand in einem Mikrocontroller nicht vertrauen können, können Sie diesem Controller nichts vertrauen. Was Sie wissen möchten, ist, ob es jedoch nützlich ist
@ Passant - Ja, du hast Recht. Falsche Wortwahl meinerseits.
@Whiskeyjack: Sie sollten in Betracht ziehen, den Titel der Fragen zu ändern. Vielleicht "Überlegungen bei der Verwendung interner Pull-Up/Down-Widerstände" oder so ähnlich.
@rev - Ja, das ist ein viel besserer Titel, den Sie vorgeschlagen haben. Vielen Dank.

Antworten (5)

Ja ... Sie können ... Es ist eine bewährte Funktion. Wenn Sie die Pin-Struktur im STM32-Referenzhandbuch sehen, können Sie sehen, dass es erforderliche Komponenten hat --

STM32 Pin-Struktur

Wenn dies Ihren Anforderungen entspricht, können Sie auf externe Komponenten verzichten.

Bearbeiten Denken Sie daran, dass Pins beim Einschalten tristated sind. Wenn es Ihre Bewerbung nicht behindert, ist es gut! Aus diesem Grund empfiehlt es sich, zuerst den IO-Bereich zu initialisieren und dann mit anderen Peripheriegeräten fortzufahren.

Richtig, aber während des Zurücksetzens ist es immer noch tristated, oder?
Ich antwortete auf die Frage "Sollte ich der Pulldown-Funktion des Mikrocontrollers vertrauen?" und jetzt hat sich die Frage selbst geändert :-/ Und mit der neuen Frage ist Bence Kaulics Antwort genauer!
Frage: Führt die Verwendung einer Reihe interner Pullup- / Down-Widerstände dazu, dass sich der Chip erwärmt?

Im Allgemeinen ist es völlig in Ordnung, die internen Pull-up- oder Pull-down-Widerstände zu verwenden.

Der Nachteil ist, dass Sie vergessen können, es von der Software aus zu aktivieren, was ein wenig Kopfschmerzen verursachen kann. Die externen Klimmzüge werden immer da sein. Vergessen Sie also nicht, die internen zu aktivieren und viel PCB-Fläche zu sparen, indem Sie die Anzahl der Komponenten reduzieren.

Die internen Pull-up- und Pull-down-Widerstände des STM32 haben normalerweise einen Wert dazwischen 30   k Ω und 50   k Ω .

Geben Sie hier die Bildbeschreibung ein

Sie sollten immer prüfen, ob Ihre Anwendung einen bestimmten Pull-up- oder Pull-down-Widerstandswert benötigt, bevor Sie die internen Widerstände verwenden. Verwenden Sie sie zum Beispiel nicht mit I 2 C , da diese Werte dafür zu hoch sind.

Sofern die Pullup- und Pulldown-Widerstände während des Zurücksetzens nicht aktiv sind (ich vermute, dass sie es nicht sind, aber ich kenne mich mit STM32-Geräten nicht aus), gibt es beim Zurücksetzen einen undefinierten Pin-Zustand. Dies ist einer der Hauptgründe für die Verwendung externer Pullup- oder Pulldown-Widerstände.

Wie andere gesagt haben, sind interne Klimmzüge und Pulldowns in Ordnung, solange:

  • Sie denken daran, sie zu konfigurieren,
  • Sie sind stark genug,
  • du bekämpfst sie nicht mit einem äußeren Zug, und
  • die Spannung beim Start und Reset ist unwichtig.

Denken Sie beim letzten Punkt daran, dass CMOS-Eingänge auf mittlerem Spannungspegel einen erheblichen Durchschussstrom auf ihrem Eingangspaar verursachen können. Dies kann in einem Niedrigleistungssystem während des Startvorgangs ein Problem verursachen.

Im Allgemeinen führen externe Pull-Widerstände zu einem konservativeren Design.

In Bezug auf Durchschussströme kann es hilfreich sein, die Dinge ins rechte Licht zu rücken, indem darauf hingewiesen wird, dass die Pegel bei den meisten Mikrocontrollern im Allgemeinen weit unter dem liegen, was ein Gerät beschädigen würde, aber sie können Größenordnungen über dem besten Wert eines Geräts liegen. Fall Schlafströme. In einigen Fällen spielen solche Ströme keine Rolle; in anderen sind sie ein absoluter Mörder.
+1 für "Die Spannung beim Start und Zurücksetzen ist unwichtig". Sie müssen sicherstellen, dass sich der Rest Ihrer Schaltung in einem sicheren und ruhigen Zustand befindet, während das Mikro hochfährt. Das ist schwieriger, als es aussieht, wenn man bedenkt, dass ein Reset oder schnelles Aus- und Wiedereinschalten den Rest Ihres Schaltkreises in einem unbestimmten Zustand hinterlassen oder ihn eingeschaltet und in Betrieb lassen kann, ohne dass das Mikro ihn im Auge behält.

Neben den anderen feinen Ausnahmen, die in allen Antworten aufgeführt sind, sind die internen Pull-up-Widerstände in vielen Fällen zu schwach für I²C .

Natürlich haben einige (viele?) Mikrocontroller Open-Drain-Pins speziell für I2C, die Sie konfigurieren können
Ich habe nichts als schwache Pull-Ups/Downs gesehen, @Thomas