GPIO-Spannungsschwellen


7

Es ist offensichtlich, dass 3,3 V an einem GPIO-Eingangspin ein HIGH und 0 V ein LOW ist . Ich suche aber nach den genauen Spannungsschwellen für die GPIO-Eingangsstifte. Ich habe ein Pi B+und ein Pi 2.

Beim Anschauen dieses Videos (für einen älteren Pi) bekomme ich:

  • NIEDRIG: 0 - 1,19 V.
  • HOCH: 1,34 - 3,30 V.

Auf dieser Grundlage habe ich 1 V an den GPIO-Eingang angeschlossen. Der GPIO war immer noch ein HIGH .

Dieser Artikel ( hier verlinkt ) lautet:

  • VIL = 0,8 V bedeutet, dass wenn der Ausgang niedrig ist, er <= 0,8 V ist .
  • VIL = 1,3 V bedeutet, dass wenn der Ausgang hoch ist, er > = 1,3 V ist

Diese Werte stammen vom BCM2835, den der Pi bis B + hat .

Ich las diesen Artikel weiter :

  • "Normalerweise liegt der Spannungsschwellenwert bei etwa 1,8 V, kann jedoch nicht garantiert werden. Er kann irgendwo zwischen dem maximalen Eingang niedrig und dem minimalen Eingang hoch liegen , dh zwischen etwa 0,8 und 2,0 V. "

Diese Werte stammen vom ARM1176JZF, den der Pi bis B + hat .

Wenn ich auf den Tisch schaue , bekomme ich:

  • Eingangshochspannung VIH > 2,00 V
  • Eingangs niedrige Spannung VIL <0,80 V

Also: Was sind die wirklichen Schwellenwerte? Kommen sie vom BCM2835 oder vom ARM1176JZF? Wie wäre es mit dem Pi 2? Sind die Schwellenwerte immer noch dieselben wie beim Pi B +?

BEARBEITEN: In diesem Artikel heißt es: " Die GPIO-Pins sind direkt mit dem BCM2835-Chip im Herzen des Raspberry Pi verbunden. " Aus diesem Grund stammen die Werte vermutlich vom BCM2835 und betragen 0,8 V und 2 V.

EDIT2: Ich verwende WiringPI mit dem folgenden Code, um den LOW / HIGH-Wert zu lesen:

gpio -g mode 21 in
gpio -g read 21

Sie sollten klarstellen, wie Sie den Pin als Eingang festgelegt haben und wie Sie den Status lesen.
Goldlöckchen

Ich habe die Informationen hinzugefügt
Dennis

Ich bin nicht der Meinung, dass es einen Schwellenwert zwischen Pis geben wird - es scheint keinen Sinn zu ergeben - würde nicht jeder Chip eindeutig reagieren?
Joan

Und es könnte davon abhängen, was sonst noch im Chip vor sich geht oder wie warm es ist, oder EM, kosmische Strahlung usw. (gemäß dem interessanten photoelektrischen Effekt mit dem pi2-Netzteil)
paddyg

1
Gestern hatte ich gerade ein analoges Signal, zB einen Fotowiderstand. " High Low wird bei fallender oder steigender Flanke erkannt " - das ist sehr sinnvoll. Deshalb habe ich einen Schmitt-Trigger zwischen dem Fotowiderstand und dem Pi hinzugefügt. Jetzt bekomme ich perfekte fallende und steigende Kanten. Vielen Dank für den Hinweis @ppumkin
Dennis

Antworten:


3

High Low wird bei fallender oder steigender Flanke erkannt. Wenn Sie nur 1 V setzen, wird sozusagen keine Flanke erzeugt, und dies kann inkonsistent sein.

Die GPIO-Eingänge schweben beim Booten, werden dann aber normalerweise standardmäßig nach unten gezogen, wenn alles geladen ist. Wenn Sie also 1 V technisch anwenden, wird eine ansteigende Flanke erzeugt und der Wert für den HIGH-Eingang ausgelöst.

Wenn der GPIO bereits hochgezogen ist oder eine Spannung von ~ 3,3 V hat, führt ein Abfall von 3,3 V auf 1 V zu einer fallenden Flanke und zu einem LOW. Sie können also sehen, wie 1 V HOCH und NIEDRIG sein kann, da es auf den steigenden oder fallenden Kanten basiert.

Dies ist nützlich für Hochfrequenzkommunikationen, bei denen sich das Signal schnell zwischen den von Ihnen genannten Schwellenwerten ändert, aber nur Kanten den tatsächlichen Wert bestimmen. Aus diesem Grund wird es als digitaler Eingang bezeichnet.

In der Logik LOW = 0 und HIGH = 1 ... was liegt dazwischen? Schwebende Unsicherheit mit zufälligem Rauschen. Wie bereits erwähnt, handelt es sich hierbei um nicht analoge Digitaleingänge. Sie können nicht feststellen, ob der Eingang 1 V oder 1,5 V beträgt, sondern nur 1 oder 0.

Analoge Eingänge (auf dem Pi nicht vorhanden) zeigen Ihnen genau an, wie viel Spannung angelegt wurde, wenn Sie dies benötigen.


Ich muss noch einmal fragen: "GPIO-Eingangshysterese (Schmitt-Trigger) kann ein- oder ausgeschaltet sein". Aufgrund der Hysterese müssen die Eingangspins eine Spannungsschwelle haben, um LOW oder HIGH zu erkennen. Siehe elinux.org/…
Dennis

Entschuldigung, war das eine Frage? Der GPIO wird normalerweise auf 0 V heruntergezogen (nach dem Booten und auf LOW gesetzt), wenn nichts angeschlossen ist. Bei der Hysterese geht es jedoch um eine Verzögerung zwischen der Erkennung dieser Spannungen und dies hat normalerweise mit Problemen bei der Hochgeschwindigkeits-Pulsweitenmodulation zu tun. Nicht sicher was du meinst.
Piotr Kula

Sicherlich muss es eine Spannungsgrenze geben, unter der es immer als 0 betrachtet wird, und eine andere, über der es immer 1 ist? Es macht keinen Sinn, dass Schwankungen, z. B. zwischen 0 und 0,5 V, als Springen zwischen 0 und 1 betrachtet werden. Diese Seite gibt an, dass die Grenzwerte nicht richtig angegeben sind, bietet jedoch eine Anleitung: mosaic-industries.com/embedded-systems/microcontroller-projects /…
Sampo
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.