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.
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.
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.
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.
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.)
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 ;) ;) ;) ;)
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
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.
mkeith
Benutzer253751
Oldtimer
Bruce Abbott
Verrückter Hutmacher
glen_geek