DE112020002619T5 - Ein inter-integrated circuit (i2c) gerät - Google Patents

Ein inter-integrated circuit (i2c) gerät Download PDF

Info

Publication number
DE112020002619T5
DE112020002619T5 DE112020002619.1T DE112020002619T DE112020002619T5 DE 112020002619 T5 DE112020002619 T5 DE 112020002619T5 DE 112020002619 T DE112020002619 T DE 112020002619T DE 112020002619 T5 DE112020002619 T5 DE 112020002619T5
Authority
DE
Germany
Prior art keywords
pin
clock
data
slave device
slave
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020002619.1T
Other languages
English (en)
Inventor
Sandeep Vernekar
Vijay Ele
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ams International AG
Original Assignee
Ams International AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ams International AG filed Critical Ams International AG
Publication of DE112020002619T5 publication Critical patent/DE112020002619T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Color Television Image Signal Generators (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Traffic Control Systems (AREA)

Abstract

I2C-Vorrichtung (100), die Folgendes umfasst: eine Master-Vorrichtung (102) und zwei Slave-Vorrichtungen, die über einen I2C-Bus verbunden sind, wobei die beiden Slave-Vorrichtungen mit der gleichen Standard-Vorrichtungsadresse programmiert sind. Eine erste Slave-Vorrichtung (108) ist mit dem Bus in einer konventionellen Konfiguration verbunden, während eine zweite Slave-Vorrichtung (110) mit dem Bus in einer kreuzgeschalteten Konfiguration verbunden ist, so dass ein Taktstift des zweiten Slaves mit der seriellen Datenleitung verbunden ist und der Datenstift des zweiten Slaves mit der seriellen Taktleitung verbunden ist. Als Reaktion auf die Feststellung, dass der Datenstift des zweiten Slave-Geräts mit der seriellen Taktleitung verbunden ist, vertauscht das zweite Slave-Gerät die Leitungen, die von den Takt- und Datenstiften zur Verarbeitungslogik des zweiten Slave-Geräts führen, und ändert seine Standardgeräteadresse, um sicherzustellen, dass jedes Slave-Gerät eine eindeutige Geräteadresse hat.

Description

  • BEREICH DER OFFENLEGUNG
  • Diese Offenbarung bezieht sich auf ein Inter-Integrated Circuit (I2C)-Gerät.
  • HINTERGRUND
  • In einem I2C-Busnetz sollten alle an den I2C-Bus angeschlossenen Slave-Geräte eine eindeutige Adresse haben, damit sie vom Master-Gerät angesprochen werden können. Das I2C-Protokoll sieht keine erfolgreiche Kommunikation vor, wenn zwei Slave-Geräte mit der gleichen Adresse an den I2C-Bus angeschlossen sind. In diesem Fall besteht aufgrund der ACK-Phase des I2C-Protokolls die Möglichkeit einer Buskonkurrenz.
  • Eine bekannte Lösung zur Überwindung dieses Problems auf Protokollebene ist die Verwendung eines zusätzlichen Pins an jedem Slave-Gerät, der entweder mit einer Stromschiene oder mit Masse verbunden ist, um das Slave-Gerät in Abhängigkeit von seiner Verbindung zum I2C-Bus zu konfigurieren.
  • Eine andere Lösung ist der Einsatz von Multiplexer-Schaltungen, die sich außerhalb der beiden Slave-Geräte befinden, um sicherzustellen, dass immer nur eines der beiden Slave-Geräte mit dem I2C-Bus verbunden ist.
  • Eine andere Lösung besteht darin, dass die Hersteller mehrere Teilenummern für ein Teil angeben, wobei der einzige Unterschied die I2C-Adresse ist.
  • ZUSAMMENFASSUNG
  • Die Erfinder haben festgestellt, dass bekannte Lösungen für den Anschluss mehrerer Instanzen desselben Slave-Geräts an einen I2C-Bus insofern problematisch sind, als sie (i) die Verwendung zusätzlicher Pins an den Slave-Geräten erfordern; (ii) zusätzliche Komponenten im I2C-Bus-Netzwerk erfordern; oder (iii) den Herstellungsprozess komplizieren.
  • Gemäß einem Aspekt der vorliegenden Offenbarung wird eine I2C-Vorrichtung (Inter-Integrated Circuit) bereitgestellt, die Folgendes umfasst: eine I2C-Master-Vorrichtung; und eine erste I2C-Slave-Vorrichtung, die mit der Master-Vorrichtung über einen I2C-Bus kommunikativ verbunden ist, der eine serielle Taktleitung und eine serielle Datenleitung umfasst, wobei ein Taktstift der ersten Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist und ein Datenstift der ersten Slave-Vorrichtung mit der seriellen Datenleitung verbunden ist; eine zweite I2C-Slave-Vorrichtung, die mit der Master-Vorrichtung über den I2C-Bus kommunikativ verbunden ist, wobei ein Takt-Pin der zweiten I2C-Slave-Vorrichtung mit der seriellen Datenleitung verbunden ist und der Daten-Pin der zweiten I2C-Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist; wobei ein in die erste I2C-Slave-Vorrichtung programmierter Adresswert derselbe ist wie ein in die zweite I2C-Slave-Vorrichtung programmierter Adresswert; wobei die zweite I2C-Slave-Vorrichtung umfasst: eine Verarbeitungslogik, die einen Takteingangsanschluss, einen Dateneingangsanschluss und einen Datenausgangsanschluss umfasst; ein Taktleitungsidentifizierungsmodul, das so konfiguriert ist, dass es erkennt, ob der Taktstift oder der Datenstift der zweiten I2C-Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist; und ein Steuermodul, das so konfiguriert ist, dass es als Reaktion auf die Erkennung, dass der Datenstift mit der seriellen Taktleitung verbunden ist, die Kopplung des Datenstifts der ersten I2C-Slave-Vorrichtung steuert: die Kopplung des Datenpins der zweiten I2C-Slave-Vorrichtung mit dem Takteingangsport der Verarbeitungslogik zu steuern; die Kopplung des Taktpins der zweiten I2C-Slave-Vorrichtung mit dem Dateneingangsport der Verarbeitungslogik und einem Datenausgangsport der Verarbeitungslogik zu steuern; und eine Vorrichtungsadresse für die zweite I2C-Slave-Vorrichtung zu konfigurieren, indem der in die zweite I2C-Slave-Vorrichtung programmierte Adresswert modifiziert wird.
  • Vorteilhafterweise können in Ausführungsformen der vorliegenden Offenbarung zwei Slave-Geräte, die mit derselben Standardgeräteadresse programmiert sind (z. B. mehrere Instanzen desselben Slave-Geräts), ohne externe Komponenten an denselben I2C-Bus angeschlossen werden. Darüber hinaus wird die Herstellung von Instanzen des Slave-Geräts vereinfacht, da alle Instanzen desselben Slave-Geräts mit dergleichen Standardgeräteadresse programmiert werden können. Wenn sich das zweite I2C-Slave-Gerät in einer „Cross-Connected“-Konfiguration befindet (wobei ein Takt-Pin des zweiten I2C-Slave-Geräts mit der seriellen Datenleitung und der Daten-Pin des zweiten I2C-Slave-Geräts mit der seriellen Taktleitung verbunden ist), erkennt es seine Verbindung mit dem I2C-Bus, vertauscht die Leitungen, die von seinen Pins zur Verarbeitungslogik führen, und ändert seine Standardadresse, um sicherzustellen, dass jedes I2C-Slave-Gerät eine eindeutige Geräteadresse in Übereinstimmung mit dem I2C-Protokoll hat.
  • In Implementierungen ist das Steuermodul so konfiguriert, dass es als Reaktion auf eine Erkennung, dass der Taktpin der zweiten I2C-Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist, Folgendes tut: Aufrechterhalten der Kopplung des Taktpins der zweiten I2C-Slave-Vorrichtung mit dem Takteingangsport der Verarbeitungslogik; Aufrechterhalten der Kopplung des Datenpins der zweiten I2C-Slave-Vorrichtung mit dem Dateneingangsport der Verarbeitungslogik und einem Datenausgangsport der Verarbeitungslogik; und Beibehalten des in die zweite I2C-Slave-Vorrichtung programmierten Adresswerts als Vorrichtungsadresse für die zweite I2C-Slave-Vorrichtung.
  • In Implementierungen umfasst das Taktleitungsidentifizierungsmodul: einen ersten Flankenzähler, der so konfiguriert ist, dass er Flanken eines über den Taktstift der zweiten I2C-Vorrichtung empfangenen Signals zählt; und einen zweiten Flankenzähler, der so konfiguriert ist, dass er Flanken eines über den Datenpin der zweiten I2C-Vorrichtung empfangenen Signals zählt; wobei das Taktleitungsidentifizierungsmodul so konfiguriert ist, dass es durch Vergleichen des ersten Zählwerts und des zweiten Zählwerts erkennt, ob der Taktpin oder der Datenpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, sobald eine Summierung eines ersten Zählwerts durch den ersten Flankenzähler und eines zweiten Zählwerts durch den zweiten Flankenzähler einen vorbestimmten Schwellenwert überschreitet.
  • In Implementierungen ist das Taktleitungsidentifizierungsmodul so konfiguriert, dass es: erkennt, dass der Datenpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, basierend auf dem zweiten Zählwert, der den ersten Zählwert überschreitet; und erkennt, dass der Taktpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, basierend auf dem ersten Zählwert, der den zweiten Zählwert überschreitet.
  • In Implementierungen umfasst die zweite I2C-Slave-Vorrichtung ferner: eine Multiplexerstufe, die den Taktstift und den Datenstift der zweiten I2C-Vorrichtung mit der Verarbeitungslogik koppelt, wobei das Steuermodul so konfiguriert ist, dass es ein Schaltsignal erzeugt und an die Multiplexerstufe überträgt, um die Kopplung des Datenstifts und des Taktstifts der I2C-Slave-Vorrichtung mit der Verarbeitungslogik zu steuern, wobei das Schaltsignal einen Wert hat, der davon abhängt, ob der Taktstift oder der Datenstift der Vorrichtung mit der seriellen Taktleitung verbunden ist.
  • In Implementierungen ist das Steuermodul so konfiguriert, dass es als Reaktion auf eine Erkennung, dass der Taktstift der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, das Schaltsignal mit einem ersten Wert erzeugt und überträgt, um die Multiplexerstufe so zu konfigurieren, dass der Taktstift der zweiten I2C-Vorrichtung mit dem Takteingangsanschluss der Verarbeitungslogik gekoppelt ist und der Datenstift der zweiten I2C-Vorrichtung mit dem Dateneingangsanschluss und dem Datenausgangsanschluss der Verarbeitungslogik gekoppelt ist.
  • In Implementierungen ist das Steuermodul so konfiguriert, dass es als Reaktion auf die Erkennung, dass der Datenpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, das Schaltsignal mit einem zweiten Wert erzeugt und überträgt, um die Multiplexerstufe so zu konfigurieren, dass der Datenpin der zweiten I2C-Vorrichtung mit dem Takteingangsport der Verarbeitungslogik gekoppelt ist und der Taktpin der zweiten I2C-Vorrichtung mit dem Dateneingangsport und dem Datenausgangsport der Verarbeitungslogik gekoppelt ist.
  • In Implementierungen ist das Steuermodul so konfiguriert, dass es erkennt, dass der I2C-Bus im Leerlauf ist, und als Reaktion auf die Erkennung, dass der I2C-Bus im Leerlauf ist, das Schaltsignal mit dem zweiten Wert erzeugt und überträgt. Dadurch wird vorteilhafterweise sichergestellt, dass der Signaltausch nur dann durchgeführt wird, wenn der I2C-Bus im Leerlauf ist und nicht während einer I2C-Transaktion.
  • Wenn der Daten-Pin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, kann das Steuermodul so konfiguriert werden, dass es erkennt, dass der I2C-Bus im Leerlauf ist, indem es einen Übergang des über den Takt-Pin empfangenen Signals von einem logisch niedrigen Wert zu einem logisch hohen Wert erkennt, während das über den Daten-Pin empfangene Signal einen logisch hohen Wert hat.
  • Wenn der Taktstift der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, kann das Steuermodul so konfiguriert werden, dass es erkennt, dass der I2C-Bus im Leerlauf ist, indem es einen Übergang des über den Datenstift empfangenen Signals von einem logisch niedrigen Wert zu einem logisch hohen Wert erkennt, während das über den Taktstift empfangene Signal einen logisch hohen Wert hat.
  • In einigen Implementierungen ist das Steuermodul so konfiguriert, dass es ein Schaltabschlusssignal erzeugt und das Schaltabschlusssignal an die Multiplexerstufe überträgt, wobei die Multiplexerstufe als Reaktion sowohl auf das Schaltsignal als auch auf das Schaltabschlusssignal konfigurierbar ist. In diesen Implementierungen ist nach dem Einschalten eine I2C-Transaktion erforderlich, damit beide I2C-Slave-Geräteinstanzen beginnen, auf I2C-Transaktionen von einem I2C-Master-Gerät mit ihren jeweiligen Adressen zu reagieren. Bei diesen Implementierungen besteht vorteilhafterweise kein Risiko eines Zeitfehlers oder eines Fehlverhaltens der 12C-Protokoll-Slave-Logik. In diesen Implementierungen kann die Multiplexerstufe so angeordnet sein, dass, wenn das Schaltabschlusssignal einen ersten Wert hat, das Schaltsignal daran gehindert wird, die Multiplexerstufe zu konfigurieren, und wenn das Schaltabschlusssignal einen zweiten Wert hat, das Schaltsignal die Multiplexerstufe konfigurieren kann. In diesen Implementierungen kann die Multiplexerstufe den Takteingangsanschluss, den Dateneingangsanschluss und den Datenausgangsanschluss an einen logischen Standard-Hochwert binden, bis das Schaltbeendigungssignal den zweiten Wert aufweist, der es dem Schaltsignal ermöglicht, die Multiplexerstufe zu konfigurieren.
  • In anderen Implementierungen wird die Multiplexerstufe nur als Reaktion auf das Schaltsignal konfiguriert. Bei diesen Implementierungen wird der Entwurf und die Herstellung des I2C-Slave-Geräts vereinfacht, da weniger Bauteile im Steuermodul und in der Multiplexerstufe verwendet werden. Bei diesen Implementierungen sollte die Verarbeitungslogik so ausgelegt sein, dass sie auf Timing-Verletzungen reagiert.
  • Das Steuermodul kann den Adresswert durch Erhöhen oder Verringern des Adresswerts ändern.
  • In Implementierungen ist der in das erste I2C-Slave-Gerät programmierte Adresswert derselbe wie der in das zweite I2C-Slave-Gerät programmierte Adresswert.
  • Gemäß einem anderen Aspekt der Offenbarung wird eine Inter-Integrated Circuit (I2C)-Slave-Vorrichtung bereitgestellt, die Folgendes umfasst: einen Taktstift und einen Datenstift zur Kopplung an einen I2C-Bus zur Kommunikation mit einer I2C-Mastervorrichtung, wobei der I2C-Bus eine serielle Taktleitung und eine serielle Datenleitung umfasst; eine Verarbeitungslogik, die einen Takteingangsanschluss, einen Dateneingangsanschluss und einen Datenausgangsanschluss umfasst; ein Taktleitungsidentifizierungsmodul, das so konfiguriert ist, dass es erkennt, ob der Taktstift oder der Datenstift mit der seriellen Taktleitung verbunden ist; und ein Steuermodul, das so konfiguriert ist, dass es als Reaktion auf eine Erkennung, dass der Datenstift mit der seriellen Taktleitung verbunden ist, Folgendes tut die Kopplung des Datenpins mit dem Takteingangsport der Verarbeitungslogik zu steuern; die Kopplung des Taktpins mit dem Dateneingangsport der Verarbeitungslogik und einem Datenausgangsport der Verarbeitungslogik zu steuern; und eine Geräteadresse für das I2C-Slave-Gerät zu konfigurieren, indem ein in das I2C-Slave-Gerät programmierter Adresswert modifiziert wird.
  • Gemäß einem anderen Aspekt der Offenbarung wird ein computerimplementiertes Verfahren bereitgestellt, das auf einer Inter-Integrated-Circuit-(12C)-Slave-Vorrichtung ausgeführt wird, die einen Taktstift und einen Datenstift zur Kopplung an einen I2C-Bus zur Kommunikation mit einer I2C-Master-Vorrichtung umfasst, wobei der I2C-Bus eine serielle Taktleitung und eine serielle Datenleitung umfasst; und eine Verarbeitungslogik, die einen Takteingangsanschluss, einen Dateneingangsanschluss und einen Datenausgangsanschluss umfasst, wobei das computerimplementierte Verfahren umfasst: Erfassen, ob der Taktstift oder der Datenstift mit der seriellen Taktleitung verbunden ist; und als Reaktion auf eine Erfassung, dass der Datenstift mit der seriellen Taktleitung verbunden ist, umfasst das Verfahren ferner: Steuern des Koppelns des Datenstifts mit dem Takteingangsanschluss der Verarbeitungslogik; Steuern des Koppelns des Taktstifts mit dem Dateneingangsanschluss der Verarbeitungslogik und einem Datenausgangsanschluss der Verarbeitungslogik; und Konfigurieren einer Geräteadresse für das I2C-Slave-Gerät durch Modifizieren eines in das I2C-Slave-Gerät programmierten Adresswerts.
  • Gemäß einem anderen Aspekt der Offenbarung wird ein computerlesbares Speichermedium bereitgestellt, das Anweisungen enthält, die, wenn sie von einem Prozessor eines Computergeräts ausgeführt werden, das Computergerät veranlassen, eines der hier beschriebenen Verfahren durchzuführen.
  • Die Anweisungen können auf einem Träger wie einer Diskette, einer CD- oder DVD-ROM, einem programmierten Speicher wie einem Festwertspeicher (Firmware) oder auf einem Datenträger wie einem optischen oder elektrischen Signalträger bereitgestellt werden. Der Code (und/oder die Daten) zur Implementierung von Ausführungsformen der vorliegenden Offenbarung kann Quell-, Objekt- oder ausführbaren Code in einer herkömmlichen Programmiersprache (interpretiert oder kompiliert) wie C oder Assemblercode, Code zum Einrichten oder Steuern eines ASIC (Application Specific Integrated Circuit) oder FPGA (Field Programmable Gate Array) oder Code für eine Hardwarebeschreibungssprache umfassen.
  • Diese und andere Aspekte werden aus den im Folgenden beschriebenen Ausführungsformen ersichtlich. Der Umfang der vorliegenden Offenbarung soll durch diese Zusammenfassung nicht eingeschränkt werden, auch nicht auf Implementierungen, die notwendigerweise einige oder alle der genannten Nachteile lösen.
  • Figurenliste
  • Einige Ausführungsformen der Offenbarung werden jetzt nur beispielhaft und unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
    • zeigt ein schematisches Blockdiagramm einer Inter-Integrated Circuit (I2C)-Vorrichtung vor einer I2C-Transaktion gemäß den Ausführungsformen der vorliegenden Offenbarung;
    • zeigt eine Slave-Vorrichtung gemäß einer ersten Ausführungsform der vorliegenden Offenbarung;
    • zeigt eine I2C-Transaktion, die von den Pins eines an einen I2C-Bus angeschlossenen Slave-Geräts in einer herkömmlichen Konfiguration gesehen wird; zeigt dieselbe I2C-Transaktion, die von den Pins eines an den I2C-Bus angeschlossenen Slave-Geräts in einer Cross-Connected-Konfiguration gesehen wird; zeigt ein Pad-Switch-Steuermodul des Slave-Geräts gemäß der ersten Ausführungsform der vorliegenden Offenbarung;
    • zeigt eine Multiplexerstufe des Slave-Geräts gemäß der ersten Ausführungsform der vorliegenden Offenbarung;
    • zeigt eine Slave-Vorrichtung gemäß einer zweiten Ausführungsform der vorliegenden Offenbarung;
    • zeigt eine Multiplexer-Stufe des Slave-Geräts gemäß der zweiten Ausführungsform der vorliegenden Offenbarung;
    • zeigt ein Beispiel für eine Zeitsteuerungslogik; und
    • zeigt ein schematisches Blockdiagramm der Inter-Integrated Circuit (I2C)-Vorrichtung nach einer I2C-Transaktion gemäß den Ausführungsformen der vorliegenden Offenbarung.
  • Es wird darauf hingewiesen, dass gleiche Elemente, die in einer oder mehreren der Abbildungen dargestellt sind, durch gleiche Bezugsziffern gekennzeichnet sind.
  • Detaillierte Beschreibung der bevorzugten Ausführungsformen
  • Im Allgemeinen ermöglicht die Offenlegung, dass zwei Slave-Geräte, die mit der gleichen Standardgeräteadresse programmiert sind (z. B. mehrere Instanzen desselben Slave-Geräts), ohne externe Komponenten an denselben I2C-Bus angeschlossen werden können
  • Einige Beispiele für die Lösung sind in den beigefügten Abbildungen dargestellt.
  • zeigt eine Inter-Integrated Circuit (I2C)-Vorrichtung 100. Die I2C-Vorrichtung umfasst ein I2C-Mastergerät 102, das an einen I2C-Bus angeschlossen ist. Die I2C-Master-Vorrichtung 102 kann beispielsweise ein Mikroprozessor oder Mikrocontroller sein. Der I2C-Bus ist ein bidirektionaler serieller Zweidraht-Bus mit einer seriellen Taktleitung (SCL) 104 zum Senden von Taktimpulsen und einer seriellen Datenleitung (SDA) 106 zum seriellen Senden von Daten.
  • In Ausführungsformen der vorliegenden Offenbarung ist die Slave-Geräteanordnung 107 mit dem I2C-Bus gekoppelt. Die Slave-Geräteanordnung 107 umfasst zwei I2C-Slave-Geräte.
  • Wie in dargestellt, umfasst die Slave-Geräteanordnung 107 ein erstes I2C-Slave-Gerät 108, das über den I2C-Bus mit dem I2C-Master-Gerät 102 kommunikationsfähig verbunden ist. Die erste I2C-Slave-Vorrichtung 108 ist in einer herkömmlichen Konfiguration mit dem I2C-Bus verbunden, wobei ein Taktstift (SCL) der ersten I2C-Slave-Vorrichtung 108 mit der seriellen Taktleitung 104 und ein Datenstift (SDA) der ersten I2C-Slave-Vorrichtung 108 mit der seriellen Datenleitung 106 verbunden ist.
  • Die Slave-Bauelementanordnung 107 umfasst ferner ein zweites I2C-Slave-Bauelement 110, das über den I2C-Bus mit dem I2C-Master-Bauelement 102 verbunden ist. Der Taktstift (SCL) des zweiten I2C-Slave-Geräts 110 ist mit der seriellen Datenleitung 106 verbunden, und ein Datenstift (SDA) des zweiten I2C-Slave-Geräts 110 ist mit der seriellen Taktleitung 104 verbunden. Diese Konfiguration wird hier als „kreuzgeschaltete“ Konfiguration bezeichnet.
  • Ein „Pin“ eines Slave-Geräts wird hier auch als „Pad“ bezeichnet.
  • veranschaulicht die Geräteadresse des ersten I2C-Slave-Geräts 108 und des zweiten I2C-Slave-Geräts 110 vor einer I2C-Transaktion auf dem I2C-Bus. Wie in dargestellt, ist ein in das erste I2C-Slave-Gerät 108 programmierter Adresswert (X) derselbe wie ein bei der Herstellung in das zweite I2C-Slave-Gerät 110 programmierter Adresswert (X). Eine oder beide der ersten I2C-Slave-Vorrichtung 108 und der zweiten I2C-Slave-Vorrichtung 110 können eine Sensorvorrichtung sein (z. B. ein Näherungssensor, ein Beschleunigungsmesser, ein Gyroskop, ein Temperatursensor, ein Magnetometer, ein Lichtsensor usw.). Die Ausführungsformen der vorliegenden Offenbarung sind jedoch nicht darauf beschränkt, dass es sich bei dem ersten I2C-Slave-Gerät 108 und dem zweiten I2C-Slave-Gerät 110 um Sensorgeräte handelt.
  • In einigen Ausführungsformen sind das erste I2C-Slave-Gerät 108 und das zweite I2C-Slave-Gerät 110 zwei Instanzen desselben Slave-Geräts (d. h. sie haben dieselbe Teilenummer). Dies ist in dargestellt. Im Zusammenhang mit Ohrstöpselanwendungen ist es beispielsweise erforderlich, dass zwei Proximity-Geräte an denselben I2C-Bus angeschlossen sind. Im Beispiel des Ohrstöpsels besteht ein einzelner Ohrstöpsel aus dem in dargestellten Gerät 100.
  • Ein Gerät enthält die I2C-Vorrichtung 100. Das Gerät ist nicht darauf beschränkt, ein Ohrhörer zu sein. Bei dem Gerät kann es sich beispielsweise um ein Mobiltelefon, ein Tablet oder ein anderes mobiles Computergerät handeln. Das Gerät kann z. B. ein tragbares Gerät sein (z. B. eine Smartwatch oder ein am Kopf getragenes Gerät wie eine intelligente Brille).
  • Ein oder mehrere zusätzliche Slave-Geräte mit anderen Adresswerten als die Slave-Geräte der Slave-Geräteanordnung 107 können ebenfalls mit dem I2C-Bus verbunden werden. In ist beispielsweise ein zusätzliches Slave-Gerät (I2C-Slave2) 112 dargestellt, in das ein Adresswert (A) einprogrammiert ist.
  • Gemäß dem I2C-Protokoll muss jedes an den I2C-Bus angeschlossene Slave-Gerät eine eindeutige Adresse haben. Die hier beschriebene Funktionalität des zweiten I2C-Slave-Geräts 110 berücksichtigt dies.
  • zeigt ein Beispiel für ein Slave-Gerät 200 in einer ersten Konfiguration. Unter Bezugnahme auf weist das zweite I2C-Slave-Gerät 110 die nachstehend beschriebenen Funktionen des Slave-Geräts 200 auf. Die erste I2C-Slave-Vorrichtung 108 kann ebenfalls die unten beschriebene Funktionalität der Slave-Vorrichtung 200 aufweisen.
  • Wie in dargestellt, verfügt das Slave-Gerät 200 über einen Taktstift (SCL) 201 und einen Datenstift (SDA) 203.
  • Der Taktstift 201 ist mit einer SCL-Ausgangstreiberschaltung 202 und einer SCL-Pad-Verzögerungs- und Filterschaltung 204 gekoppelt. Die SCL-Ausgangstreiberschaltung 202 wandelt logische 0/1-Werte von der I2C-Protokoll-Slave-Logik 236 in einen I2C-definierten Spannungspegel auf dem I2C-Bus um. Die SCL-Pad-Delay- und Filterschaltung 204 arbeitet in umgekehrter Richtung und wandelt die I2C-Busspannung in interne logische Pegel von 0/1 um. Die SCL-Pad-Verzögerungs- und Filterschaltung 204 kann eine Filterung durchführen, um Spannungsspitzen auf dem I2C-Bus zu unterdrücken und/oder eine Verzögerung des Signalübergangs einzuführen. Ein Ausgangssignal zur Übertragung über den Taktpin 201 (scl_out) wird durch die SCL-Ausgangstreiberschaltung 202 geleitet, bevor es über den Taktpin 201 auf den I2C-Bus ausgegeben wird. Ein über den Takt-Pin 201 (scl_in) empfangenes Eingangssignal wird durch die SCL-Pad-Verzögerungs- und Filterschaltung 204 geleitet und über den Anschluss 206 an ein Taktleitungsidentifikationsmodul 205 und ein Pad-Switch-Steuermodul 222 ausgegeben.
  • Der Datenpin 203 ist mit einer SDA-Ausgangstreiberschaltung 212 und einer SDA-Pad-Verzögerungs- und Filterschaltung 214 gekoppelt. Die SDA-Ausgangstreiberschaltung 212 wandelt logische 0/1-Werte von der I2C-Protokoll-Slave-Logik 236 in einen I2C-definierten Spannungspegel auf dem I2C-Bus um. Die SDA-Pad-Delay- und Filterschaltung 214 arbeitet in umgekehrter Richtung und wandelt die I2C-Busspannung in interne logische Pegel von 0/1 um. Die SDA-Pad-Verzögerungs- und Filterschaltung 214 kann eine Filterung durchführen, um Spannungsspitzen auf dem I2C-Bus zu unterdrücken und/oder eine Verzögerung des Signalübergangs einzuführen. Ein Ausgangssignal für die Übertragung über den Datenpin 203 (sda_out) wird durch die SDA-Ausgangstreiberschaltung 212 geleitet, bevor es über den Datenpin 203 auf den I2C-Bus ausgegeben wird. Ein über den Daten-Pin empfangenes Eingangssignal (sda_in) wird durch die SDA-Pad-Verzögerungs- und Filterschaltung 214 geleitet und über den Anschluss 216 an das Taktleitungsidentifizierungsmodul 205 und das Pad-Switch-Steuermodul 222 ausgegeben.
  • Das Taktleitungserkennungsmodul 205 ist so konfiguriert, dass es erkennt, ob der Taktstift oder der Datenstift des Nebengeräts mit der seriellen Taktleitung 104 verbunden ist. Das Taktleitungserkennungsmodul 205 kann auf verschiedene Weise implementiert werden. Ein Implementierungsbeispiel ist in dargestellt.
  • Wie in dargestellt, umfasst das Taktleitungsidentifizierungsmodul 205 einen ersten Flankenzähler 208, der das scl_in-Signal am Anschluss 206 als Eingang empfängt. Der erste Flankenzähler 208 ist so konfiguriert, dass er die Flanken des über den Taktstift 201 empfangenen Signals (scl_in) zählt. Der erste Flankenzähler 208 kann zum Beispiel ein positiver Flankenzähler sein.
  • Das Taktleitungsidentifikationsmodul 205 umfasst auch einen zweiten Flankenzähler 218, der das sda_in-Signal am Anschluss 216 als Eingang empfängt. Der zweite Flankenzähler 218 ist so konfiguriert, dass er die Flanken des über den Datenpin 203 empfangenen Signals (sda_in) zählt, wobei der zweite Flankenzähler 218 beispielsweise ein positiver Flankenzähler sein kann.
  • Der Ausgang des ersten Flankenzählers 208 ist als Eingang mit einem Addierer und Komparator 210 verbunden (siehe Eingang „A“). Der Ausgang des zweiten Flankenzählers 218 ist ebenfalls als Eingang mit dem Addierer und Komparator 210 gekoppelt (siehe Eingang „B“).
  • Ein Addierer und Komparator 210 wird verwendet, um den vom ersten Flankenzähler 208 erhaltenen Zählerstand A und einen vom zweiten Flankenzähler 218 erhaltenen Zählerstand B zu summieren und einen logischen Hochwert als Ausgang an das Pad-Schalter-Steuermodul 222 zu liefern, wenn diese Summierung einen vorgegebenen Schwellenwert überschreitet. Solange diese Bedingung nicht erfüllt ist, gibt der Addierer und Komparator 210 einen logischen Low-Wert an das Pad-Switch-Steuermodul 222 aus. Der vorgegebene Schwellenwert kann z. B. auf (mindestens) zwei Zählwerte festgelegt werden (d. h. als Mindestanforderung muss die Summe drei Zählwerte betragen). In einem Beispiel wird der vorgegebene Schwellenwert auf sieben Zählungen festgelegt (die Summierung muss acht Zählungen ergeben).
  • Der Ausgang des ersten Flankenzählers 208 ist auch als Eingang mit einem Komparator 220 gekoppelt (siehe Eingang „A“). Der Ausgang des zweiten Flankenzählers 218 ist ebenfalls als Eingang mit dem Komparator 220 gekoppelt (siehe Eingang „B“).
  • Der Komparator 220 vergleicht den vom ersten Flankenzähler 208 erhaltenen Zählerstand A und den vom zweiten Flankenzähler 218 erhaltenen Zählerstand B und stellt fest, ob der vom zweiten Flankenzähler 218 erhaltene Zählerstand B größer ist als der vom ersten Flankenzähler 208 erhaltene Zählerstand A.
  • Die serielle Taktleitung 104 schaltet schneller um als die serielle Datenleitung 106. Wenn also der Taktstift 201 mit der seriellen Taktleitung 104 verbunden ist (d. h. das Slave-Gerät ist in der herkömmlichen Konfiguration mit dem I2C-Bus gekoppelt), dann ist der vom ersten Flankenzähler 208 erhaltene Zählerstand A größer als der vom zweiten Flankenzähler 218 erhaltene Zählerstand B, und der Komparator 220 gibt einen logischen Low-Wert an das Pad-Switch-Steuermodul 222 aus. In diesem Szenario wird das über den Takt-Pin 201 (scl_in) empfangene Eingangssignal ein Eingangstaktsignal sein, das über den Daten-Pin 203 (sda_in) empfangene Eingangssignal wird ein Eingangsdatensignal sein, außerdem sollte über den Daten-Pin 203 ein Datenausgangssignal zur Übertragung vom Slave-Gerät zum I2C-Master-Gerät 102 übertragen werden.
  • Ist dagegen der Daten-Pin 203 mit der seriellen Taktleitung 104 verbunden (d. h. das Slave-Gerät ist in der Cross-Connected-Konfiguration mit dem I2C-Bus gekoppelt), dann ist der vom zweiten Flankenzähler 218 erhaltene Zählerstand B größer als der vom ersten Flankenzähler 208 erhaltene Zählerstand A, und der Komparator 220 gibt einen logisch hohen Wert an das Pad-Switch-Steuermodul 222 aus. In diesem Szenario wird das über den Takt-Pin 201 (scl_in) empfangene Eingangssignal ein Eingangsdatensignal sein, das über den Daten-Pin 203 (sda_in) empfangene Eingangssignal wird ein Eingangstaktsignal sein, außerdem sollte ein Datenausgangssignal zur Übertragung vom Slave-Gerät zum I2C-Master-Gerät 102 über den Takt-Pin 201 übertragen werden.
  • Wie in dargestellt, ist das Pad-Switch-Steuermodul 222 so angeordnet, dass es als Eingänge den Ausgang des Addierers und des Komparators 210, das scl_in-Signal am Anschluss 206, das sda_in-Signal am Anschluss 216 und den Ausgang des Komparators 220 empfängt.
  • Das Pad-Switch-Steuermodul 222 ist so konfiguriert, dass es die Verbindungen zwischen dem Clock-Pin 201 und der I2C-Protokoll-Slave-Logik 236 steuert. Das Pad-Switch-Steuermodul 222 ist auch so konfiguriert, dass es die Verbindungen zwischen dem Daten-Pin 203 und der I2C-Protokoll-Slave-Logik 236 steuert. Die i2C-Protokoll-Slave-Logik 236 ist so konfiguriert, dass sie vom I2C-Mastergerät 102 empfangene Daten verarbeitet und an dieses überträgt. Die i2C-Protokoll-Slave-Logik 236 ist so angeordnet, dass sie ein Datenausgangssignal (sda_out) von einem Datenausgangsanschluss der I2C-Protokoll-Slave-Logik 236 zur Übertragung an das I2C-Master-Gerät 102 über den I2C-Bus bereitstellt. Die I2C-Protokoll-Slave-Logik 236 umfasst zusätzlich einen Dateneingangsanschluss (sda_in) zum Empfangen von Daten, die von der I2C-Master-Vorrichtung 102 übertragen werden, und einen Takteingangsanschluss (scl_in) zum Empfangen eines von der I2C-Master-Vorrichtung 102 übertragenen Taktsignals.
  • Im Beispiel-Slave-Gerät 200 ist das Pad-Switch-Steuermodul 222 so konfiguriert, dass es die jeweiligen Verbindungen zwischen dem Takt-Pin 201 und dem Daten-Pin 203 mit der I2C-Protokoll-Slave-Logik 236 steuert, indem es ein Schaltsignal (I2C_PAD_SWITCH) erzeugt, das an Anschluss 226 ausgegeben wird, und indem es ein Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) erzeugt, das an Anschluss 224 ausgegeben wird.
  • Das Pad-Switch-Steuermodul 222 gibt das Schaltsignal (I2C_PAD_SWITCH) und das Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) an eine Multiplexerstufe 228a aus, um die Kopplung des Taktpins 201 und des Datenpins 203 des Slave-Geräts mit der I2C-Protokoll-Slave-Logik 236 zu steuern.
  • In operation, in response to a detection by the clock line identification module 205 that the data pin 203 is connected to the serial clock line 104 (i.e. the slave device is connected to the I2C bus in the cross connected configuration), the pad switch control module 222 is configured to: (i) die Kopplung des Datenpins 203 mit dem Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 so zu steuern, dass das über den Datenpin 203 empfangene Eingangstaktsignal dem Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird; und (ii) Steuerkopplung des Taktpins 201 mit dem Dateneingangsport (sda_in) der I2C-Protokoll-Slave-Logik 236 und dem Datenausgangsport der I2C-Protokoll-Slave-Logik 236, so dass ein über den Taktpin 201 empfangenes Eingangsdatensignal dem Dateneingangsport der I2C-Protokoll-Slave-Logik 236 zugeführt wird und ein von der I2C-Protokoll-Slave-Logik 236 zur Übertragung an die I2C-Master-Vorrichtung 102 ausgegebenes Datensignal über den Taktpin 201 übertragen wird.
  • Das heißt, auf der Grundlage der Identifizierung der Taktleitung vertauscht der Prozess die Leitungen, die von den Pins zur I2C-Protokoll-Slave-Logik 236 führen. Das heißt, wenn der Daten-Pin 203 mit der seriellen Taktleitung 104 verbunden ist, dann vertauscht das Pad-Switch-Steuermodul 222 die Pin-Ausgänge, die zur I2C-Protokoll-Slave-Logik 236 gehen, als Eingänge, und das sda_out-Signal von der I2C-Protokoll-Slave-Logik wird mit der SCL-Ausgangstreiberschaltung 202 verbunden.
  • Im Betrieb ist das Pad-Switch-Steuermodul 222 als Reaktion auf eine Erkennung durch das Taktleitungsidentifikationsmodul 205, dass der Taktstift 201 mit der seriellen Taktleitung 104 verbunden ist (d.h. das Slave-Gerät in der konventionellen Konfiguration mit dem I2C-Bus verbunden ist), ist das Pad-Switch-Steuermodul 222 so konfiguriert, dass es: (i) die Kopplung des Taktpins 201 mit dem Takteingangsport der I2C-Protokoll-Slave-Logik 236 aufrechtzuerhalten, so dass das über den Taktpin 201 empfangene Eingangstaktsignal an den Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 geliefert wird; und (ii) Aufrechterhalten der Kopplung des Datenstifts 203 mit dem Dateneingangsanschluss der I2C-Protokoll-Slave-Logik 236 und dem Datenausgangsanschluss der I2C-Protokoll-Slave-Logik 236, so dass ein über den Datenstift 203 empfangenes Eingangsdatensignal dem Dateneingangsanschluss der I2C-Protokoll-Slave-Logik 236 zugeführt wird und ein von der I2C-Protokoll-Slave-Logik 236 zur Übertragung an die I2C-Master-Vorrichtung 102 ausgegebenes Datensignal über den Datenstift 203 übertragen wird.
  • Die Funktionsweise des Pad-Switch-Steuermoduls 222 und der Multiplexerstufe 228a, die in dem Beispiel-Slave-Gerät 200 gemäß der ersten Konfiguration implementiert sind, wird im Folgenden unter Bezugnahme auf die und näher beschrieben.
  • Zunächst wird auf verwiesen, die eine I2C-Transaktion 300 zeigt, die von Pins eines an den I2C-Bus angeschlossenen Slave-Geräts in einer konventionellen Konfiguration gesehen wird, und auf , die dieselbe I2C-Transaktion 350 zeigt, die von Pins eines an einen I2C-Bus angeschlossenen Slave-Geräts in einer Cross-Connected-Konfiguration gesehen wird.
  • Gemäß dem I2C-Protokoll beginnt jede von einem Master-Gerät initiierte I2C-Transaktion mit einer START-Bedingung und endet mit einer STOP-Bedingung.
  • Wie in gezeigt, wird gemäß dem I2C-Protokoll in einer I2C-Transaktion 300, wenn das Slave-Gerät in einer konventionellen Konfiguration an den I2C-Bus angeschlossen ist, ein STOP-Zustand genannt, wenn das am Daten-Pin 203 SDA empfangene Signal 302 (das in der konventionellen Konfiguration von der seriellen Datenleitung 106 stammt) von niedrig auf hoch (posedge) geht, während das am Takt-Pin 201 SCL empfangene Signal 304 hoch ist (das in der konventionellen Konfiguration von der seriellen Taktleitung 104 stammt). In der vorliegenden Offenlegung wird dies als pstop (positive stop) 312 bezeichnet.
  • Der Vollständigkeit halber sei angemerkt, dass in der konventionellen Konfiguration, wenn das am Datenstift 203 SDA (der in der konventionellen Konfiguration von der seriellen Datenleitung 106 kommt) empfangene Signal 302 von hoch auf niedrig (negedge) geht, wenn das am Taktstift 201 SCL (der in der konventionellen Konfiguration von der seriellen Taktleitung 104 kommt) empfangene Signal 304 hoch ist, dies als START-Bedingung bezeichnet wird. In der vorliegenden Offenlegung wird dies als pstart (positiver Start) 306 bezeichnet.
  • Wie in gezeigt, wird derselbe STOP-Zustand erkannt, wenn das am Taktstift 201 SCL (der in der kreuzgeschalteten Konfiguration von der seriellen Datenleitung 106 kommt) empfangene Signal von niedrig auf hoch (posedge) geht, wenn das am Datenstift 203 SDA empfangene Signal 302 hoch ist (das in der kreuzgeschalteten Konfiguration von der Taktleitung 104 kommt), und dies wird nstop (negativer Stopp) 310 genannt.
  • Der Vollständigkeit halber sei angemerkt, dass in der kreuzgeschalteten Konfiguration dieselbe START-Bedingung erkannt wird, wenn das am Taktstift 201 SCL (der in der kreuzgeschalteten Konfiguration von der seriellen Datenleitung 106 stammt) empfangene Signal von hoch auf niedrig (negedge) geht, wenn das am Datenstift 203 SDA (der in der kreuzgeschalteten Konfiguration von der Taktleitung 104 stammt) empfangene Signal 302 hoch ist, und dies als nstart (negativer Start) 308 bezeichnet wird.
  • Es ist anzumerken, dass die pstop-Bedingung nur einmal in einer I2C-Transaktion in der konventionellen Konfiguration erkannt wird (d.h. wenn die Pad-Verbindungen korrekt sind: SCL -> SCL-Bus, SDA-> SDA-Bus) und ähnlich wird die nstop-Bedingung nur einmal in einer I2C-Transaktion in der Cross-Connected-Konfiguration erkannt (d.h. wenn die Pad-Verbindungen vertauscht sind: SCL -> SDA-Bus, SDA -> SCL-Bus). Nach einem pstop- oder nstop-Ereignis ist der I2C-Bus für eine im Protokoll festgelegte Zeitspanne im Leerlauf, und es ist vorteilhaft, wenn ein interner Pad-Tausch durchgeführt wird, während der I2C-Bus im Leerlauf ist.
  • zeigt ein Beispiel für die Anordnung des Tamponschalter-Steuermoduls 222.
  • Wie in dargestellt, umfasst das Pad-Switch-Steuermodul 222 ein erstes Flip-Flop 402 (als D-Flip-Flop dargestellt) und ein zweites Flip-Flop 408 (als D-Flip-Flop dargestellt). Der Ausgang des Addierers und Komparators 210 ist mit einem Eingang des ersten Flipflops 402 verbunden. Der Ausgang des Komparators 220 ist mit einem Eingang des zweiten Flipflops 408 gekoppelt. Sowohl das erste Flipflop 402 als auch das zweite Flipflop 408 werden durch dasselbe Taktsignal angesteuert, das von der Zeitsteuerungslogik 600 bereitgestellt werden kann (später ausführlicher beschrieben).
  • Das Pad-Switch-Steuermodul 222 umfasst einen nstop-Erkennungsblock 404, der als Eingänge das über den Taktstift 201 an der Verbindung 206 empfangene Eingangssignal und das über den Datenstift 203 an der Verbindung 216 empfangene Eingangssignal empfängt. Der nstop-Erkennungsblock 404 ist so konfiguriert, dass er bei Erkennung der oben beschriebenen nstop-Bedingung einen logischen High-Wert ausgibt. Bis die nstop-Bedingung erkannt wird, ist der nstop-Erkennungsblock 404 so konfiguriert, dass er einen logischen Low-Wert ausgibt.
  • Das Pad-Switch-Steuermodul 222 umfasst auch einen pstop-Erkennungsblock 410, der als Eingänge das über den Taktstift 201 an der Verbindung 206 empfangene Eingangssignal und das über den Datenstift 203 an der Verbindung 216 empfangene Eingangssignal empfängt. Der pstop-Erkennungsblock 410 ist so konfiguriert, dass er bei Erkennung der oben beschriebenen pstop-Bedingung einen logisch hohen Wert ausgibt. Bis die pstop-Bedingung erkannt wird, ist der pstop-Erkennungsblock 404 so konfiguriert, dass er einen logischen Low-Wert ausgibt.
  • Der Ausgang des nstop-Erkennungsblocks 404 ist mit einem Multiplexer 406 verbunden. Der Multiplexer 406 erhält auch den Ausgang des pstop-Erkennungsblocks 410 als Eingang. Der Ausgang des zweiten Flipflops 408 wird als Steuereingang für den Multiplexer 406 bereitgestellt. Wenn der Ausgang des zweiten Flipflops 408 niedrig ist, ist der Multiplexer 406 so konfiguriert, dass er den Ausgang des pstop-Erfassungsblocks 410 als einen Ausgang des Multiplexers 406 bereitstellt. Wenn der Ausgang des zweiten Flipflops 408 high ist, ist der Multiplexer 406 so konfiguriert, dass er den Ausgang des nstop-Erkennungsblocks 404 als einen Ausgang des Multiplexers 406 bereitstellt.
  • Ein UND-Gatter 412 erhält als ersten Eingang den Ausgang des ersten Flipflops 402. Das UND-Gatter 412 empfängt als zweiten Eingang den Ausgang des Multiplexers 406. Der Ausgang des UND-Gatters 412 wird als Taktsignal für ein drittes Flipflop 416 (als D-Flipflop dargestellt) und ein viertes Flipflop 418 (als D-Flipflop dargestellt) bereitgestellt. Der Dateneingang des dritten Flipflops 416 ist auf High geschaltet. Das dritte Flipflop 416 liefert das Schaltabschluss-Signal (l2C_PAD_SWITCH_DONE), das am Anschluss 224 ausgegeben wird. Der Ausgang des zweiten Flipflops 408 wird dem Dateneingang des vierten Flipflops 418 zugeführt. Das vierte Flipflop 418 liefert das Schaltsignal (I2C_PAD_SWITCH), das am Anschluss 226 ausgegeben wird.
  • Der Betrieb des Pad-Switch-Steuermoduls 222 wird zunächst beschrieben, wenn das Slave-Gerät 200 in einer herkömmlichen Konfiguration an den I2C-Bus angeschlossen ist, beispielsweise wenn das erste I2C-Slave-Gerät 108 die Funktionalität des Slave-Geräts 200 hat.
  • Beim Einschalten des Slave-Geräts 200 haben das Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) und das Schaltsignal (I2C_PAD_SWITCH) einen niedrigen Wert.
  • Der Addierer und Komparator 210 summiert den vom ersten Flankenzähler 208 erhaltenen Zählerstand A und einen vom zweiten Flankenzähler 218 erhaltenen Zählerstand B und liefert einen logischen Hochwert als Ausgang an das erste Flipflop 402, wenn diese Summierung einen vorgegebenen Schwellenwert überschreitet.
  • Die serielle Taktleitung 104 schaltet schneller um als die serielle Datenleitung 106. Wenn also das Slave-Gerät 200 in der herkömmlichen Konfiguration an den I2C-Bus angeschlossen ist, ist der vom ersten Flankenzähler 208 erhaltene Zählerstand A größer als der vom zweiten Flankenzähler 218 erhaltene Zählerstand B, und der Komparator 220 gibt einen logisch niedrigen Wert an das zweite Flipflop 408 aus. Das zweite Flip-Flop 408 gibt daher einen logischen Niedrigwert aus.
  • Wie oben erwähnt, wird der Ausgang des zweiten Flipflops 408 als Steuereingang für den Multiplexer 406 bereitgestellt. Insbesondere wenn der Ausgang des zweiten Flipflops 408 niedrig ist, ist der Multiplexer 406 so konfiguriert, dass er den Ausgang des pstop-Erkennungsblocks 410 als einen Ausgang des Multiplexers 406 bereitstellt.
  • Wenn der pstop-Erkennungsblock 410 die oben beschriebene pstop-Bedingung erkennt. Der Ausgang des Multiplexers 406 wechselt von einem niedrigen zu einem hohen Wert, der dem zweiten Eingang des UND-Gatters 412 zugeführt wird.
  • Der erste Eingang des UND-Gatters 412 hat ebenfalls einen hohen Wert, da das erste Flipflop 402 einen hohen Wert ausgibt, sobald die Summe der Zählungen den vorgegebenen Schwellenwert überschreitet. Wenn also die pstop-Bedingung erkannt wird, wechselt der Ausgang des UND-Gatters 412, der als Taktsignal sowohl an das dritte Flipflop 416 (als D-Flipflop dargestellt) als auch an das vierte Flipflop 418 (als D-Flipflop dargestellt) geliefert wird, von einem niedrigen auf einen hohen Wert. Dies bewirkt, dass der Wert des Schaltabschluss-Signals (I2C_PAD_SWITCH_DONE) von einem niedrigen auf einen hohen Wert übergeht. Das Schaltsignal (I2C_PAD_SWITCH) hat weiterhin einen niedrigen Wert, da der niedrige Ausgang des zweiten Flipflops 408 an den Dateneingang des vierten Flipflops 418 geliefert wird.
  • Wie unter Bezugnahme auf 4b näher beschrieben wird, bewirkt dies, dass (i) die Kopplung des Taktpins 201 mit dem Takteingangsanschluss der I2C-Protokoll-Slave-Logik 236 aufrechterhalten wird, so dass das über den Taktpin 201 empfangene Eingangstaktsignal an den Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 geliefert wird; und (ii) die Kopplung des Datenstifts 203 mit dem Dateneingangsanschluss der I2C-Protokoll-Slave-Logik 236 und dem Datenausgangsanschluss der I2C-Protokoll-Slave-Logik 236, die so aufrechtzuerhalten ist, dass ein über den Datenstift 203 empfangenes Eingangsdatensignal dem Dateneingangsanschluss der I2C-Protokoll-Slave-Logik 236 zugeführt wird und ein von der I2C-Protokoll-Slave-Logik 236 zur Übertragung an die I2C-Master-Vorrichtung 102 ausgegebenes Datensignal über den Datenstift 203 übertragen wird.
  • Darüber hinaus behält das Slave-Gerät 200 den bei der Herstellung in das Slave-Gerät programmierten Adresswert als Geräteadresse für das Slave-Gerät bei. Dies wird durch den Wert des Schaltersignals (I2C_PAD_SWITCH) gesteuert, das als Steuereingang an den Multiplexer 229 (siehe geliefert wird.
  • Wenn das Schaltsignal (I2C_PAD_SWITCH) niedrig ist, ist der Multiplexer 229 so konfiguriert, dass er den Adresswert 230, der bei der Herstellung in das Slave-Gerät programmiert wurde, an die I2C-Protokoll-Slave-Logik 236 am Anschluss 234 zur Verwendung als Geräteadresse für das Slave-Gerät liefert. Wenn das Schaltsignal (I2C_PAD_SWITCH) hoch ist, ist der Multiplexer 229 so konfiguriert, dass er eine modifizierte Geräteadresse 232 an die I2C-Protokoll-Slave-Logik 236 am Anschluss 234 zur Verwendung als Geräteadresse für das Slave-Gerät liefert. Wenn das Slave-Gerät 200 in einer herkömmlichen Konfiguration an den I2C-Bus angeschlossen ist, ist das Schaltsignal (I2C_PAD_SWITCH) niedrig, so dass das Slave-Gerät 200 den Adresswert, der bei der Herstellung in das Slave-Gerät programmiert wurde, als Geräteadresse für das Slave-Gerät beibehält.
  • Der Betrieb des Pad-Switch-Steuermoduls 222 wird nun beschrieben, wenn das Slave-Gerät 200 mit dem I2C-Bus in einer Cross-Connected-Konfiguration verbunden ist, z. B. wenn das zweite I2C-Slave-Gerät 110 die Funktionalität des Slave-Geräts 200 hat.
  • Wie bereits erwähnt, haben beim Einschalten des Slave-Geräts 200 das Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) und das Schaltsignal (I2C_PAD_SWITCH) einen niedrigen Wert.
  • Der Addierer und Komparator 210 summiert den vom ersten Flankenzähler 208 erhaltenen Zählerstand A und einen vom zweiten Flankenzähler 218 erhaltenen Zählerstand B und liefert einen logischen Hochwert als Ausgang an das erste Flipflop 402, wenn diese Summierung einen vorgegebenen Schwellenwert überschreitet.
  • Die serielle Taktleitung 104 schaltet schneller um als die serielle Datenleitung 106. Wenn also das Slave-Gerät 200 in der kreuzgeschalteten Konfiguration an den I2C-Bus angeschlossen ist, ist der vom zweiten Flankenzähler 218 erhaltene Zählerstand B größer als der vom ersten Flankenzähler 208 erhaltene Zählerstand A, und der Komparator 220 gibt einen logisch hohen Wert an das zweite Flip-Flop 408 aus. Das zweite Flipflop 408 gibt daher einen logisch hohen Wert aus.
  • Wie oben erwähnt, wird der Ausgang des zweiten Flipflops 408 als Steuereingang für den Multiplexer 406 bereitgestellt. Insbesondere ist der Multiplexer 406 so konfiguriert, dass er den Ausgang des nstop-Erkennungsblocks 404 als Ausgang des Multiplexers 406 bereitstellt, wenn der Ausgang des zweiten Flipflops 408 High ist.
  • Wenn der nstop-Erkennungsblock 404 die oben beschriebene nstop-Bedingung feststellt. Der Ausgang des Multiplexers 406 wechselt von einem niedrigen zu einem hohen Wert, der dem zweiten Eingang des UND-Gatters 412 zugeführt wird.
  • Der erste Eingang des UND-Gatters 412 hat ebenfalls einen hohen Wert, da das erste Flipflop 402 einen hohen Wert ausgibt, sobald die Summe der Zählungen den vorgegebenen Schwellenwert überschreitet. Wenn also die nstop-Bedingung erkannt wird, wechselt der Ausgang des UND-Gatters 412, der als Taktsignal sowohl an das dritte Flipflop 416 (als D-Flipflop dargestellt) als auch an das vierte Flipflop 418 (als D-Flipflop dargestellt) geliefert wird, von einem niedrigen auf einen hohen Wert. Dies bewirkt, dass der Wert des Schaltabschluss-Signals (I2C_PAD_SWITCH_DONE) von einem niedrigen auf einen hohen Wert übergeht. Das Schaltsignal (I2C_PAD_SWITCH) geht ebenfalls von einem niedrigen auf einen hohen Wert über, da der hohe Ausgang des zweiten Flipflops 408 an den Dateneingang des vierten Flipflops 418 geliefert wird.
  • Wie unter Bezugnahme auf näher beschrieben wird, bewirkt dies, dass (i) der Datenpin 203 mit dem Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 gekoppelt wird, so dass das über den Datenpin 203 empfangene Eingangstaktsignal dem Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird; und (ii) den Taktstift 201, der mit dem Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 und dem Datenausgangsanschluss der I2C-Protokoll-Slave-Logik 236 zu koppeln ist, so dass ein über den Taktstift 201 empfangenes Eingangsdatensignal dem Dateneingangsanschluss der I2C-Protokoll-Slave-Logik 236 zugeführt wird und ein von der I2C-Protokoll-Slave-Logik 236 zur Übertragung an das I2C-Mastergerät 102 ausgegebenes Datensignal über den Taktstift 201 übertragen wird.
  • Außerdem konfiguriert das Slave-Gerät 200 eine Geräteadresse für das Slave-Gerät, indem es den in das Slave-Gerät programmierten Adresswert ändert. Dies wird über den Wert des Schaltersignals (I2C_PAD_SWITCH) gesteuert, das als Steuereingang dem Multiplexer 229 zugeführt wird (siehe .
  • Wenn das Slave-Gerät 200 an den I2C-Bus in einer Querverbindungskonfiguration angeschlossen ist, ist das Schaltsignal (I2C_PAD_SWITCH) hoch und der Multiplexer 229 ist so konfiguriert, dass er eine modifizierte Geräteadresse 232 an die I2C-Protokoll-Slave-Logik 236 zur Verwendung als Geräteadresse für das Slave-Gerät liefert. Insbesondere modifiziert das Slave-Gerät 200 den bei der Herstellung in das Slave-Gerät programmierten Adresswert, um eine neue Geräteadresse für das Slave-Gerät zu erzeugen. Dadurch wird sichergestellt, dass das zweite I2C-Slave-Gerät 110 eine eindeutige Geräteadresse gemäß dem I2C-Protokoll hat. Wie man sieht, kann diese Modifikation auf verschiedene Weise durchgeführt werden, so dass das erste I2C-Slave-Gerät 108 und das zweite I2C-Slave-Gerät 110 unterschiedliche Geräteadressen haben. Beispielsweise kann das Slave-Gerät 200 den in das Slave-Gerät programmierten Adresswert um einen ganzzahligen Wert (z. B. 1) erhöhen, um die neue Geräteadresse für das Slave-Gerät zu erzeugen. Alternativ kann das Slave-Gerät 200 den in das Slave-Gerät einprogrammierten Adresswert um einen ganzzahligen Wert (z.B. 1) dekrementieren, um die neue Geräteadresse für das Slave-Gerät zu erzeugen. Selbstverständlich sind auch andere Änderungen des in das Slave-Gerät programmierten Adresswerts möglich.
  • Die im Slave-Gerät 200 gemäß der ersten Konfiguration verwendete Multiplexer-Stufe 228a wird nun unter Bezugnahme auf 4b näher beschrieben.
  • Die Multiplexerstufe 228a, die im Slave-Gerät 200 gemäß der ersten Konfiguration verwendet wird, ist sowohl als Reaktion auf das Schaltsignal (I2C_PAD_SWITCH) als auch auf das Schaltabschluss-Signal (12C_PAD SWITCH_DONE) konfigurierbar.
  • Wie in dargestellt, empfängt die Multiplexerstufe 228a sowohl das Schaltsignal (I2C_PAD_SWITCH) als auch das Signal zum Abschluss des Schaltvorgangs (12C_PAD SWITCH_DONE).
  • Die Multiplexerstufe 228a umfasst eine erste Schicht von Multiplexern, die aus vier Multiplexern besteht: Multiplexer 451, Multiplexer 453, Multiplexer 455 und Multiplexer 457. Jeder Multiplexer in der ersten Schicht empfängt das Schaltsignal (I2C_PAD_SWITCH) als Steuereingang.
  • Die Multiplexerstufe 228a umfasst auch eine zweite Schicht von Multiplexern mit vier Multiplexern: Multiplexer 452, Multiplexer 454, Multiplexer 456 und Multiplexer 458. Jeder Multiplexer in der zweiten Schicht empfängt das Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) als Steuereingang.
  • Wie in dargestellt, empfängt der Multiplexer 451 das über den Taktpin 201 empfangene Eingangssignal (scl_in) und das über den Datenpin 203 empfangene Eingangssignal (sda_in). Wenn das Schaltsignal (I2C_PAD_SWITCH) einen niedrigen Wert hat, gibt der Multiplexer 451 das über den Taktpin 201 empfangene Eingangssignal (scl_in) aus. Wenn das Schaltsignal (I2C_PAD_SWITCH) einen hohen Wert hat, gibt der Multiplexer 451 das über den Datenpin 203 empfangene Eingangssignal (sda_in) aus. Der Ausgang des Multiplexers 451 ist mit einem Eingang des Multiplexers 452 gekoppelt, und der andere Eingang des Multiplexers 452 ist auf High geschaltet. Der Ausgang des Multiplexers 452 ist mit dem Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 gekoppelt.
  • Der Multiplexer 453 empfängt das über den Taktpin 201 empfangene Eingangssignal (scl_in) und das über den Datenpin 203 empfangene Eingangssignal (sda_in). Wenn das Schaltsignal (I2C_PAD_SWITCH) einen niedrigen Wert hat, gibt der Multiplexer 451 das über den Datenpin 203 empfangene Eingangssignal (sda_in) aus. Wenn das Schaltsignal (I2C_PAD_SWITCH) einen hohen Wert hat, gibt der Multiplexer 451 das über den Taktpin 201 empfangene Eingangssignal (scl_in) aus. Der Ausgang des Multiplexers 453 ist mit einem Eingang des Multiplexers 454 gekoppelt, und der andere Eingang des Multiplexers 454 ist auf High geschaltet. Der Ausgang des Multiplexers 454 ist mit dem Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 gekoppelt.
  • Der Datenausgangsanschluss (sda_out) der I2C-Protokoll-Slave-Logik 236 ist mit einem ersten Eingang des Multiplexers 456 und mit einem ersten Eingang des Multiplexers 458 verbunden. Ein zweiter Eingang des Multiplexers 456 und ein zweiter Eingang des Multiplexers 458 sind beide auf High geschaltet. Der Ausgang des Multiplexers 456 ist mit einem Eingang des Multiplexers 455 gekoppelt, und der andere Eingang des Multiplexers 455 ist auf „high“ geschaltet. Der Ausgang des Multiplexers 455 ist mit dem Eingang der SDA-Ausgangstreiberschaltung 212 verbunden. Der Ausgang des Multiplexers 458 ist mit einem Eingang des Multiplexers 457 gekoppelt, und der andere Eingang des Multiplexers 457 ist auf „high“ geschaltet. Der Ausgang des Multiplexers 457 ist mit dem Eingang der SCL-Ausgangstreiberschaltung 202 gekoppelt.
  • Wie bereits erwähnt, haben beim Einschalten des Slave-Geräts 200 das Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) und das Schaltsignal (I2C_PAD_SWITCH) einen niedrigen Wert.
  • Wie aus ersichtlich, ist die Multiplexerstufe 228a so angeordnet, dass, wenn das Schaltabschlusssignal (I2C_PAD_SWITCH_DONE) niedrig ist (ein erster Wert), standardmäßig alle internen Ausgangs- und Eingangssignale des Slave-Geräts (an/von der I2C-Protokoll-Slave-Logik 236) auf einen logischen hohen Wert gebunden sind und das Schaltsignal (I2C_PAD_SWITCH) daran gehindert wird, die Multiplexerstufe 228a zu konfigurieren. Wenn das Signal zur Beendigung des Schaltvorgangs (I2C_PAD_SWITCH_DONE) High ist (ein zweiter Wert), kann der Wert des Schaltsignals die Multiplexerstufe konfigurieren.
  • Wenn das Slave-Gerät 200 in der konventionellen Konfiguration an den I2C-Bus angeschlossen ist, bleibt als Reaktion auf die Erkennung der pstop-Bedingung das Schaltsignal (I2C_PAD_SWITCH) niedrig und das Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) geht von einem niedrigen auf einen hohen Wert über.
  • Dies verursacht:
    • - das über den Taktstift 201 empfangene Eingangssignal (scl_in) durch den Multiplexer 451 auszugeben und dann durch den Multiplexer 452 auszugeben, so dass das über den Taktstift 201 empfangene Eingangssignal (scl_in) an den Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 geliefert wird;
    • - das über den Datenstift 203 empfangene Eingangssignal (sda_in) durch den Multiplexer 453 auszugeben und dann durch den Multiplexer 454 auszugeben, so dass das über den Datenstift 203 empfangene Eingangssignal (sda_in) dem Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird; und
    • - das vom Datenausgangsanschluss (sda_out) der I2C-Protokoll-Slave-Logik 236 ausgegebene Datensignal, das vom Multiplexer 456 ausgegeben und dann vom Multiplexer 455 ausgegeben wird, so dass das Datensignal dem Datenstift 203 zur Ausgabe auf der seriellen Datenleitung 106 zugeführt wird.
  • Diese Änderungen werden durchgeführt, wenn sich der I2C-Bus im Leerlauf befindet (nach der Erkennung der pstop-Bedingung).
  • Wenn das Slave-Gerät 200 an den I2C-Bus in der Konfiguration mit Querverbindung angeschlossen ist, gehen als Reaktion auf die Erkennung der nstop-Bedingung sowohl das Schaltsignal (I2C_PAD_SWITCH) als auch das Schaltabschluss-Signal (I2C_PAD_SWITCH_DONE) von einem niedrigen auf einen hohen Wert über.
  • Dies verursacht:
    • - das über den Daten-Pin 203 empfangene Eingangssignal (sda_in) durch den Multiplexer 451 auszugeben und dann durch den Multiplexer 452 auszugeben, so dass das über den Daten-Pin 203 empfangene Eingangssignal (sda_in) an den Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 geliefert wird;
    • - das über den Taktstift 201 empfangene Eingangssignal (scl_in) durch den Multiplexer 453 auszugeben und dann durch den Multiplexer 454 auszugeben, so dass das über den Taktstift 201 empfangene Eingangssignal (scl_in) an den Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 geliefert wird; und
    • - das vom Datenausgangsanschluss (sda_out) der I2C-Protokoll-Slave-Logik 236 ausgegebene Datensignal, das vom Multiplexer 458 ausgegeben und dann vom Multiplexer 457 ausgegeben werden soll, so dass das Datensignal dem Taktstift 201 zur Ausgabe auf der seriellen Datenleitung 106 zugeführt wird.
  • Diese Änderungen werden durchgeführt, wenn sich der I2C-Bus im Leerlauf befindet (nach der Erkennung der nstop-Bedingung).
  • Das Slave-Gerät 200 gemäß der oben beschriebenen ersten Konfiguration benötigt nach dem Einschalten eine I2C-Transaktion, um auf I2C-Transaktionen vom I2C-Master-Gerät 102 mit seiner Geräteadresse zu reagieren. Insbesondere in Ausführungsformen, bei denen sowohl das erste I2C-Slave-Gerät 108 als auch das zweite I2C-Slave-Gerät 110 über die hierin beschriebene Funktionalität des Slave-Geräts 200 verfügt (z. B. wenn es sich um mehrere Instanzen desselben Slave-Geräts handelt), ist nach dem Einschalten eine I2C-Transaktion für beide I2C-Slave-Geräte erforderlich, damit sie beginnen, auf I2C-Transaktionen vom I2C-Master-Gerät 102 mit ihrer jeweiligen Geräteadresse zu reagieren.
  • Diese erforderliche I2C-Transaktion kann beispielsweise eine I2C-Transaktion zwischen dem I2C-Mastergerät 102 und einem an den I2C-Bus angeschlossenen I2C-Slavegerät sein, das nicht Teil der Slavegeräteanordnung 107 ist, z. B. zwischen dem I2C-Mastergerät 102 und dem zusätzlichen Slavegerät 112. Das heißt, die erforderliche I2C-Transaktion wird weder an das erste I2C-Slave-Gerät 108 noch an das zweite I2C-Slave-Gerät 110 adressiert. Alternativ kann die erforderliche I2C-Transaktion auch eine Dummy-I2C-Transaktion zwischen dem I2C-Master-Gerät 102 und dem ersten I2C-Slave-Gerät 108 oder dem zweiten I2C-Slave-Gerät 110 sein.
  • Bei Verwendung des Slave-Geräts 200 gemäß der oben beschriebenen ersten Konfiguration besteht kein Risiko eines Zeitfehlers oder Fehlverhaltens der I2C-Protokoll-Slave-Logik 236.
  • zeigt ein Beispiel für ein Slave-Gerät 500 in einer zweiten Konfiguration. Unter Bezugnahme auf weist das zweite I2C-Slave-Gerät 110 die nachstehend beschriebenen Funktionen des Slave-Geräts 500 auf. Das erste I2C-Slave-Gerät 108 kann auch die Funktionalität des unten beschriebenen Slave-Geräts 500 aufweisen.
  • Das Beispiel-Slave-Gerät 500 gemäß einer zweiten Konfiguration unterscheidet sich von dem oben beschriebenen Slave-Gerät 200 durch die Implementierung des Pad-Switch-Steuermoduls 222 und der Multiplexer-Stufe 228.
  • Wie in dargestellt, wird der Ausgang des UND-Gatters 412 an ein einzelnes Flip-Flop 418 (als D-Flip-Flop dargestellt) geleitet - das dritte Flip-Flop 416 des Slave-Geräts 200 ist nicht vorhanden.
  • Im Beispiel-Slave-Gerät 500 ist das Pad-Switch-Steuermodul 222 so konfiguriert, dass es die jeweiligen Verbindungen zwischen dem Takt-Pin 201 und dem Daten-Pin 203 zur I2C-Protokoll-Slave-Logik 236 steuert, indem es das Schaltsignal (I2C_PAD_SWITCH) erzeugt, das am Anschluss 226 ausgegeben wird. Im Vergleich zum Slave-Gerät 200 wird gemäß der zweiten Konfiguration vom Pad-Switch-Steuermodul 222 kein Schaltabschluss-Signal (12C_PAD_SWITCH_DONE) ausgegeben.
  • Das Pad-Switch-Steuermodul 222 gibt das Schaltsignal (I2C_PAD_SWITCH) an eine Multiplexerstufe 228b aus, um die Kopplung des Taktpins 201 und des Datenpins 203 des Slave-Geräts mit der I2C-Protokoll-Slave-Logik 236 zu steuern.
  • In operation, in response to a detection by the clock line identification module 205 that the data pin 203 is connected to the serial clock line 104 (i.e. the slave device is connected to the I2C bus in the cross connected configuration), the pad switch control module 222 is configured to: (i) die Kopplung des Datenpins 203 mit dem Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 so zu steuern, dass das über den Datenpin 203 empfangene Eingangstaktsignal dem Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird; und (ii) Steuerkopplung des Taktpins 201 mit dem Dateneingangsport (sda_in) der I2C-Protokoll-Slave-Logik 236 und dem Datenausgangsport der I2C-Protokoll-Slave-Logik 236, so dass ein über den Taktpin 201 empfangenes Eingangsdatensignal dem Dateneingangsport der I2C-Protokoll-Slave-Logik 236 zugeführt wird und ein von der I2C-Protokoll-Slave-Logik 236 zur Übertragung an die I2C-Master-Vorrichtung 102 ausgegebenes Datensignal über den Taktpin 201 übertragen wird.
  • Das heißt, dass der Prozess auf der Grundlage der Taktleitungsidentifizierung die von den Pins zur I2C-Protokoll-Slave-Logik 236 führenden Leitungen vertauscht. Das heißt, wenn der Daten-Pin 203 mit der seriellen Taktleitung 104 verbunden ist, dann vertauscht das Pad-Switch-Steuermodul 222 die Pin-Ausgänge, die zur I2C-Protokoll-Slave-Logik 236 gehen, als Eingänge, und das sda_out-Signal von der I2C-Protokoll-Slave-Logik wird mit der SCL-Ausgangstreiberschaltung 202 verbunden.
  • Im Betrieb ist das Pad-Switch-Steuermodul 222 als Reaktion auf eine Erkennung durch das Taktleitungsidentifikationsmodul 205, dass der Taktstift 201 mit der seriellen Taktleitung 104 verbunden ist (d.h. das Slave-Gerät in der konventionellen Konfiguration mit dem I2C-Bus verbunden ist), ist das Pad-Switch-Steuermodul 222 so konfiguriert, dass: (i) die Kopplung des Taktpins 201 mit dem Takteingangsport der I2C-Protokoll-Slave-Logik 236 aufrechtzuerhalten, so dass das über den Taktpin 201 empfangene Eingangstaktsignal an den Takteingangsport (scl_in) der I2C-Protokoll-Slave-Logik 236 geliefert wird; und (ii) Aufrechterhalten der Kopplung des Datenpins 203 mit dem Dateneingangsanschluss der I2C-Protokoll-Slave-Logik 236 und dem Datenausgangsanschluss der I2C-Protokoll-Slave-Logik 236, so dass ein über den Datenpin 203 empfangenes Eingangsdatensignal dem Dateneingangsanschluss der I2C-Protokoll-Slave-Logik 236 zugeführt wird und ein von der I2C-Protokoll-Slave-Logik 236 zur Übertragung an die I2C-Master-Vorrichtung 102 ausgegebenes Datensignal über den Datenpin 203 übertragen wird.
  • Die Funktionalität der Multiplexerstufe 228b, die in dem Beispiel-Slave-Gerät 500 gemäß der zweiten Konfiguration implementiert ist, wird im Folgenden unter Bezugnahme auf näher beschrieben.
    Die Multiplexerstufe 228b, die im Slave-Gerät 500 gemäß der zweiten Konfiguration verwendet wird, ist nur in Reaktion auf das Schaltsignal (I2C_PAD_SWITCH) konfigurierbar.
  • Die Multiplexerstufe 228a umfasst eine einzige Schicht von Multiplexern mit vier Multiplexern, Multiplexer 551, Multiplexer 552, Multiplexer 553 und Multiplexer 554. Jeder Multiplexer in dieser einzelnen Schicht empfängt das Schaltsignal (I2C_PAD_SWITCH) als Steuereingang.
  • Wie in dargestellt, empfängt der Multiplexer 551 das über den Taktstift 201 empfangene Eingangssignal (scl_in) und das über den Datenstift 203 empfangene Eingangssignal (sda_in). Der Ausgang des Multiplexers 551 ist mit dem Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 verbunden.
  • Der Multiplexer 552 empfängt das über den Taktpin 201 empfangene Eingangssignal (scl_in) und das über den Datenpin 203 empfangene Eingangssignal (sda_in). Der Ausgang des Multiplexers 552 ist mit dem Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 verbunden.
  • Der Datenausgangsanschluss (sda_out) der I2C-Protokoll-Slave-Logik 236 ist mit einem ersten Eingang des Multiplexers 553 und mit einem ersten Eingang des Multiplexers 554 verbunden. Ein zweiter Eingang des Multiplexers 553 und ein zweiter Eingang des Multiplexers 554 sind beide auf High geschaltet. Der Ausgang des Multiplexers 553 ist mit dem Eingang der SDA-Ausgangstreiberschaltung 212 verbunden. Der Ausgang des Multiplexers 554 ist mit dem Eingang der SCL-Ausgangstreiberschaltung 202 gekoppelt.
  • Beim Einschalten des Slave-Geräts 500 hat das Schaltsignal (I2C_PAD_SWITCH) einen niedrigen Wert.
  • Dies verursacht:
    • - das über den Taktstift 201 empfangene Eingangssignal (scl_in) durch den Multiplexer 551 auszugeben, so dass das über den Taktstift 201 empfangene Eingangssignal (scl_in) dem Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird;
    • - das über den Datenstift 203 empfangene Eingangssignal (sda_in) durch den Multiplexer 552 auszugeben, so dass das über den Datenstift 203 empfangene Eingangssignal (sda_in) dem Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird; und
    • - das vom Datenausgangsanschluss (sda_out) der I2C-Protokoll-Slave-Logik 236 ausgegebene Datensignal, das vom Multiplexer 553 ausgegeben werden soll, so dass das Datensignal dem Datenstift 203 zur Ausgabe auf der seriellen Datenleitung 106 zugeführt wird.
  • Wenn das Slave-Gerät 500 in der konventionellen Konfiguration an den I2C-Bus angeschlossen ist, bleibt als Reaktion auf die Erkennung der pstop-Bedingung das Schaltsignal (I2C_PAD_SWITCH) niedrig, was zu keiner Änderung des oben genannten Zustands der Multiplexerstufe 228a führt.
  • In diesem Szenario ist das Slave-Gerät 500 nach dem Einschalten in der Lage, jede an es gerichtete I2C-Transaktion sofort zu verarbeiten.
  • Wenn das Slave-Gerät 500 an den I2C-Bus in der Konfiguration mit Querverbindung angeschlossen ist, wechselt das Schaltsignal (I2C_PAD_SWITCH) als Reaktion auf die Erkennung der nstop-Bedingung von einem niedrigen zu einem hohen Wert.
  • Dies verursacht:
    • - das über den Daten-Pin 203 empfangene Eingangssignal (sda_in), das vom Multiplexer 551 auszugeben ist, so dass das über den Daten-Pin 203 empfangene Eingangssignal (sda_in) dem Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird;
    • - das über den Taktstift 201 empfangene Eingangssignal (scl_in) durch den Multiplexer 552 auszugeben, so dass das über den Taktstift 201 empfangene Eingangssignal (scl_in) dem Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 zugeführt wird; und
    • - das vom Datenausgangsanschluss (sda_out) der I2C-Protokoll-Slave-Logik 236 ausgegebene Datensignal, das vom Multiplexer 554 ausgegeben werden soll, so dass das Datensignal dem Taktstift 201 zur Ausgabe auf der seriellen Datenleitung 106 zugeführt wird.
  • In diesem Szenario benötigt das Slave-Gerät 500 nach dem Einschalten eine I2C-Transaktion, um auf I2C-Transaktionen vom I2C-Master-Gerät 102 mit seiner Geräteadresse zu reagieren. Insbesondere in Ausführungsformen, bei denen sowohl das erste I2C-Slave-Gerät 108 als auch das zweite I2C-Slave-Gerät 110 über die hierin beschriebene Funktionalität des Slave-Geräts 200 verfügt (z. B. wenn es sich um mehrere Instanzen desselben Slave-Geräts handelt), ist nach dem Einschalten eine I2C-Transaktion für beide I2C-Slave-Geräte erforderlich, damit sie beginnen, auf I2C-Transaktionen vom I2C-Master-Gerät 102 mit ihrer jeweiligen Geräteadresse zu reagieren. Wie oben erläutert, kann diese erforderliche I2C-Transaktion beispielsweise eine I2C-Transaktion zwischen dem I2C-Master-Gerät 102 und einem an den I2C-Bus angeschlossenen I2C-Slave-Gerät, das nicht Teil der Slave-Geräteanordnung 107 ist, oder eine Dummy-I2C-Transaktion zwischen dem I2C-Master-Gerät 102 und dem ersten I2C-Slave-Gerät 108 oder dem zweiten I2C-Slave-Gerät 110 sein.
  • Die I2C-Protokoll-Slave-Logik 236 des Slave-Geräts 500 gemäß der zweiten Konfiguration sollte sorgfältig entworfen werden, um auf Timing-Verletzungen zu achten. Insbesondere empfängt der Takteingangsanschluss (scl_in) der I2C-Protokoll-Slave-Logik 236 in der Querverbindungskonfiguration Daten von der seriellen Datenleitung 106. Analog dazu empfängt der Dateneingangsanschluss (sda_in) der I2C-Protokoll-Slave-Logik 236 ein Taktsignal von der seriellen Taktleitung 104. Aufgrund dieser vertauschten Beziehung sollte die I2C-Protokoll-Slave-Logik 236 so ausgelegt sein, dass sie nicht in einen unerwünschten Zustand gerät.
  • Sowohl in der Slave-Vorrichtung 200 gemäß der ersten Konfiguration als auch in der Slave-Vorrichtung 500 gemäß der zweiten Konfiguration werden das erste Flip-Flop 402 und das zweite Flip-Flop 408 durch dasselbe Taktsignal gesteuert. Dieses Taktsignal kann von der Zeitsteuerungslogik 600 bereitgestellt werden, ein Beispiel hierfür ist in dargestellt.
  • Da der Eingang des ersten Flipflops 402 und des zweiten Flipflops 408 jeweils auf der Grundlage des über den Takt-Pin 201 empfangenen Eingangssignals (scl_in) und des über den Daten-Pin 203 empfangenen Eingangssignals (sda_in) gesteuert wird (d. h. Takt- und Datensignale unabhängig davon, wie das Slave-Gerät mit dem I2C-Bus verbunden ist), ist die Timing-Logik 600 vorgesehen, um die Timing-Anforderungen des ersten Flipflops 402 und des zweiten Flipflops 408 zu erfüllen.
  • zeigt eine Möglichkeit, wie die Zeitsteuerungslogik 600 implementiert werden kann, es sind jedoch auch andere Implementierungen möglich. Die in dargestellte Beispiel-Zeitsteuerungslogik 600 empfängt als Eingänge das über den Taktstift 201 empfangene Eingangssignal (scl_in) und das über den Datenstift 203 empfangene Eingangssignal (sda_in). In einem ersten Zweig 602 wird das Eingangssignal (sda_in) invertiert und verzögert, bevor es als erster Eingang einem ersten UND-Gatter zugeführt wird, wobei das erste UND-Gatter auch das Eingangssignal (sda_in) als zweiten Eingang erhält. Im ersten Zweig 602 wird das Eingangssignal (scl_in) invertiert und verzögert, bevor es als erster Eingang einem zweiten UND-Gatter zugeführt wird, wobei das zweite UND-Gatter auch das Eingangssignal (scl_in) als zweiten Eingang empfängt. Der Ausgang des ersten UND-Gatters und des zweiten UND-Gatters werden als jeweilige Eingänge einem ODER-Gatter zugeführt, dessen Ausgang als erster Eingang einem Multiplexer 606 zugeführt wird. In einem zweiten Zweig 604 wird das über den Datenpin 203 empfangene Eingangssignal (sda_in) verzögert und als zweiter Eingang dem Multiplexer 606 zugeführt. Der Multiplexer 606 wird über das Steuersignal 608 gesteuert. Das heißt, der Ausgang des Multiplexers 606 ist der Ausgang des ersten Zweigs 602 oder der Ausgang des zweiten Zweigs 604 in Abhängigkeit von dem Wert des Steuersignals 608. Der Multiplexer 606 kann ein einmalig programmierbares Gerät sein. Der Ausgang des Multiplexers 606 ist mit dem Takteingang des ersten Flipflops 402 und des zweiten Flipflops 408 verbunden (610).
  • Im Betrieb gibt es zwei Möglichkeiten der Takterzeugung, die durch das Steuersignal 608 ausgewählt werden.
    Wenn 608=0 ist, wird das verzögerte sda_in-Signal als Takt verwendet, so dass der D-Eingang des ersten Flipflops 402 und des zweiten Flipflops 408 beruhigt wird, bevor der Takt seinen Taktpin erreicht, um eine Verletzung des Setup/Hold-Timings der Flipflops zu vermeiden.
  • Wenn 608=1 ist, wird das gleiche, oben erläuterte Verzögerungskonzept verwendet, um ein Setup/Hold-Timing zu vermeiden, jedoch mit zusätzlicher Takterzeugung. In diesem Fall erzeugt jeder Low-High-Übergang am scl-in- oder sda_in-Signal einen Taktimpuls für das erste Flipflop 402 und das zweite Flipflop 408.
    zeigt ein schematisches Blockdiagramm der I2C-Vorrichtung 100 nach einer I2C-Transaktion.
  • Nach einer I2C-Transaktion, die nicht an das erste I2C-Slave-Gerät 108 und das zweite I2C-Slave-Gerät 110 (in diesem Beispiel Instanzen desselben Slave-Geräts) adressiert ist, oder einer Dummy-12C-Transaktion (wenn keine anderen Slave-Geräte an den I2C-Bus angeschlossen sind) wird die Pad-Swapping-Erkennung abgeschlossen. Das erste I2C-Slave-Gerät 108, das in der herkömmlichen Konfiguration an den I2C-Bus angeschlossen ist (Slave1 Instanz 1), behält seine Standardadresse. Beim zweiten I2C-Slave-Gerät 110 (Slave1 Instanz 2) sind jedoch die Pins vertauscht, so dass die Logik dieses Szenario erkennt und den in das zweite I2C-Slave-Gerät programmierten Adresswert ändert, wie in dargestellt.
  • Die in der vorliegenden Offenlegung beschriebenen Techniken können in verschiedenen Anwendungen eingesetzt werden. Im kommerziellen Mobilfunkgeschäft müssen beispielsweise bei drahtlosen Ohrhörern zwei I2C-Slave-Geräte an denselben I2C-Bus angeschlossen werden. Die vorliegende Offenlegung kann auf jede Anwendung angewendet werden, bei der zwei Slave-Geräte (z. B. zwei Instanzen desselben Slave-Geräts) an denselben I2C-Bus angeschlossen werden müssen.
  • Die hier beschriebenen Ausführungsformen beziehen sich zwar auf ein oder mehrere Slave-Geräte mit dedizierter Hardwareschaltung, doch kann jede der hier beschriebenen Funktionen eines Slave-Geräts durch Software, Firmware, Hardware (z. B. feste Logikschaltungen) oder eine Kombination dieser Implementierungen realisiert werden. Die hier verwendeten Begriffe „Modul“, „Funktionalität“, „Stufe“, „Block“ und „Logik“ stehen allgemein für Software, Firmware, Hardware oder eine Kombination davon. Im Falle einer Software-Implementierung stellt das Modul, die Funktionalität oder die Logik einen Programmcode dar, der bei Ausführung auf einem Prozessor (z. B. CPU oder CPUs) bestimmte Aufgaben ausführt. Der Programmcode kann in einem oder mehreren computerlesbaren Speichergeräten gespeichert werden. Beispiele für ein computerlesbares Speichermedium sind ein Speicher mit wahlfreiem Zugriff (RAM), ein Festwertspeicher (ROM), eine optische Disk, ein Flash-Speicher, ein Festplattenspeicher und andere Speichervorrichtungen, die magnetische, optische und andere Techniken zur Speicherung von Anweisungen und anderen Daten verwenden können.
  • Obwohl die Offenbarung in Form von bevorzugten Ausführungsformen, wie oben dargelegt, beschrieben wurde, ist es zu verstehen, dass diese Ausführungsformen nur zur Veranschaulichung dienen und dass die Ansprüche nicht auf diese Ausführungsformen beschränkt sind. Der Fachmann kann im Hinblick auf die Offenbarung Modifikationen und Alternativen vornehmen, die in den Anwendungsbereich der beigefügten Ansprüche fallen. Jedes Merkmal, das in der vorliegenden Beschreibung offenbart oder dargestellt ist, kann in jede beliebige Ausführungsform eingebaut werden, sei es allein oder in geeigneter Kombination mit jedem anderen hier offengelegten oder dargestellten Merkmal.
  • Bezugszeichenliste
  • 100
    Inter-Integrierte Schaltung (I2C) Gerät
    102
    I2C-Master-Gerät 102
    104
    serielle Taktleitung
    106
    serielle Datenleitung
    107
    Slave-Geräteanordnung
    108
    erstes I2C-Slave-Gerät
    110
    Sekunden I2C-Slave-Gerät
    112
    zusätzliches Slave-Gerät
    200
    Slave-Gerät gemäß einer ersten Konfiguration
    201
    Taktgeberstift
    202
    SCL-Ausgangstreiberschaltung 202
    203
    Datenstift
    204
    SCL-Pad-Verzögerungs- und Filterschaltung
    205
    Modul zur Identifizierung von Taktleitungen
    206
    Verbindung
    208
    erster Kantenzähler
    210
    Addierer und Komparator
    212
    SDA-Ausgangstreiberschaltung
    214
    SDA-Pad-Verzögerungs- und Filterschaltung
    216
    Verbindung
    218
    Zweiter Randzähler
    220
    Komparator
    222
    Polsterschalter-Steuermodul
    224
    Verbindung
    226
    Verbindung 228 Amultiplexerstufe des Slave-Geräts gemäß der ersten Konfiguration 228b Multiplexer-Stufe des Slave-Geräts gemäß der zweiten Konfiguration
    229
    Multiplexer
    230
    Adresswert, der bei der Herstellung in das Slave-Gerät einprogrammiert wurde
    232
    geänderte Geräteadresse
    234
    Verbindung
    236
    I2C-Protokoll-Slave-Logik
    300
    I2C-Transaktion, die von den Pins eines an den I2C-Bus angeschlossenen Slave-Geräts in einer herkömmlichen Konfiguration gesehen wird
    302
    am Datenpin empfangenes Signal
    304
    am Clock-Pin empfangenes Signal
    306
    positive Startbedingung
    308
    negative Startbedingung
    310
    negative Stoppbedingung
    312
    positive Stopp-Bedingung
    350
    I2C-Transaktion, die von den Pins eines an den I2C-Bus angeschlossenen Slave-Geräts in einer Konfiguration mit Querverbindung gesehen wird
    402
    Erster Flip-Flop
    404
    nStop-Erkennungsblock
    406
    Multiplexer
    408
    Sekunden-Flip-Flop
    410
    pstop-Erkennungsblock
    412
    AND Tor
    416
    dritter Flip-Flop
    418
    vierte Kippstufe
    451
    Multiplexer
    452
    Multiplexer
    453
    Multiplexer
    454
    Multiplexer
    456
    Multiplexer
    457
    Multiplexer
    458
    Multiplexer
    500
    Slave-Gerät gemäß einer zweiten Konfiguration
    551
    Multiplexer
    552
    Multiplexer
    553
    Multiplexer
    554
    Multiplexer
    600
    Timing-Logik
    602
    erste Niederlassung
    604
    zweite Niederlassung
    606
    Multiplexer
    608
    Steuersignal
    610
    Verbindung

Claims (18)

  1. I2C-Vorrichtung (Inter-Integrated Circuit) (100), die Folgendes umfasst: ein I2C-Master-Gerät (102); und eine erste I2C-Slave-Vorrichtung (108), die mit der Master-Vorrichtung über einen I2C-Bus kommunizierend verbunden ist, der eine serielle Taktleitung (104) und eine serielle Datenleitung (106) umfasst, wobei ein Taktstift der ersten Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist und ein Datenstift der ersten Slave-Vorrichtung mit der seriellen Datenleitung verbunden ist; eine zweite I2C-Slave-Vorrichtung (110), die mit der Master-Vorrichtung über den I2C-Bus kommunikativ verbunden ist, wobei ein Taktstift der zweiten I2C-Slave-Vorrichtung mit der seriellen Datenleitung verbunden ist und der Datenstift der zweiten I2C-Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist; wobei ein in die erste I2C-Slave-Vorrichtung programmierter Adresswert der gleiche ist wie ein in die zweite I2C-Slave-Vorrichtung programmierter Adresswert; wobei die zweite I2C-Slave-Vorrichtung umfasst: Verarbeitungslogik (236) mit einem Takteingangsanschluss, einem Dateneingangsanschluss und einem Datenausgangsanschluss; ein Taktleitungsidentifikationsmodul (205), das so konfiguriert ist, dass es erkennt, ob der Taktstift oder der Datenstift der zweiten I2C-Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist; und ein Steuermodul (222), das so konfiguriert ist, dass es als Reaktion auf eine Erkennung, dass der Datenstift mit der seriellen Taktleitung verbunden ist, Folgendes tut: Steuerung der Kopplung des Datenpins der zweiten I2C-Slave-Vorrichtung mit dem Takteingangsport der Verarbeitungslogik; Steuerung der Kopplung des Taktpins der zweiten I2C-Slave-Vorrichtung mit dem Dateneingangsanschluss der Verarbeitungslogik und einem Datenausgangsanschluss der Verarbeitungslogik; und eine Geräteadresse für das zweite I2C-Slave-Gerät konfigurieren, indem der in das zweite I2C-Slave-Gerät programmierte Adresswert geändert wird.
  2. I2C-Vorrichtung nach Anspruch 1, wobei das Steuermodul so konfiguriert ist, dass es als Reaktion auf eine Erkennung, dass der Taktstift der zweiten I2C-Slave-Vorrichtung mit der seriellen Taktleitung verbunden ist, Folgendes tut: Aufrechterhaltung der Kopplung des Taktpins der zweiten I2C-Slave-Vorrichtung mit dem Takteingangsport der Verarbeitungslogik; Aufrechterhaltung der Kopplung des Datenpins der zweiten I2C-Slave-Vorrichtung mit dem Dateneingangsanschluss der Verarbeitungslogik und einem Datenausgangsanschluss der Verarbeitungslogik; und den in das zweite I2C-Slave-Gerät einprogrammierten Adresswert als Geräteadresse für das zweite I2C-Slave-Gerät beibehalten.
  3. I2C-Vorrichtung nach Anspruch 1 oder 2, wobei das Taktleitungsidentifikationsmodul umfasst: einen ersten Flankenzähler (208), der so konfiguriert ist, dass er Flanken eines über den Taktstift der zweiten I2C-Vorrichtung empfangenen Signals zählt; und einen zweiten Flankenzähler (218), der so konfiguriert ist, dass er Flanken eines über den Datenpin der zweiten I2C-Vorrichtung empfangenen Signals zählt; wobei das Taktleitungsidentifizierungsmodul so konfiguriert ist, dass es durch Vergleichen des ersten Zählwerts und des zweiten Zählwerts erkennt, ob der Taktpin oder der Datenpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, sobald eine Summierung eines ersten Zählwerts durch den ersten Flankenzähler und eines zweiten Zählwerts durch den zweiten Flankenzähler einen vorbestimmten Schwellenwert überschreitet.
  4. I2C-Vorrichtung nach Anspruch 3, wobei das Taktleitungsidentifikationsmodul so konfiguriert ist, dass es: Erkennen, dass der Datenpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, basierend auf dem zweiten Zählwert, der den ersten Zählwert überschreitet; und Erkennen, dass der Taktstift der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, basierend auf dem ersten Zählwert, der den zweiten Zählwert überschreitet.
  5. I2C-Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die zweite I2C-Slave-Vorrichtung weiterhin umfasst: eine Multiplexerstufe (228), die den Taktstift und den Datenstift der zweiten I2C-Vorrichtung mit der Verarbeitungslogik koppelt, wobei das Steuermodul so konfiguriert ist, dass es ein Schaltsignal erzeugt und an die Multiplexerstufe überträgt, um die Kopplung des Datenstifts und des Taktstifts der I2C-Slave-Vorrichtung mit der Verarbeitungslogik zu steuern, wobei das Schaltsignal einen Wert hat, der davon abhängt, ob der Taktstift oder der Datenstift der Vorrichtung mit der seriellen Taktleitung verbunden ist.
  6. I2C-Vorrichtung nach Anspruch 5, wobei das Steuermodul so konfiguriert ist, dass es als Reaktion auf eine Erkennung, dass der Taktstift der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, das Schaltsignal mit einem ersten Wert erzeugt und überträgt, um die Multiplexerstufe so zu konfigurieren, dass der Taktstift der zweiten I2C-Vorrichtung mit dem Takteingangsanschluss der Verarbeitungslogik gekoppelt ist und der Datenstift der zweiten I2C-Vorrichtung mit dem Dateneingangsanschluss und dem Datenausgangsanschluss der Verarbeitungslogik gekoppelt ist.
  7. I2C-Vorrichtung nach Anspruch 5 oder 6, wobei als Reaktion auf die Feststellung, dass der Datenpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, das Steuermodul so konfiguriert ist, dass es das Schaltsignal mit einem zweiten Wert erzeugt und überträgt, um die Multiplexerstufe so zu konfigurieren, dass der Datenpin der zweiten I2C-Vorrichtung mit dem Takteingangsport der Verarbeitungslogik gekoppelt ist und der Taktpin der zweiten I2C-Vorrichtung mit dem Dateneingangsport und dem Datenausgangsport der Verarbeitungslogik gekoppelt ist.
  8. I2C-Vorrichtung nach Anspruch 7, wobei das Steuermodul so konfiguriert ist, dass es erkennt, dass der I2C-Bus im Leerlauf ist, und das Schaltsignal mit dem zweiten Wert als Reaktion auf das Erkennen, dass der I2C-Bus im Leerlauf ist, erzeugt und sendet.
  9. I2C-Vorrichtung nach Anspruch 8, wobei das Steuermodul so konfiguriert ist, dass es, wenn der Datenpin der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, erkennt, dass der I2C-Bus im Leerlauf ist, indem es einen Übergang des über den Taktpin empfangenen Signals von einem logisch niedrigen Wert zu einem logisch hohen Wert erkennt, während das über den Datenpin empfangene Signal auf einem logisch hohen Wert ist.
  10. I2C-Vorrichtung nach Anspruch 8 oder 9, wobei das Steuermodul so konfiguriert ist, dass es, wenn der Taktstift der zweiten I2C-Vorrichtung mit der seriellen Taktleitung verbunden ist, erkennt, dass der I2C-Bus im Leerlauf ist, indem es einen Übergang des über den Datenstift empfangenen Signals von einem logisch niedrigen Wert zu einem logisch hohen Wert erkennt, während das über den Taktstift empfangene Signal einen logisch hohen Wert hat.
  11. I2C-Vorrichtung nach einem der Ansprüche 5 bis 10, wobei das Steuermodul so konfiguriert ist, dass es: ein Schaltabschluss-Signal zu erzeugen; und das Schaltabschlusssignal an die Multiplexerstufe (228a) übertragen, wobei die Multiplexerstufe als Reaktion sowohl auf das Schaltsignal als auch auf das Schaltabschlusssignal konfigurierbar ist.
  12. I2C-Vorrichtung nach Anspruch 11, wobei die Multiplexerstufe so angeordnet ist, dass, wenn das Schaltabschlusssignal einen ersten Wert hat, das Schaltsignal daran gehindert wird, die Multiplexerstufe zu konfigurieren, und wenn das Schaltabschlusssignal einen zweiten Wert hat, das Schaltsignal die Multiplexerstufe konfigurieren kann.
  13. I2C-Vorrichtung nach Anspruch 12, wobei die Multiplexerstufe den Takteingangsanschluss, den Dateneingangsanschluss und den Datenausgangsanschluss mit einem logisch hohen Standardwert verknüpft, bis das Schaltabschlusssignal den zweiten Wert aufweist, der es dem Schaltsignal ermöglicht, die Multiplexerstufe zu konfigurieren.
  14. I2C-Vorrichtung nach Anspruch 11, wobei die Multiplexerstufe (228b) nur auf das Schaltsignal hin konfiguriert ist.
  15. I2C-Vorrichtung nach einem der vorhergehenden Ansprüche, wobei das Steuermodul so konfiguriert ist, dass es den in die zweite I2C-Slave-Vorrichtung programmierten Adresswert durch Inkrementieren oder Dekrementieren des Adresswerts ändert.
  16. I2C-Slave-Vorrichtung (Inter-Integrated Circuit, I2C) (108, 110), umfassend: einen Taktstift (201) und einen Datenstift (203) zur Kopplung an einen I2C-Bus zur Kommunikation mit einer I2C-Master-Vorrichtung (102), wobei der I2C-Bus eine serielle Taktleitung (104) und eine serielle Datenleitung (106) umfasst; Verarbeitungslogik (236) mit einem Takteingangsanschluss, einem Dateneingangsanschluss und einem Datenausgangsanschluss; ein Taktleitungsidentifikationsmodul (205), das so konfiguriert ist, dass es erkennt, ob der Taktstift oder der Datenstift mit der seriellen Taktleitung verbunden ist; und ein Steuermodul (222), das so konfiguriert ist, dass es als Reaktion auf eine Erkennung, dass der Datenstift mit der seriellen Taktleitung verbunden ist, Folgendes tut: Steuerung der Kopplung des Datenpins mit dem Takteingangsport der Verarbeitungslogik; Steuerung der Kopplung des Taktstifts mit dem Dateneingangsanschluss der Verarbeitungslogik und einem Datenausgangsanschluss der Verarbeitungslogik; und eine Geräteadresse für das I2C-Slave-Gerät konfigurieren, indem ein in das I2C-Slave-Gerät programmierter Adresswert geändert wird.
  17. Computerimplementiertes Verfahren, das auf einer I2C-Slave-Vorrichtung (Inter-Integrated Circuit) ausgeführt wird, die einen Taktstift (201) und einen Datenstift (203) zur Kopplung an einen I2C-Bus zur Kommunikation mit einer I2C-Master-Vorrichtung (102) umfasst, wobei der I2C-Bus eine serielle Taktleitung (104) und eine serielle Datenleitung (106) umfasst; und eine Verarbeitungslogik (236), die einen Takteingangsanschluss, einen Dateneingangsanschluss und einen Datenausgangsanschluss umfasst, wobei das computerimplementierte Verfahren umfasst: Erkennen, ob der Taktstift oder der Datenstift mit der seriellen Taktleitung verbunden ist; und als Reaktion auf die Feststellung, dass der Datenstift mit der seriellen Taktleitung verbunden ist, wobei das Verfahren ferner umfasst: Steuerung der Kopplung des Datenpins mit dem Takteingangsport der Verarbeitungslogik; Steuerung der Kopplung des Taktstifts mit dem Dateneingangsanschluss der Verarbeitungslogik und einem Datenausgangsanschluss der Verarbeitungslogik; und Konfigurieren einer Geräteadresse für das I2C-Slave-Gerät durch Ändern eines in das I2C-Slave-Gerät programmierten Adresswertes.
  18. Computerlesbares Speichermedium, das Anweisungen enthält, die, wenn sie von einem Prozessor einer I2C-Slave-Vorrichtung (Inter-Integrated Circuit) ausgeführt werden, die Slave-Vorrichtung veranlassen, das Verfahren nach Anspruch 17 durchzuführen.
DE112020002619.1T 2019-05-31 2020-05-28 Ein inter-integrated circuit (i2c) gerät Pending DE112020002619T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962855339P 2019-05-31 2019-05-31
US62/855,339 2019-05-31
PCT/EP2020/064904 WO2020239944A1 (en) 2019-05-31 2020-05-28 An inter-integrated circuit (i2c) apparatus

Publications (1)

Publication Number Publication Date
DE112020002619T5 true DE112020002619T5 (de) 2022-03-17

Family

ID=70968943

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020002619.1T Pending DE112020002619T5 (de) 2019-05-31 2020-05-28 Ein inter-integrated circuit (i2c) gerät

Country Status (5)

Country Link
US (1) US11829319B2 (de)
CN (1) CN113906402B (de)
DE (1) DE112020002619T5 (de)
TW (1) TWI824154B (de)
WO (1) WO2020239944A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064771B (zh) * 2021-03-04 2023-02-28 山东英信计算机技术有限公司 一种i2c链路检查方法、系统、终端及存储介质
CN113656340A (zh) * 2021-08-20 2021-11-16 西安易朴通讯技术有限公司 I2c总线的通信控制方法、系统和装置
TWI829505B (zh) * 2023-01-12 2024-01-11 旺玖科技股份有限公司 具有動態位址分配的串列通訊匯流排系統及其控制方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5376928A (en) * 1992-09-18 1994-12-27 Thomson Consumer Electronics, Inc. Exchanging data and clock lines on multiple format data buses
ATE459052T1 (de) 2005-04-29 2010-03-15 Nxp Bv Einrichtungsidentifikationscodierung integrierter slave-schaltungseinrichtungen
CN100566278C (zh) 2005-04-29 2009-12-02 Nxp股份有限公司 在使用串行数据传送总线的通信系统中的从设备
WO2006117753A1 (en) 2005-04-29 2006-11-09 Koninklijke Philips Electronics, N.V. Dynamic 12c slave device address decoder
JP2008107937A (ja) * 2006-10-24 2008-05-08 Oki Electric Ind Co Ltd バスリピータ
CN102023954B (zh) * 2009-09-17 2012-08-22 研祥智能科技股份有限公司 具有多路i2c总线的装置、处理器、系统主板及工控计算机
US8667204B2 (en) * 2011-01-24 2014-03-04 Rpx Corporation Method to differentiate identical devices on a two-wire interface
US20130019039A1 (en) 2011-06-10 2013-01-17 Intersil Americas LLC System and method for operating a one-wire protocol slave in a two-wire protocol bus environment
US9448960B2 (en) * 2013-03-14 2016-09-20 Linear Technology Corporation Address translation in I2C data communications system
US9710423B2 (en) 2014-04-02 2017-07-18 Qualcomm Incorporated Methods to send extra information in-band on inter-integrated circuit (I2C) bus
US9665528B2 (en) * 2014-11-20 2017-05-30 International Business Machines Corporation Bus serialization for devices without multi-device support
GB2537856A (en) 2015-04-28 2016-11-02 Nordic Semiconductor Asa Communication between intergrated circuits
US10067895B2 (en) 2015-06-03 2018-09-04 Lexmark International, Inc. Systems and methods for asynchronous toggling of I2C data line
KR102328014B1 (ko) 2015-08-24 2021-11-18 삼성전자주식회사 싱글 와이어 인터페이스를 포함하는 장치와 이를 포함하는 데이터 처리 시스템
CN106155971A (zh) 2016-07-04 2016-11-23 锐捷网络股份有限公司 I2c总线的仲裁方法及装置
US10204066B2 (en) 2016-11-29 2019-02-12 Stmicroelectronics S.R.L. Dynamic definition of slave address in I2C protocol
WO2019146397A1 (ja) * 2018-01-23 2019-08-01 ソニーセミコンダクタソリューションズ株式会社 制御回路、通信装置、及び、通信システム
CN208834297U (zh) 2018-11-12 2019-05-07 上海艾为电子技术股份有限公司 一种i2c通信装置及i2c通信设备
CN109213718B (zh) 2018-11-12 2024-01-26 上海艾为电子技术股份有限公司 一种i2c通信装置及i2c通信设备
US10817451B1 (en) * 2019-06-24 2020-10-27 Semiconductor Components Industries, Llc Methods and system for an integrated circuit

Also Published As

Publication number Publication date
CN113906402B (zh) 2023-10-27
WO2020239944A1 (en) 2020-12-03
TW202105193A (zh) 2021-02-01
TWI824154B (zh) 2023-12-01
US11829319B2 (en) 2023-11-28
US20220309023A1 (en) 2022-09-29
CN113906402A (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
DE112020002619T5 (de) Ein inter-integrated circuit (i2c) gerät
DE2731188C2 (de) Schaltungsanordnung zur Behandlung von Unterbrechungsanforderungen
EP0489944B1 (de) Master-Slave-Datenübertragungsverfahren mit flexiblem Eindraht-Bus
DE102015117019B4 (de) Serielle Peripherieschnittstellen-Kettenkommunikation mit rahmengebundener Antwort
DE2731336A1 (de) Taktsystem
EP0190554B1 (de) Verfahren und Schaltungsanordnung zum Umschalten einer taktgesteuerten Einrichtung mit mehreren Betriebszuständen
DE112007000954T5 (de) Korrekte Energieverteilung für Mehrfachspannungschips
DE102013020277A1 (de) Bit-timing-symmetrisierung
DE102014206752B4 (de) Bestimmung des Zustands eines I2C-Busses
DE19649676A1 (de) Peripherieeinheitwählsystem
DE20023493U1 (de) Höhere Raten unterstützender USB-Sendeempfänger
DE102015017123A1 (de) Integrierte Schaltkreise mit Universal-Serial-Bus-2.0- und Embedded-Universal-Serial-Bus-2-Konnektivität
DE202009019093U1 (de) Vorrichtung und System für automatische Datenausrichter für mehrere serielle Empfänger
DE3022746A1 (de) Digitale phasenkomparatorschaltung
EP2616827B1 (de) Vorrichtung zur betriebsparameter-überwachung integrierter schaltkreise und integrierter schaltkreis mit betriebsparameter-überwachung
DE2645341C2 (de)
DE102007053128B3 (de) Störimpulsfreier Zweiweg-Taktumschalter
DE102004021398B4 (de) Verfahren und Schaltungsanordnung zum Zurücksetzen einer integrierten Schaltung
DE112013003712B4 (de) Impulsbreitenmodulations-Empfängerschaltungsanordnung
DE60130860T2 (de) Steuervorrichtung zur automatischen Steuerung von an einer Datenleitung angelegten Spannung in einer Serienverbindung
DE102014111061A1 (de) Verfahren, Vorrichtung und System zur Kommunikation mit einer Einrichtung
DE2321200A1 (de) Einrichtung zur durchfuehrung boolescher verknuepfungen
DE2906524A1 (de) Taktsignal-erzeugerschaltung
DE10241385A1 (de) Integrierter Schaltkreis
WO2000064125A1 (de) Datenübertragungseinrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: TERGAU & WALKENHORST INTELLECTUAL PROPERTY GMB, DE

Representative=s name: TERGAU & WALKENHORST PATENTANWAELTE PARTGMBB, DE