Anzeige
Anzeige
© linear technology Application Notes | 18 September 2014

Probleme am I2C meistern

I2C ist ein popul√§rer 2-Drahtbus f√ľr die Verbindung zwischen ICs. Er ist einfach einzusetzen und arbeitet mit bis zu 400 kHz.
Einleitung Jedoch, wie oft bei Standards, kann es zu Problemen kommen, wenn man die originalen I2C Spezifikation ausreizt oder diese f√ľr aktuelle Systemanforderungen nicht ausreichen. Mit der zunehmenden Komplexit√§t sind mehr und mehr I2C Bausteine am Bus, was zu Kompromissen bei einigen Parametern f√ľhren kann. Die meisten Probleme bei I2C System sind elektrischer Natur oder liegen im Timing bzw. in der Signalqualit√§t. Sie treten bei Systemgr√∂√üen auf, bei denen die maximale Buskapazit√§t von 400pF √ľberschritten wird, durch Inkompatibilit√§t √§lterer nicht konformer oder unbekannter I2C ICs oder bei Bussen, die auf unerkl√§rliche Weise auf Low bleiben oder einfach dann, wenn nicht genug Device Adressen verf√ľgbar sind. Dieser Artikel zeigt wie man mit I2C Controllern von Linear Technology alle diese Probleme gleichzeitig l√∂sen und sich so auf das Schaltungsdesign konzentrieren kann, ohne die Einschr√§nkungen durch die Limits des I2C Standards und dessen Fallstricke. Strenge Anforderungen erf√ľllen Der I2C Standard spezifiziert eine maximale Buskapazit√§t von 400 pF. Leiterz√ľge, lange Leitungen und Busknoten bringen zus√§tzliche Kapazit√§t auf den Bus, was es speziell in gro√üen Systemen schwierig macht, die 400pF Begrenzung einzuhalten. Eine weitere Einschr√§nkung ist, dass I2C Bausteinen mit unterschiedlichen Versorgungsspannungen nicht denselben Bus nutzen d√ľrfen. Einige Systeme erfordern auch das Aus- und Einstecken von I/O Boards im laufenden Betrieb das kann die Kommunikation auf der Backplane st√∂ren, falls keine Gegenma√ünahmen getroffen werden. Beachtet man diese Problemquellen nicht, kann dies die I2C Konformit√§t, die Datenintegrit√§t und die Zuverl√§ssigkeit des Systems beeintr√§chtigen. I2C Busbuffer l√∂sen diese grundlegenden Probleme. Sie bieten kapazitive Bufferung-, Levelshifting- und Hot Swapp-F√§higkeit durch das Pre-Biasing der Busleitungen.
Figure 1 ----- Figure 2 ----- Alle Grafiken haben eine Zoom-Funktion.
Mit stetig wachsender Systemgr√∂√üe, entstehen neue elektrische Probleme und es stellt sich heraus, dass die Vorteile √§lterer Busbuffer zulasten bestimmter I2C Spezifikationen gehen. Busbuffer m√ľssen unterscheiden k√∂nnen zwischen dem low Zustand einer extern ansteuernden Logik und dem low Zustand der eigenen Logik. Dies brachte Buffer, deren Ausg√§nge Low Pegel (VOL) oberhalb der 0,4 V der I2C Spezifikation liefern oder Buffer, deren VOL mit einem Offset √ľberlagert ist. Je mehr von diesen alten Buffern am Bus sind, umso kleiner ist der St√∂rabstand bei Low-Pegel, was die Empfindlichkeit des Busses gegen√ľber St√∂rungen erh√∂ht. Gr√∂√üere Systeme profitieren von nahezu idealen Bus-Buffern, mit denen der Logic-Low St√∂rabstand der I2C Spezifikation wiedererlangt wird. D.h. ein fast idealer Bus-Buffer ist ein schneller Buffer, der aktiv ist bis die Busspannung den Wert von 0,3 VCC (VIL) durchl√§uft und somit keine zus√§tzliche Bus Last bringt. Eine zus√§tzliche Anforderung an gro√üe Systeme ist die R√ľckw√§rtskompatibilit√§t zu Buffern deren Anstiegszeitbeschleuniger (RTAs) unter 0,3 VCC einschalten oder mit Buffern, die einen nichtkonformen VOL Pegel von 0,6 V treiben. Bild 2 zeigt den LTC4315 von Linear Technology, ein neuer Busbuffer, der alle angesprochenen Probleme bew√§ltigt. Der LTC4315 l√∂st gew√∂hnlich gro√üe Buskapazit√§ten in kleine Segmente von <400 pF auf, sein Levelshifter arbeitet an Busversorgungen von 1,4 V bis 5,5 V und er bietet Hot Swap F√§higkeit, wodurch I/O Karten im laufenden Betrieb gewechselt werden k√∂nnen. Fast noch wichtiger ist sein gro√üer Eingangs-St√∂rabstand durch einen Low-Pegel VIL= 0,3 * Vcc , womit so stets ein ausreichend gro√üer St√∂rabstand bei Logic Low vorliegt. Damit k√∂nnen ohne weiteres mehrere LTC4315s kaskadiert werden, ohne dass sich der St√∂rabstand verringert - perfekt f√ľr gro√üe oder rauschbehaftete Systeme. Der LTC4315 kann zusammen mit Bausteinen eingesetzt werden, die mit hoher VOL > 0,4 V arbeiten und solchen, die bei Pegeln < 0,3*VCC das RTAS einschalten. Somit k√∂nnen Systeme gebaut werden, an die beliebige I2C Bausteine angeschlossen werden k√∂nnen. Schlechtes Timing vermeiden In I2C Systemen gibt es zwei wesentliche Timing Probleme. Zum einen wird die Signalanstiegszeit (Slew-Rate) haupts√§chlich durch die I2C Bus Pull-up Widerst√§nde bestimmt, die manchmal zu hochohmig sind, wenn k√ľrzere Bus Anstiegszeiten gefordert sind, wie z.B. im Falle der PICMG Spezifikationen. Diese verlangen SCL und SDA Signale mit einer Anstiegszeit von 1 V auf 2,3 V innerhalb von 900 ns bei 2,7 k‚Ą¶ Pull-up Widerstand nach 3,3 V und einer Lastkapazit√§t von 690 pF. Andererseits k√∂nnen gro√üe Buskapazit√§ten und begrenzte Pull-Up-Str√∂me die Anstiegszeiten kritisch verl√§ngern bis zu einem Punkt, an dem die maximalen Anstiegszeiten laut den I2C Spezifikation von 1 ¬Ķs bei 100 kHz oder 300 ns bei 400 kHz nicht eingehalten werden.
Figure 3 ----- Figure 4 ----- Alle Grafiken haben eine Zoom-Funktion.
Linear Technology bietet verschiedene Busbuffer mit w√§hlbarer Anstiegszeitbeschleunigung, wie den LTC4315 oder den LTC4311, ein Stand-alone Anstiegszeitbeschleuniger, der einfach parallel an den Bus angeh√§ngt wird. Diese autonomen Anstiegszeitbeschleuniger bieten hohe anstiegsbegrenzte Pull-up Str√∂me, die alle Slew-Rate Anforderungen erf√ľllen. Die Beschleuniger werden nur w√§hrend eines positiven Signalanstiegs auf dem Bus automatisch aktiviert, und erh√∂hen die Anstiegsgeschwindigkeit auf eine bestimmte Rate, welche die Board- und die System Zuverl√§ssigkeit erh√∂ht. Dies geschieht durch einen sanften und kontrollierten √úbergang w√§hrend der Anstiegsflanken. Die Systeme reagieren auch weniger empfindlich auf St√∂rungen bei ansteigenden Flanken, da durch den Beschleuniger die Pull-up Impedanz niedriger ist, als mit den Pull-up Widerst√§nden alleine. Die Beschleuniger erm√∂glichen damit den Einsatz gro√üer Pull-Ups, was den Stromverbrauch reduziert und den Rauschabstand verbessert. Ein weiteres Timing Problem ist das H√§ngenbleiben des I2C Bus auf Low. Symptome hierf√ľr sind Kommunikationsprobleme, Daten mit vielen Nullen und ungew√∂hnliches GUI Verhalten. Das ‚Äěauf Masse h√§ngen bleiben‚Äú von SCL oder SDA liegt an I2C Bus Bausteinen, die sich fehlerhaft verhalten. Wird das nicht korrigiert, blockiert das auf Low h√§ngende IC alle anderen Teilnehmer am Bus bis das blockierenden IC High Pegel ausgibt. Wenn der Bus auf Low h√§ngt, muss der Host manuell eingreifen, meist durch einen Reset, was aber st√∂rend und u.U. teuer ist und Zeit kostet. Das Problem blockierter Busse kann einfach durch den Einsatz von Busbuffern von Linear Technology gel√∂st werden, die √ľber w√§hlbaren Busschutz verf√ľgen wie der LTC4315, der die SDA und SCL Ausg√§nge laufend auf einen Low Status von l√§nger als 30 ms √ľberwacht (Bild 3). Tritt dies ein, werden die Eingangs- zu-Ausgangsverbindungen beider I2C Signale unterbrochen, was eine weitere Kommunikation mit den blockierten Bauteilen stoppt. Der Busbuffer generiert bis zu 16 Taktimpulse am SCLOUT Pin um den blockierten lokalen Bus freizugeben. Ist dieser nicht mehr blockiert, oder die 16 Taktimpulse sind durchlaufen, wird ein Stopp Bit erzeugt um den Bus f√ľr weitere Kommunikation freizugeben. Auch werden die Eingangs- zu-Ausgangsverbindungen beider I2C Signale wieder hergestellt, aber nur, wenn der Bus im Idle-Modus ist und sich nicht gerade in einer I2C Transaktion befindet. Signalisierung vereinfachen Die 111 physikalischen Adressen des Standard I2C Buses sind meistens ausreichend, gr√∂√üere Systeme jedoch, m√ľssen oft die Kommunikation f√ľr mehr als 111 Bauteile erm√∂glichen. Systemdesigner m√ľssen oft auch Slave Bausteine einsetzen, die nur √ľber wenige Adressen verf√ľgen, was zur Mehrfachbelegung derselben Adresse zwingt (nested addressing). Hier sollten I2C Multiplexer von Linear Technology verwendet werden, um die Mehrfachverwendung von physikalischen I2C Adressen zu erm√∂glichen. Der bi-direktionalen Natur dieser Multiplexer wegen, k√∂nnen sie auch verwendet werden, um I2C Daten von den Ausgangsbussen zu den Eingangsbussen zu √ľbertragen. Bild 4 zeigt den LTC4314, ein pin-selektierbarer 4:1 I2C Multiplexer, bei dem vier I2C Bausteine unter derselben Adresse laufen. Die einzelnen Enable Pins erm√∂glichen es dem Anwender auszuw√§hlen, welche Downstream Busse an dem Upstream Bus verwendet werden. Auch ist ein LTC4306 mit 1:4 Software-selektierbarem Multiplexer verf√ľgbar, der in gleicher Weise arbeitet, jedoch per I2C Befehl anstelle von Enable-Pins gesteuert wird. Diese I2C Multiplexer haben integrierte Busbuffer, und so alle Merkmale der Linear Technology Busbuffer wie der gro√üe Rauschabstand, die Anstiegszeitbeschleunigung und den Schutz vor Blockieren der Busse. Schlussbemerkung Der √ľber 30 Jahre alte Bus wird noch verbreitet eingesetzt, wogleich die Systeme gr√∂√üer und komplexer werden, was eine Herausforderung an die Spezifikationen und deren Grenzen bedeutet. Designer k√∂nnen bei der Entwicklung die Anforderungen bez√ľglich elektrischer Probleme und solcher durch Timing und die Signalisierung ber√ľcksichtigen, besser ist es aber, durch vorbeugende Ma√ünahmen die gezeigten Probleme auszuschalten, da man nie weis welche I2C Bauteile letztendlich im System verwendet werden ‚Äď z.B. nicht konforme I2C ICs oder solche, die den Bus blockieren. Die I2C Spezifikationen kann man sehr einfach einhalten, setzt man von vorne herein die richtige Kombination von I2C Busbuffern, Anstiegszeitbeschleunigern und Multiplexern von Linear Technology ein. Dann kann man auch sp√§ter ein System ohne Einschr√§nkungen und ohne Verz√∂gerungen erweitern. ----- Autor: Chris Gobok, Product Marketing Engineer, Mixed Signal Products, ¬© Linear Technology
Anzeige
Anzeige
Weitere Nachrichten
2019.02.15 09:57 V12.1.1-2