1 ============================= 2 Introduction to I2C and SMBus 3 ============================= 4 5 I²C (pronounce: I squared C and written I2C i 6 a protocol developed by Philips. It is a two-w 7 speed (typically up to 400 kHz, high speed mod 8 an inexpensive bus for connecting many types o 9 low bandwidth communications needs. I2C is wid 10 systems. Some systems use variants that don't 11 and so are not advertised as being I2C but com 12 e.g. TWI (Two Wire Interface), IIC. 13 14 The latest official I2C specification is the ` 15 manual" (UM10204) <https://www.nxp.com/docs/en 16 published by NXP Semiconductors, version 7 as 17 18 SMBus (System Management Bus) is based on the 19 a subset of I2C protocols and signaling. Many 20 SMBus, but some SMBus protocols add semantics 21 achieve I2C branding. Modern PC mainboards rel 22 devices connected through SMBus are RAM module 23 and hardware monitoring chips. 24 25 Because the SMBus is mostly a subset of the ge 26 use its protocols on many I2C systems. However 27 meet both SMBus and I2C electrical constraints 28 implement all the common SMBus protocol semant 29 30 31 Terminology 32 =========== 33 34 The I2C bus connects one or more controller ch 35 36 .. kernel-figure:: i2c_bus.svg 37 :alt: Simple I2C bus with one controller 38 39 Simple I2C bus 40 41 A **controller** chip is a node that starts co 42 Linux kernel implementation it is also called 43 drivers are usually in the ``drivers/i2c/busse 44 45 An **algorithm** contains general code that ca 46 class of I2C controllers. Each specific contro 47 algorithm driver in the ``drivers/i2c/algos/`` 48 own implementation. 49 50 A **target** chip is a node that responds to c 51 controller. In the Linux kernel implementation 52 While targets are usually separate external ch 53 target (needs hardware support) and respond to 54 This is then called a **local target**. In con 55 a **remote target**. 56 57 Target drivers are kept in a directory specifi 58 for example ``drivers/gpio/`` for GPIO expande 59 video-related chips. 60 61 For the example configuration in the figure ab 62 the I2C controller, and drivers for your I2C t 63 each target. 64 65 Synonyms 66 -------- 67 68 As mentioned above, the Linux I2C implementati 69 "adapter" for controller and "client" for targ 70 have these synonyms in their name. So, when di 71 you should be aware of these terms as well. Th 72 though. 73 74 Outdated terminology 75 -------------------- 76 77 In earlier I2C specifications, controller was 78 named "slave". These terms have been obsoleted 79 their use is also discouraged by the Linux Ker 80 still find them in references to documentation 81 general attitude, however, is to use the inclu 82 target. Work to replace the old terminology in
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.