Frage:
Beziehung zwischen dem von I2C gezogenen Energie- / Stromverbrauch und der Datenrate
kellogs
2018-11-09 20:04:09 UTC
view on stackexchange narkive permalink

Wenn ich mich nur auf das beziehe, was die I2C-Linien zeichnen, denke ich falsch, dass je höher die Taktfrequenz, desto kürzer die Zeit ist, in der (die gleiche Menge) Strom durch die Pullups fließt und somit weniger Strom verbraucht wird?


side qeustion

Ich glaube nicht, dass ich 100 kHz erreichen werde, das ist weit über der Grenze meiner Hardware.Ich wechsle zwischen 32 und 4 kHz.Ist der gleiche Widerstandswert (3,3 k bei 3 V) für beide gut?

Fünf antworten:
#1
+8
ratchet freak
2018-11-09 20:29:04 UTC
view on stackexchange narkive permalink

Die I2C-Daten- und Taktleitungen verbrauchen Strom, wenn sie niedrig gezogen werden.Denn dann wird die Leistung durch die Pull-up-Widerstände gesenkt.

Während eine Linie nach unten gezogen wird, werden 5 V / 4,7 k \ $ ~ \ Omega \ ca. \ $ span> 1 mA gezogen.Angenommen, 5 V VCC und 4,7 k Pullup-Widerstände.

Die Taktleitung hat ein Tastverhältnis von 50%.Die Datenleitung ist mindestens 1 von 9 Taktzyklen niedrig (jede Bestätigung für ein erfolgreiches Byte), aber Sie werden selten nur 0xff-Bytes senden / empfangen.Es ist wahrscheinlicher, dass es in 75% der Fälle niedrig gehalten wird.

In der Tat bedeutet eine schnellere Uhr eine kürzere Übertragung, was bedeutet, dass weniger Strom durch die Klimmzüge verloren geht.Eine schnellere Übertragung kann jedoch Widerstände mit niedrigerem Wert erfordern, um die parasitäre Kapazität zwischen den Leitungen und Masse zu überwinden

Es wird auch Energie benötigt, um die parasitäre Kapazität zu laden und zu entladen.Ich denke, ein weiterer Faktor, der den Stromverbrauch beeinflusst, ist der Prozentsatz der aktiven Zeit des Busses.
Wie wäre es mit meiner Nebenfrage?
Der Stromverbrauch beim Laden und Entladen der Kapazität wird (vorausgesetzt, Sie ändern die Schaltung nicht und Ihr Takt ist langsam genug, damit dies effektiv abgeschlossen wird) durch die Anzahl der Taktzyklen * bestimmt, nicht jedoch durch die Taktrate *.
Ich bin gespannt auf die 75% des Zeitwertes.Ich hätte ungefähr 50% (oder besser 56%, einschließlich der Bestätigung) gesagt, da alle Werte gleich wahrscheinlich sind.75% bedeutet, dass die durchschnittliche Anzahl von Nullen pro Byte zwischen 5 und 6 liegt;War Ihre Schätzung pessimistisch oder ist 75% der tatsächliche statistische Wert?
@frarugi87 pessimistische Schätzung.Basierend auf der Gewohnheit, niedrige Nummern für Adressen verschiedener Steuerregister und deren Werte zu verwenden.Also habe ich zu Gast gemacht, dass die Top 3 Bits sehr oft nur 0 sind.
@ratchetfreak Es macht Sinn;) Vielen Dank für Ihre Erklärung
#2
+7
Arsenal
2018-11-09 20:28:53 UTC
view on stackexchange narkive permalink

Ihr Denken ist richtig, solange Sie mit denselben Pull-up-Widerständen eine höhere Geschwindigkeit erreichen können.

Wie wäre es mit meiner Nebenfrage?
@kellogs kann das nicht beantworten, da ich keine Ahnung habe, wie hoch Ihre Leitungskapazität ist.Daher kann ich Ihnen nur sagen, dass wir in einem unserer Produkte problemlos 100 kHz mit 100 kOhm Widerständen betreiben.Ich würde vermuten, dass es dir gut geht.
eine Möglichkeit, es zu schätzen?
@kellogs gut, 10 pF für jeden an den Bus angeschlossenen Pin, 50 pF pro Meter für die Länge der Leitung wäre eine konservative Vermutung, denke ich.Wenn sich Ihr I²C-Bus auf einer einzelnen Leiterplatte befindet, kann ich mir kaum vorstellen, warum er mit 3k3-Pull-up-Widerständen nicht funktioniert.
#3
+5
Peter Karlsen
2018-11-09 20:41:08 UTC
view on stackexchange narkive permalink

Höhere Taktfrequenzen erfordern normalerweise einen niedrigeren Pull-up-Wert, wodurch der Strom erhöht wird.

Um die Taktfrequenz von 100 kHz auf 400 kHz zu erhöhen, muss der Pull-up normalerweise um den Faktor 4-5 reduziert werden.

Da die Leistung umgekehrt proportional zum Widerstand ist, ist die verbrauchte Leistung nahezu gleich.

Wie wäre es mit meiner Nebenfrage?
@kellogs 32KHz ist für I2C sehr langsam.Abhängig von der Kapazität des Busses können Sie wahrscheinlich 10k oder mehr verwenden.Verwenden Sie ein Oszilloskop, um die steigende Flanke von SCL und SDA zu sehen und den Wert des Pull-Ups zu bestimmen.SDA muss in der niedrigen SCL-Periode von niedrig nach hoch steigen können.
#4
+2
gustavovelascoh
2018-11-09 20:38:33 UTC
view on stackexchange narkive permalink

Wie @ ratchet-freak feststellte, könnte der Bus in 75% der Fälle heruntergefahren werden. Wenn Sie also die Taktrate erhöhen, sinkt Ihr Busverbrauch so lange, wie Sie es getan habender gleiche Wert für Pull-up-Widerstände.Bei höheren Geschwindigkeiten sollten die Widerstandswerte jedoch reduziert werden.

Wenn dies der Fall ist, ist der Verbrauch des Busses geringer, aber Slaves- und Master-Geräte können ihren Verbrauch abhängig von der Taktrate erhöhen.

In Bezug auf Ihre Nebenfrage müssen Sie die Kapazität Ihres Busses überprüfen, wenn 3,3 kOhm sowohl für 4 kHz als auch für 32 kHz geeignet sind.Diese Kapazität hängt von der Länge des Busses, dem Abstand zwischen den Leitungen und der Anzahl der daran angeschlossenen Geräte ab.Es könnte schwierig sein, die tatsächliche Kapazität zu berechnen, aber Sie können die Wellenform Ihrer Daten im Bus bei beiden Frequenzen überprüfen und mit 3,3 k feststellen, ob das Signal bei 32 kHz verzerrt ist.

Wie wäre es mit meiner Nebenfrage?
#5
  0
Pallav Aggarwal
2019-06-19 17:36:31 UTC
view on stackexchange narkive permalink

Bei hoher Datenrate wird der Stromverbrauch höher sein: - Die MCU muss schneller arbeiten - Klimmzüge mit geringem Wert sind erforderlich, um eine korrekte Anstiegs- / Abfallflanke der Impulse

zu erzielen


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...