Was ist der Unterschied zwischen I2C und TWI?

26

Was ist der Unterschied zwischen I2C- und TWI-Schnittstellen? Wikipedia sagt, dass TWI eine Variante von I2C ist. Einige andere Quellen besagen, dass nur der Name unterschiedlich ist ...


quelle
13
AFAIK TWI wird von Herstellern als I2C-Schnittstelle bezeichnet, um rechtliche Probleme mit Philips zu vermeiden.
Wouter van Ooijen
33
Eine Version kommt mit Anwälten!
Connor Wolf
1
Wouter van Ooijen: Wenn ja, reicht es aus, nur den Namen zu ändern? IANAL.

Antworten:

25

Ich stimme allem zu, was @Wouter gesagt hat ... TWI wird von Herstellern (wie Atmel) verwendet, um auf ihre I2C-Schnittstelle zu verweisen und rechtliche Probleme mit Philips zu vermeiden, da I2C eine eingetragene Marke ist. Einige Hersteller (wie Atmel) haben proprietäre Funktionen zusätzlich zu I2C implementiert, sodass ihr TWI eine I2C-Obermenge ist.

Um Ihre Frage zu beantworten, klicken Sie auf Ja. Es reicht aus, nur den Namen zu ändern. Eine Marke schützt nur den Namen. Wenn es patentiert wäre, wäre die Situation anders.

Es ist jedoch schwierig, ein Patent für ein Modulations- / Codierungsschema zu verteidigen, da es sich meist nur um Mathematik handelt. Oft wird hierfür das Urheberrecht verwendet, aber es ist normalerweise ziemlich einfach zu umgehen, da das Urheberrecht nur die genaue spezifische Instanziierung (Implementierung) des Protokolls schützt, in den meisten Fällen nicht das Protokoll selbst.

DrFriedParts
quelle
1
Ich würde denken, dass einige Aspekte des I2C-Handshakes neu genug sind, um Patentschutz zu verdienen, obwohl Dinge wie EEPROMs, die kein Handshaking verwenden, möglicherweise keine patentwürdigen Funktionen verwenden. Was I2C-Erweiterungen anbelangt, wäre eine, die ich mir gewünscht habe, die Möglichkeit für Slave-Geräte, sich auf die gleiche Weise wie Master an der Arbitrierung zu beteiligen (ein Slave, der versucht, eine "1" auszugeben, während ein anderer Slave eine "0" ausgibt). sollte eine verlorene Entscheidung signalisieren und für den Rest dieses Bytes ausfallen (das High-Level-Protokoll würde entscheiden, zu welchem ​​Zeitpunkt der Slave wieder beitreten könnte).
Supercat
1
Bei einer solchen Funktion ist es für eine beliebige Anzahl von Geräten mit z. B. 64-Bit-ID-Nummern einfach, ihre Identitäten auszulesen (einfacher als bei 1wire). Verfügen Sie über eine Geräteadresse "IDs lesen starten" und geben Sie dann für jedes Gerät eine 8-Byte-ID aus (bei Verlust der Arbitrierung wird die ID gelöscht). Verfügen Sie jedes Gerät, das seine ID nicht erfolgreich ausgegeben hat, alle 8 Byte erneut. Der Master würde somit die ID jedes Geräts in numerischer Reihenfolge auslesen und mit allen FFs enden, sobald alle Geräte fertig sind.
Supercat
1
@supercat Und wenn es patentiert wäre, würde es andere Hersteller daran hindern, es für kostengünstige Produkte zu verwenden. Es wäre ein weiterer Albtraum für die Nutzer.
JB.
@JB .: Ich vermute, dass I2C die Slave-Arbitrierung nicht zulässt, weil es für Bustranceiver möglicherweise unmöglich ist, zuverlässig herauszufinden, was vor sich geht, aber für Busse, die solche Tranceiver nicht verwenden, könnte eine solche Arbitrierung die Sache sicher schöner machen.
Supercat
9

Von i2c-bus.org :

TWI steht für Two Wire Interface und dieser Bus ist identisch mit I²C. Der Name TWI wurde von Atmel und anderen Unternehmen eingeführt, um Konflikte mit Markenproblemen im Zusammenhang mit I²C zu vermeiden. Eine Beschreibung der Funktionen der TWI-Schnittstellen finden Sie in den Datenblättern der entsprechenden Geräte. Erwarten Sie, dass TWI-Geräte mit Ausnahme einiger Besonderheiten wie allgemeines Broadcasting oder 10-Bit-Adressierung mit I²C-Geräten kompatibel sind.

Außerdem gibt es derzeit keinen TWI-Hochgeschwindigkeitsmodus.

Wenn Sie einen I²C-Analysator haben, funktioniert dieser auch mit einem TWI-Setup ohne Änderungen.

AvadhanaSolutions
quelle
2

TWI-Geräte entsprechen normalerweise nicht vollständig der I2C-Spezifikation.

Insbesondere wird Clock-Stretching normalerweise nicht unterstützt.

Dave Null
quelle
Zum Beispiel, wenn mein Gedächtnis mir richtig dient, ist die I²C-Schnittstelle des Raspberry Pi, die der Broadcomm SoC als Herzstück
bereitstellt,