Attēls:I2c logo.svg
***I²C*** (*Inter-Integrated Circuit*) ir vairāku vedēju, single-ended, virknes datorsistēmu kopne. Tās pamata pielietojums ir zema ātruma perifērijas integrālo shēmu pievienošana procesoriem, un mikrokontrolieriem nelielā attālumā.
Kopni 1980. gadu sākumā izstrādāja *Philips Semiconductor* (tagad *NXP Semiconductors*).

Datu pārraide *I²C* kopnē ir divvirziena, ātrums standarta režīmā ir 100 kbit/s. Pēdējās protokola versijas ļauj pievienot vairāk mezglu un darboties lielākā ātrumā (400 kbit/s *Fast mode*, 1 Mbit/s *Fast mode plus* jeb *Fm+* un 3.4 Mbit/s *High Speed mode*), kā arī 16 bitu adresāciju. *Ultra fast mode* ir vienvirziena, ar pārraides ātrumu līdz 5 Mbit/s.

Tehnoloģija
-----------

Shematiski attēlota *I²C* kopne ar vienu vedēju (mikrokontrolieris μC), trīs sekotājmezgliem (ADC, DAC un mikrokontrolieris) un pievilkšanās rezistors Rp
*I²C* izmanto divas divvirziena *open-drain* līnijas: virknes datu līnija (*Serial Data Line*, *SDA*) un virknes takts līnija (*Serial Clock Line*, *SCL*). Tās tiek pievilktas (*pull up*) ar rezistoriem. Kopnē parasti izmanto +5 V vai +3,3 V spriegumu, lai gan ir pieļaujami arī citi sprieguma līmeņi.

*I²C* adrešu telpa ir 7 bitu (etalonmodelim) vai 10 bitu (atkarībā no izmantotās ierīces). Datu pārraides ātrums kopnē ir 100 kbit/s standarta režīmā un 10 kbit/s zema ātruma režīmā, bet arī ir atļautas zemas takts frekvences.

Maksimālo mezglu skaitu ierobežo adrešu telpa, kā arī kopējā kopnes kapacitāte 400 pF, kas praktiski iespējamo sakaru attālumu samazina līdz dažiem metriem. Relatīvi augstajai impedancei un zemajai trokšņu imunitātei nepieciešams kopējs zemējuma potenciāls, kas arī ierobežo pielietojumu sakaros praktiski ar izvietojumu vienā platē vai nelielā plašu sistēmā.

### Etalonmodelis

Etalonmodelis (*reference design*) ir 7 bitu adresācijas kopne ar takts (*SCL*) un datu (*SDA*) līnijām. Kopnes mezgliem var būt divas lomas: vedējs un sekotājs:

* vedējmezgls — ģenerē takts signālu un uzsāk sakarus ar sekotājiem;
* sekotājmezgls — uztver takts signālu un atbild, ja vedējs ziņojumu adresējis tam.

Vedēja un sekotāja lomas var mainīt starp ziņojumiem (pēc `STOP` nosūtīšanas).

Ierīcei ir iespējami četri darbības režīmi:

* vedējs raida — vedējmezgls sūta datus sekotājam;
* vedējs uztver — vedējmezgls saņem datus no sekotāja;
* sekotājs raida — sekotājmezgls sūta datus vedējam;
* sekotājs uztver — sekotājmezgls saņem datus no vedēja.

Sākumā vedējmezgls vedēja raidīšanas režīmā nosūta starta bitu, kam seko sekotājmezgla 7 bitu adrese un viens bits ar norādījumu: rakstīt (0) vai lasīt (1) no sekotāja.

Ja sekotājmazgls eksistē kopnē, tam jāatbild ar ACK bitu šai adresei. Tad vedējs turpina raidīšanas vai uztveršanas režīmā (atkarībā no nosūtītā rakstīšanas / lasīšanas bita), un sekotājs turpina atbilstošajā režīmā.

Adreses un datu baiti tiek sūtīti ar visnozīmīgāko bitu pirmo. Startbitu norāda ar *SDA* pāreju no augsta līmeņa uz zemu pie *SCL* augsta līmeņa. Stopbitu norāda ar *SDA* pāreju no zema līmeņa uz augstu pie *SCL* augsta līmeņa. Visas citas *SDA* pārejas notiek pie *SCL* zema līmeņa.

Licencēšana
-----------

*I²C* standarta patenti pieder *NXP Semiconductors* (sākotnēji *Philips Semiconductor*). 2000. gadā *Philips* saka agresīvi pielietot patenta tiesības, ierosinot tiesvedību pret sešiem pusvadītāju ražotājiem. Kopš 2006. gada 10. oktobra vairs netiek pieprasīta patentmaksa, lai īstenotu *I²C* protokolu. Izņēmums ir*I²C* sekotājmezglu adrešu piešķiršana, par kuru *NXP Semiconductors* pieprasa maksu.

Mantotās sistēmas
-----------------

Vairākas sistēmas veidotas uz *I²C* pamata.

*SMBus* kopne, kuru *Intel* izveidoja 1995. gadā, ir definēta ar stingrāku lietojumu nekā *I²C*. *SMBus* ļauj uzlabot robustumu un sadarbspēju. Mūsdienu *I²C* sistēmas iekļauj dažus *SMBus* principus un noteikumus, kuru realizācijai nepieciešama tikai minimāla rekonfigurācija.

Atsauces
--------

1. ↑  UM10204 I²C-bus specification and user manual NXP
2. ↑  Firmware Emulation of an I2C Slave Device  Steve Kolokowsky, Cypress Semiconductor

Ārējās saites
-------------

|  |  |
| --- | --- |
|  | Vikikrātuvē par šo tēmu ir pieejami multivides faili. Skatīt: ***I2C*** |

* Official I2C specification (free) Arhivēts 2013. gada 11. maijā, *Wayback Machine* vietnē. NXP
* Detailed Introduction, Primer