Ist ein Pull-Up/Down-Widerstand wirklich notwendig?

Das logische Lesen (1 oder 0) eines Mikrocontroller-Eingangs-GPIO-Pins kann floaten, wenn es weder mit VCC noch mit GND verbunden ist; jemand sagte, es sei wegen der umgebenden HF-Störungen.

Wenn eine Floating-GPIO-Eingangspin-Spannung durch HF-Störungen beeinflusst wird, die dazu führen, dass sie in den undefinierten logischen Bereich fällt (dh 0,8 V - 2,2 V für Raspberry Pi), kann dies dazu führen, dass sich der logische Wert eines Floating-Pins ändert.

Ich frage mich, ob dieses Problem durch das Design eines Mikrocontrollers gelöst werden könnte. dh Vergrößern Sie den logischen Spannungsbereich, sagen wir <6 V für Low > 6 V für High. Da Störungen selten eine so hohe Pegelspannung erreichen können.

Unabhängig von der Schaltschwelle ist ein Pullup oder Pulldown oder etwas Ähnliches erforderlich, wenn kein Treiber am Eingang vorhanden ist, um ihn auf einen bekannten und gültigen Pegel zu zwingen. Wenn HF-Rauschen ein Problem darstellt, ist im Allgemeinen ein Kondensator eine bessere Lösung als ein Pullup oder Pulldown. Aber der Pullup/Pulldown kann dennoch erforderlich sein, um sicherzustellen, dass sich der Eingang im richtigen Zustand befindet.
Sie verbinden also eine Seite eines Schalters mit 12 V und die andere Seite mit dem Eingangspin. Sie drücken den Schalter und jetzt sieht der Eingangsstift 12 V und liest hoch. Sie lassen den Schalter los und der Eingangsstift sieht immer noch 12 V, weil es ein Kondensator ist. Es liest sich also immer noch hoch. Dann was?
Es ist nicht unbedingt eine HF-Störung, die dies verursacht, das ist mir neu. Der Versuch, MCU-Designs als Ergebnis zu reparieren, ist also nicht der richtige Weg. Sie lösen dies mit Widerständen, was teilweise der Grund dafür ist, dass sie manchmal im GPIO-Pad enthalten sind.
"... dann verursacht es Floats beim logischen Lesen. Ich frage mich, ob dieses Problem gelöst werden könnte ..." - es ist kein Problem für das logische Lesen. Wenn der Eingang schwebend ist, ist sein Zustand undefiniert, was richtig ist , und die Software sollte den Logikpegel ignorieren - genau wie bei undefinierten Bits in internen Registern. Dies kann zu einer erhöhten Stromaufnahme oder Interferenz durch EMI-Injektion führen, dies sind jedoch keine logischen Probleme.
Ist das nicht der Sinn eines Schmitt-Triggers? Aber auch, wie alle sagten, ist Ihre Eingabe undefiniert ... Das ist also kein Problem mit dem Chip, sondern eher mit Ihrer Schaltung.
HF-Störung? Manchmal kann einfach eine Handbewegung über eine MCU mit einem schwebenden E/A-Eingang ihren logischen Zustand umschalten. Dazu ist nur eine sehr geringe statische Aufladung erforderlich.

Antworten (6)

tl; dr Erhöhen des IO-Rail-Swings hat Nachteile und hilft auch nicht, da statische Ladung immer noch zu beiden Rails schwingen kann.

Zunächst einmal gibt es unzählige praktische Gründe, warum wir die I/O-Spannung nicht einfach erhöhen. Es ist nicht so einfach, dass jemand 3,3 V auf einem Blatt Papier durchstreicht und stattdessen 12 V schreibt. Moderne CMOS-Prozesse für Prozessoren sind darauf ausgelegt, dünne Gate-Oxide für schnelle Niederspannungsgeräte zu erzeugen. Die zum Aufwachsen eines dicken Gate-Oxids erforderlichen Verarbeitungsschritte wären sowohl kostspielig als auch beeinträchtigen die Leistung und Ausbeute. Das Schöne an vielen billigen ICs ist, dass sie einen einfachen Prozess haben - bei einem 3v3-Chip können alle Gate-Oxide so gewachsen sein, dass sie einem Sicherheitsfaktor von 3,3 V standhalten. Sie haben jetzt mehrere neue Masken eingeführt (plus Fotoresist- und Ätzschritte), die den Preis des Chips vielleicht verdoppeln oder verdreifachen.

Ebenso wäre die Verlustleistung für Hochgeschwindigkeitsschaltkreise ein Problem. Insbesondere bei schnellen Signalen implizieren hohe Spannungsschwankungen aufgrund von Kapazitäten und Reihenimpedanzen eine hohe Verlustleistung (in der Größenordnung des Quadrats der Spannung). Wenn Sie außerdem Ihren Kern bei 3,3 V halten müssen, um innerhalb eines Leistungs-/Wärmebudgets zu bleiben, müssen Sie eine Pegelverschiebung hinzufügen, die selbst zusätzliche Wärme erzeugt, zusätzlichen Strom verbraucht und dazu führt, dass den Benutzern zusätzliche Kosten entstehen.

Ihre Schwellenwerte sind auch ziemlich willkürlich - ein scharfer Schwellenwert von 6 V erfordert einen Spannungskomparator, der bei bestimmten Rückkopplungsstrukturen, die sehr gut an einem Floating-Pin auftreten können, zu eigenen Instabilitätsproblemen führt. Für einen vernünftigen E/A-Puffer wird die Schwelle die Gate-Schwellenspannungen der Transistoren im Puffer widerspiegeln, was auf unsere Fertigungsbeschränkungen zurückzuführen ist. Sie stoßen auf die gleichen Durchschussprobleme, aber sie sind jetzt schlimmer, da der Bereich, in dem beide FETs eingeschaltet sind, dank der höheren Schienen breiter ist und die Versorgungsspannung höher ist, was zu noch mehr Verlustleistung führt. Sie haben das Problem eher verschlimmert als verbessert.

Nun, mit all dem gesagt, einfach das Erhöhen der E/A-Schwellenwerte wird das Problem der Floating-Signale nicht lösen. Angesichts des erstaunlich hohen Widerstands des Gate-Oxids kann ein Floating-Pin leicht 6 V erreichen - insbesondere angesichts der Tatsache, dass sich in der Nähe eine > 6-V-Schiene befindet!

Wenn all dies gesagt und getan ist, haben wir die Chipproduktion um ein Jahr verzögert, während wir Herstellungsprozesse entwickeln und Verträge zur Herstellung von Mischspannungssystemen mit sowohl Hochleistungskernen bei 1v2- als auch 12V-I/Os abschließen. Wir haben unser Energiebudget erhöht, was bedeutet, dass wir teurere Kühlkörper und Lüfter sowie größere Batterien und Netzteile kaufen müssen, und wir haben das Problem auch nicht zuverlässig behoben.

Oder Sie könnten ein Band/eine Rolle mit 10000 Pullup-/Pulldown-Widerständen für 10 US-Dollar bei DigiKey oder für weniger in Shenzhen kaufen. Höchstwahrscheinlich hat Ihr PCB-Fertigungspartner bereits einen Standard-Pullup-/Pulldown-Widerstand zur Hand, der in seine Bestückungsmaschinen geladen und bereit zum Platzieren ist. Oder Ihr Chip enthält möglicherweise bereits Pullups/Pulldowns, da diese bei einigen Prozessen mit schwachen MOSFETs ziemlich einfach hergestellt werden können.

Hey danke Monica, ich bin ganz neu bei EE. Ich verstehe nicht, was "Angesichts des erstaunlich hohen Widerstands des Gateoxids kann ein schwebender Stift leicht 6 V erreichen" bedeutet. Inzwischen sehe ich, dass es so viele Nachteile gibt, wenn man die Schwellenspannung erhöht, und wir wollen das nicht wirklich in die Realität umsetzen. Scheint jedoch, dass eine Erhöhung der Schwellenspannung die Umgebungsfaktoren wirklich vermeiden kann, die dazu führen, dass das logische Lesen hoch wird, oder? Je höher die Schwellenspannung, desto schwieriger ist es für den Umgebungsfaktor, den Eingangspin auf logisch hoch zu bringen?
@mannok Das ist nicht richtig. Ein Pin kann im Schwebezustand auf jeder beliebigen Spannung liegen - Masse ist per Konvention einfach die Schiene mit der niedrigsten Spannung . Ein schwebender Pin kann genauso gut logisch hoch wie logisch niedrig lesen, oder er kann eine unglückliche Spannung zwischen den Schienen haben. An der Bodenschiene an sich ist nichts Magisches. Nichts besagt, dass die Streuladung an diesem Pin dazu führen muss, dass die Pin-Spannung näher an der VSS-Schiene liegt als an der VDD-Schiene.
Um fair zu sein, hätte das OP die gleiche Frage mit einem vernünftigeren Strohmann stellen können (z. B. "Warum enthält der Chip selbst keinen Pull-Up / Down-Widerstand, wenn immer einer benötigt wird, da das Einsetzen des Chips wahrscheinlich billiger ist als das Einsetzen es ist eine separate diskrete Komponente"). Abgesehen von "es ist nicht der Standard" bin ich mir nicht sicher, ob ich die Antwort darauf kenne.

Es wurde bereits gelöst. Einige Mikrocontroller haben eingebaute Pull-up- und/oder Pull-down-Widerstände, die per Software aktiviert werden können. Diese sind jedoch nicht aktiv, wenn der Mikrocontroller keine Firmware hat. Aus Sicherheitsgründen möchten Sie möglicherweise dennoch externe Widerstände haben, um den stabilen Zustand während des Einschaltens, Zurücksetzens oder Firmware-Downloads aufrechtzuerhalten.

Der logische Messwert (1 oder 0) eines Mikrocontrollers kann am Eingangs-GPIO-Pin schweben, wenn er weder mit VCC noch mit GND verbunden ist. Jemand sagte, dies liege an umgebenden HF-Störungen.

Ja, und statische Aufladung.

Wenn die durch HF-Störungen beeinträchtigte Spannung dazu führt, dass die Spannung des GPIO-Eingangspins in einen undefinierten logischen Bereich fällt (z. B. 0,8 V - 2,2 V für Raspberry PI), führt dies zu Floats beim logischen Lesen.

Ja, und das kann intern zu Problemen führen. In den Eingangsstufen von Abbildung 1 unten können die undefinierten logischen Zustände dazu führen, dass sowohl der obere als auch der untere Transistor gleichzeitig eingeschaltet werden. (Bei richtigen Logikpegeln ist jeweils nur einer eingeschaltet.) Das Ergebnis ist ein Zustand, der als "Durchschuss" bezeichnet wird, und ein hoher (für das Gerät) Strom fließt durch das Gerät. Dies ist in Abbildung 2 grafisch dargestellt. Dies führt zu einer Überhitzung der Gates.

Geben Sie hier die Bildbeschreibung ein

Abbildungen 1 und 2 aus dem Application Report Implications of Slow or Floating CMOS Inputs von TI .

Der Artikel erklärt weiter:

Sowohl CMOS- als auch BiCMOS-Familien haben eine CMOS-Eingangsstruktur. Diese Struktur ist ein Inverter, der aus einem p-Kanal zu V CC und einem n-Kanal zu GND besteht, wie in Abbildung 1 gezeigt. Bei einem Eingang mit niedrigem Pegel ist der P-Kanal-Transistor eingeschaltet und der N-Kanal ausgeschaltet, was Strom verursacht von VCC zu fließen und den Knoten auf einen hohen Zustand zu ziehen. Bei einem High-Level-Eingang ist der n-Kanal-Transistor eingeschaltet, der P-Kanal ist ausgeschaltet und der Strom fließt zu GND, wodurch der Knoten auf Low gezogen wird. In beiden Fällen fließt kein Strom von V CC nach GND. Wenn jedoch von einem Zustand in einen anderen umgeschaltet wird, kreuzt der Eingang den Schwellenbereich, was bewirkt, dass der N-Kanal und der P-Kanal gleichzeitig eingeschaltet werden, wodurch ein Strompfad zwischen V CC und GND erzeugt wird.Dieser Stromstoß kann schädlich sein, je nachdem, wie lange sich der Eingang im Schwellenbereich (0,8 bis 2 V) befindet. Der Versorgungsstrom (ICC) kann auf mehrere Milliampere pro Eingang ansteigen und bei etwa 1,5 V VI gipfeln (siehe Abbildung 2). Dies ist kein Problem, wenn die Zustände innerhalb der im Datenblatt angegebenen Eingangsübergangszeitgrenze gewechselt werden, die in der Tabelle der empfohlenen Betriebsbedingungen für die spezifischen Geräte angegeben ist. [Hervorhebung von mir.]

Sie sagen also: „(1) Eingänge auf definierte Logikpegel treiben. (2) Schnell zwischen Logikpegeln umschalten.“

Ich frage mich, ob dieses Problem durch ein Mikrocontroller-Design gelöst werden könnte. dh Vergrößern Sie den logischen Spannungsbereich, sagen wir < 6 V für Low > 6 V für High. Da Störungen selten eine so hohe Pegelspannung erreichen können.

Das würde alles noch schlimmer machen.

  • Die Eingangsimpedanz der CMOS-Gatter ist so hoch, dass es nicht schwierig wäre, 6 V zu erreichen.
  • Jeder Durchschuss wird jetzt zu einem viel ernsteren Problem. In Abbildung 2 sehen wir, dass der Spitzenstrom bei einer 5-V-Versorgung 4 mA beträgt. Aus P = V × I können wir die im Gate dissipierte Spitzenleistung von 20 mW berechnen. Wenn wir eine 12-V-Logik verwenden würden, würde die Spitzenleistung auf 48 mW bei 4 mA steigen – aber der tatsächliche Strom wäre wahrscheinlich viel höher.
  • Selbst bei guten Logikpegeln und schnellen Übergängen nimmt die im Chip erzeugte Wärme mit der Frequenz zu, da mehr Übergänge pro Sekunde stattfinden.

Im Laufe der Jahre sind die Spannungen der Logikversorgungen gesunken, um die Leistungsdichteprobleme zu lösen, da die Geräte immer kleiner wurden. Wo früher 5-V-Logik Standard war, haben wir jetzt 3,3 V und weniger, um den Stromverbrauch zu reduzieren und Wärme zu verwalten.

Der TI-Artikel ist lesenswert. (Und Ihr Englisch liest sich sehr gut.)

Hey @Transistor, vielen Dank für die gute Erklärung. Nachdem ich Ihre Antwort gelesen habe, denke ich, dass eine Erhöhung der Schwellenspannung tatsächlich den mehrdeutigen logischen Eingang beheben kann, da HF-Störungen und statische Aufladungen selten einen so hohen Spannungspegel erreichen können, habe ich recht? Obwohl dies mehrdeutiges logisches Lesen beheben kann, gibt es jedoch Nachteile. dh mehr Energie wird im Durchschussbereich verbraucht, mehr Wärmeentwicklung usw.
Es wäre nützlich zu erklären, warum PMOS- und NMOS-Transistoren in der CMOS-Stufe beide im Schwellenbereich eingeschaltet werden sollten ... wenn dies Probleme verursacht ("ein Strompfad zwischen VCC und GND").
@mannok Transistor beantwortet diese Frage direkt und sagt, dass Ihre Vermutung falsch ist: "Die Eingangsimpedanz der CMOS-Gatter ist so hoch, dass es nicht schwierig wäre, 6 V zu erreichen." Warum stellst du überhaupt die Frage, wenn du auf keine der Antworten hören willst?
@sdenham, Hängt die Eingangsspannung nicht von meiner Spannungsversorgung ab?
Ja, die logischen Schwellenspannungen steigen mit der Versorgungsspannung, aber na und? Sie haben immer noch eine sehr hohe Eingangsimpedanz. In jedem Fall geht der Trend aus den oben genannten Gründen zu niedrigeren Spannungen.
Verwenden GPIO-Pins von RPi (oder anderen Mikrocontrollern) wirklich ein solches CMOS-Logikgatter direkt am Eingang, ohne Schutz vor Durchschuss durch schwebende oder anderweitig falsche Eingangsspannungen? Ich hätte vermutet, dass zumindest für Bastler gedachte Geräte wie RPi keine Verkabelung von Pullups mit unbenutzten Pins erfordern würden. Sicherlich ein Problem für einfache CMOS-Logikchips, die kein ganzer Mikrocontroller / SoC sind. IMO ist die eigentliche Antwort auf die Frage des OP, dass die Eingangsimpedanz einfach zu hoch ist, sodass schwebende Eingänge unabhängig von den internen Auswirkungen sehr weit schweben können.

Es gibt eine sehr wichtige Regel in der Elektronik: NEVER left anything out of control. Wenn also nicht unbedingt im Datenblatt geschrieben ist, dass der Eingang einen internen Pull-up oder Pull-down hat, lassen Sie diesen Eingang NICHT in einen undefinierten Zustand. Wenn Sie diesen Eingang nicht benötigen, verbinden Sie ihn mit Masse oder Vcc, lassen Sie NIEMALS Float. Solche undefinierten Zustände können einige weniger oder mehr zufällige Probleme verursachen, die sehr schwer zu untersuchen und zu lösen sind - es lohnt sich nicht, Stunden damit zu verbringen, sie zu bekämpfen, nur weil Sie die Kosten für einen kleinen Widerstand sparen möchten. Das ist wirklich sehr schlechte Praxis. Das ist wie beim Autofahren: Schauen Sie immer in den Spiegel, bevor Sie auf der Straße anhalten.

HINWEIS: Bei modernen MCUs kann das Problem gelöst werden, indem (programmgesteuert) unbenutzte E/A-Pins als Ausgang konfiguriert werden, sodass sie nirgendwo angeschlossen werden müssen. Aber wenn Sie die I/O-Pin-Richtung auf Eingang geändert haben und kein Pull-Up/Pull-Down innerhalb der MCU vorhanden ist, MÜSSEN Sie darauf achten und selbst das richtige Ziehen beibehalten. Float State ist für uns ARCHENEMY ;) ;) ;) ;)

Ich habe noch keine MCU gesehen, die alle GPIOs standardmäßig auf Ausgänge setzt. Ein solches Konzept ist in realen Designs, in denen externe Schaltungen Eingangspins ansteuern möchten, einfach nicht praktikabel.
Kommt drauf an ;) Aber generell hast du recht. Danke, ich korrigiere meine Antwort.
Danke für die Korrektur. Ich habe meine Ablehnung entfernt,
Vielen Dank fürs Entfernen :)

Die Eingangsimmunität gegen A/m B-Feldrauschen oder V/m E-Feldrauschen wird nicht durch die DC-Spannungsschwelle bestimmt, sondern eher durch die Rauschimpedanz und die Spannung oder den Strom des Übersprechens. Das Nebensprechen ist gegenüber Stromrauschen induktiv und gegenüber Spannungsspitzenrauschen kapazitiv. Es ist weder DC-empfindlich noch verbessert DC die Immunität.

Lediglich die Schwellen von beispielsweise einem Schmitt-Trigger-Bereich und die Eingangsimpedanz definieren die Störfestigkeit. Andernfalls definieren die Signalschleifenimpedanz mit der Treiberimpedanz Zol = Vol(Max)/Iol(Max) und die Spanne zum nächsten Eingangsschwellenwert im schlimmsten Fall die Leistung, die erforderlich ist, um einen falschen Trigger zu erzeugen.

Dies ist auch einer der Gründe, warum die Treiberimpedanz durch Industriestandards für CMOS-MFGs so ausgelegt wurde, dass sie niedriger ist, wenn der Vddmax-Bereich reduziert wird, um die Rauschimmunität beizubehalten.

Die 3 großen Familien sind

  • 3 ~ 18 V CMOS, das die höchste Treiberimpedanz hat, beginnend bei 300 Ohm, und mit niedrigerer Vdd ansteigt.
  • 5,5 V Logic Max ist 50 bis 66 Ohm +/- 50 %
  • 3,6 V Logic Max beträgt 25 bis 33 Ohm +/-50 %

Schmitt-Trigger-Eingänge werden für verrauschte Quellen mit hoher Impedanz bevorzugt.

< 120 Ohm terminierte Impedanzleitungen werden für Hochgeschwindigkeits-Rauschimmunität mit Differenzeingängen bevorzugt.

Der 'Pull-up'- oder 'Pull-down'-Widerstand stellt einen elektrischen Pfad entweder zu negativ (normalerweise Masse) oder positiv (normalerweise Versorgungsspannung) bereit, wenn der Ausgang nicht aktiviert ist. Es hält den Ausgangspin auf diesem Potential, so dass es keine störende Ausgabe oder unerwünschte wilde Schwingungen gibt. (Es stellt eine leichte Last für den Ausgang des Chips bereit) Ein instabiler Logikchip oder OP-Verstärker wird ziemlich oft überhitzen und sich selbst zerstören ..und wenn die Last in der Lage ist, den Schwingungen mit hoher Geschwindigkeit zu folgen, dann wird sich das wahrscheinlich auch selbst zerstören. (Denken Sie an einen mechanischen Aktuator oder ein Ventil, das versucht, mit Gott weiß welcher Frequenz zu arbeiten !!)

Es hält die Dinge einfach stabil. Wenn der Ausgang vom Logikprozessor angesteuert wird, ändert er sauber den Zustand von hoch nach niedrig oder umgekehrt ... (abhängig von der Logik und ob der Ausgang hoch oder niedrig "gebunden" ist) ... wenn es beabsichtigt ist Zustand ändern.

Willkommen bei EE.SE. Pullups werden an Eingängen verwendet, nicht an Ausgängen. Sie erscheinen an Open-Collector- oder Tri-State-Ausgängen, aber ihre Funktion besteht darin, den folgenden Eingang auf einen bekannten Logikpegel zu ziehen, wenn der Open-Collector-Ausgang ausgeschaltet ist.
@Transistor. Pull-Ups wurden damals verwendet, als TTL CMOS-Eingänge ansteuern musste. Die Pull-Ups brachten den „High“-Ausgangspegel mehr in den Bereich eines CMOS „High“. Dies könnte aber auch als Eingabeproblem betrachtet werden. Der gemeinsame Bus hatte oft Klimmzüge, um ein Schweben zu verhindern, wenn kein Busfahrer aktiv war.
@Sparky, ich bin von damals. Ich erinnere mich!