I2C-Pullup-Widerstandsberechnungen

10

Ich versuche, dieses I2C-LCD-Display mit einem ATxmega16A4U- Mikrocontroller zu betreiben .

Beide Geräte arbeiten mit I2C-Taktfrequenzen bis zu 400 kHz. Die beiden Geräte sind die einzigen Geräte am I2C-Bus.

Das Berechnen der Berechnungen für die Pull-up-Widerstandsgrenzen ergibt jedoch einige ziemlich merkwürdige Werte.

Berechnung des minimalen I2C-Pullup-Widerstandswerts:

Rmin=Vcc0.43mA=966.7Ω

In den uC-Datenblättern finden Sie auf Seite 92 die maximale Pin-Eingangskapazität von 10 pF.

Für das LCD hat es jedoch auf Seite 8 etwas, das Capacitive load represent by each bus lineals Cb bezeichnet wird, und ist bei einem Maximalwert von 400 pF aufgeführt. Ich gehe davon aus, dass ich diesen Wert nur zur Eingangskapazität von 10 pF uC addieren sollte, aber dies scheint sehr hoch zu sein und die Berechnungen sind wackelig.

Wenn ich zum Beispiel versuche, den maximalen Pullup-Widerstandswert für einen 400-kHz-Takt zu berechnen:

Rmax=300ns10pF+400pF=731.7Ω

Interpretiere ich das LCD-Datenblatt falsch? Offensichtlich kann der maximal zulässige Pullup-Widerstandswert nicht kleiner als der minimal zulässige Wert sein.

Wenn ich eine maximale Nettobuskapazität von 400 pF annehme, erhalte ich ebenfalls:

Rmax=300ns400pF=750Ω

immer noch unter dem maximal zulässigen Wert.

helloworld922
quelle

Antworten:

11

Das Atmel-Datenblatt enthält einen Tippfehler. Die Anstiegszeit für den 100-kHz-Fall sollte 1000 ns und nicht 100 ns betragen (sie muss nicht niedriger sein als der 400-kHz-Fall von 300 ns). Dann erhalten Sie:

1us400pF=2.5kΩ ; für den 100kHz Fall

Das LCD-Datenblatt gibt (mit ziemlicher Sicherheit) die maximale Buskapazität an, nicht die Kapazität, die es dem Bus hinzufügt. Es fügt wahrscheinlich ungefähr 10pF hinzu. Sie können entweder mit einem LCR-Messgerät prüfen oder es einfach mit einem 2k-Widerstand einrichten und die Anstiegszeiten anzeigen.

Viele Geräte entsprechen nicht vollständig den offiziellen 400-kHz-Spezifikationen. Daher sollten Sie sich auf diese beziehen, um die Bedingungen zu verstehen, unter denen 400-kHz funktionieren kann (Buskapazität, Pullup / Stromquelle / usw.). Siehe insbesondere Abschnitt 6 (siehe z. B. siehe Abschnitt 6) Anmerkung 4 auf S. 47:

[4] Um die volle Buslast bei 400 kHz anzutreiben, ist eine 6-mA-IOL bei 0,6 V VOL erforderlich. Teile, die diese Spezifikation nicht erfüllen, können weiterhin funktionieren, jedoch nicht bei 400 kHz und 400 pF.

Darüber hinaus sind diese Tabellen sehr hilfreich und stimmen mit Ihren Berechnungen überein:

I2C Klimmzüge

Oli Glaser
quelle
Ja, das fällt mir beim Datenblatt auf. Ein 400-kHz-Signal sollte eine kürzere Anstiegszeit haben als ein 100-kHz-Signal: D
helloworld922
1

Ihre Berechnung macht Sinn. Eine ähnliche Berechnung findet sich in diesem TI-App-Hinweis (Abschnitt 4.1) . Beachten Sie, dass sie V cc = 1,8 V zur Berechnung von R min verwenden .

Es ist denkbar, dass C b die maximale Buskapazität ist, mit der das LCD arbeiten kann, und nicht die Kapazität, die das LCD dem Bus hinzufügt. Sie können die Kapazität der I 2 C-Eingänge testen, indem Sie deren RC-Konstante messen. Dies würde die Überprüfung der geistigen Gesundheit in der Größenordnung ermöglichen.

Nick Alexeev
quelle