23
\$\begingroup\$

What is difference between I2C and TWI interfaces? Wikipedia says, that TWI is variant of I2C. Some other sources says that only name is differ...

\$\endgroup\$
  • 13
    \$\begingroup\$ AFAIK TWI is what manufacturers (used to) call their I2C interface to avoid legal trouble with Philips. \$\endgroup\$ – Wouter van Ooijen Dec 9 '12 at 10:48
  • 33
    \$\begingroup\$ One version comes with lawyers! \$\endgroup\$ – Connor Wolf Dec 9 '12 at 10:52
  • 1
    \$\begingroup\$ Wouter van Ooijen: If so, is it enough to just change the name? IANAL. \$\endgroup\$ – user54579 Dec 9 '12 at 10:53
  • 5
    \$\begingroup\$ i2c-bus.org/twi-bus \$\endgroup\$ – m.Alin Dec 9 '12 at 11:27
23
\$\begingroup\$

I agree with everything @Wouter said... Namely, TWI is used by manufacturers (like Atmel) to refer to their I2C interface to avoid legal trouble with Philips since I2C is a registered trademark. Some manufacturers (like Atmel) have implemented proprietary features on top of I2C so that their TWI is an I2C superset.

To answer your follow-up question, yes. It is enough just to change the name. A trademark only protects the name. If it were patented, the situation would be different.

However, it is difficult to defend a patent on a modulation/encoding scheme since it is mostly just math. Often, copyright is used for this, but it is usually pretty easy to circumvent, since the copyright protects only the exact specific instantiation (implementation) of the protocol, not the protocol itself in most cases.

\$\endgroup\$
  • 1
    \$\begingroup\$ I would think that some aspects of I2C's handshaking would be novel enough to merit patent protection, though things like EEPROMs that don't use handshaking may not use any patent-worthy features. As for I2C extensions, one I've wished for would be the ability for slave devices to engage in arbitration in something like the same way masters do (a slave which tries to output a "1" while another slave is outputting a "0" should signals a lost arbitration and drops out for the remainder of that byte) [the high-level protocol would decide at what point the slave could rejoin]. \$\endgroup\$ – supercat Dec 11 '12 at 0:17
  • 1
    \$\begingroup\$ Given such a feature, it would be easy for an arbitrary number of devices with e.g. 64-bit ID numbers to have their identities read out (easier than with 1wire). Have a "start reading IDs" device address, and then have each device output an 8-byte of ID (dropping out if it loses arbitration), and have each device which hasn't successfully output its ID rejoin every 8 bytes. The master would thus read out every device's ID, in numerical order, ending with all FF's once all devices were done. \$\endgroup\$ – supercat Dec 11 '12 at 0:21
  • 1
    \$\begingroup\$ @supercat And if it were patented, it would prevent other manufacturers from using it for low cost product. It would be another nightmare for users. \$\endgroup\$ – JB. Dec 30 '15 at 17:58
  • \$\begingroup\$ @JB.: I suspect that I2C disallows slave arbitration because it might make it impossible for bus tranceivers to reliably figure out what was going on, but for buses that don't use such tranceivers such arbitration could sure make things nice. \$\endgroup\$ – supercat Dec 30 '15 at 18:42
7
\$\begingroup\$

From i2c-bus.org:

TWI stands for Two Wire Interface and this bus is identical to I²C. The name TWI was introduced by Atmel and other companies to avoid conflicts with trademark issues related to I²C. A description of the capabilities of TWI interfaces can be found in the data sheets of corresponding devices. Expect TWI devices to be compatible to I²C devices except for some particularities like general broadcast or 10 bit addressing.

Also, for now, there is also no TWI high speed mode.

If you have an I²C analyser it will work with a TWI set-up as well without modifications.

\$\endgroup\$
2
\$\begingroup\$

TWI devices typically don't conform completely to the I2C specification.

Notably, clock stretching is usually not supported.

\$\endgroup\$
  • \$\begingroup\$ Such as, if my memory serves me correctly, the Raspberry Pi's I²C interface provided by the Broadcomm SoC at it's heart... \$\endgroup\$ – SlySven Dec 13 '18 at 4:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy