Az I²C (Inter-Integrated Circuit) egy multi-master, multi-slave, csomagkapcsolt soros busz, melyet a Philips Semiconductor (ma NXP Semiconductors) fejlesztett ki.

Az I²C jellemzően kis távolságú, viszonylag alacsony sebességű IC és fedélzeti rendszerek közötti kommunikációra szokás alkalmazni.

2006. október 10 óta az I²C protokoll alkalmazásához már nem szükséges engedélyezési díjat fizetni, ez a felmentés azonban nem vonatkozik az NXP által kiosztott I²C slave címekre, azokért továbbra is fizetni kell.

Több versenytárs, mint például a Siemens AG (később Infineon Technologies AG, jelenleg Intel mobilkommunikáció), az NEC, a Texas Instruments, az STMicroelectronics (korábban SGS-Thomson), a Motorola (később Freescale, most az NXP), a Nordic Semiconductor és az Intersil, az 1990-es évek közepe óta I²C kompatibilis termékeket dobott a piacra.

Az 1995-ben az Intel által definiált SMBus az I²C részhalmaza, amely azonban kötöttebb szabályokat alkalmaz. Az SMBus egyik célja a robusztusság és az interoperabilitás előmozdítása volt, ennek megfelelően a modern I²C rendszerek jó pár eljárást átemeltek az SMBus-ból, néha támogatva mind az I²C, mind az SMBus-t.

A busz maximális távolsága elvileg 7,6 m, de jellemzően 2–3 m-en szokás alkalmazni.

Az I²C verziói

1982-ben az eredeti 100 kHz-es I²C rendszert egyszerű belső buszrendszerként hozták létre az épületvezérlő elektronika számára, különböző Philips chipekkel. 1992-ben az 1. verzió 400 kHz gyors módot (FM) és 10 bites címzési módot adott hozzá az 1008 csomópontos kapacitás növeléséhez. Ez volt az első szabványosított változat. 1998-ban a 2. verzió hozzáadta a 3,4 MHz -es nagysebességű módot (HS) és kibővítette az energiatakarékossági követelményekkel. 2000-ben a 2.1-es változat tisztázta a 2. verziót, jelentős funkcionális változások nélkül. 2007-ben a 3-as verzió 1 MHz-es Fast-mode plus (FM+) (20 mA-es meghajtók használatával) és egy eszközazonosító mechanizmust adott a szabványhoz. 2012-ben a 4-es verzió az új USDA (adat) és az USCL (óra) vonalakhoz 5 MHz - es ultragyors módot (UFM) adott a szabványhoz, és egy pull-up ellenállás nélküli push-pull logikával hozzárendelt egy gyártói azonosító táblát. Ez csak egy egyirányú busz. 2012-ben az 5. változat kijavította a hibákat. 2014-ben a 6. verzió két grafikont korrigált. Ez az aktuális szabvány.

I²C technikai jellemzők bélyegkép|I²C busz jellemző felépítése (a felhúzóellenállásokkal) Az I²C az adatátvitelhez egy nyitott végű vezetékpárt használ, a soros adatvonalat (SDA) és a soros órajelet (SCL). A két vezetéket ellenállásokkal kell üzemi feszültségre húzni, a vezetékek jellemzően 5V, vagy 3,3V feszültséggel üzemelnek, de ettől eltérő feszültség-specifikáció sem kizárt.

A busz jellemzően 7 vagy 10 bites címzést alkalmaz, de esetenként a 16 bites megoldás is előfordul. Az átvitel jellemző sebességei: Alacsony sebességű üzemmód10 kbit / secszabványos üzemmód100 kbit / secgyors mód (FM)400 kbit / secgyors mód plusz (FM+)1 Mbit / secnagysebességű mód (HS)3,4 Mbit / sec

I²C a hardveres szinten Minden I²C busz két jelből áll: SCL és SDA. Az SCL az órajel, az SDA az adatjel. Az órajelet mindig az aktuális busz-master generálja; egyes slave eszközök időnként alacsonyabb sebességre kényszeríthetik az órát. Ez az úgynevezett clock stretching, és a protokoll is tartalmazza ezt a funkciót.

Ellentétben az UART vagy SPI kapcsolatokkal, az I²C buszvezérlők "nyitott lefolyásúak", vagyis a jelvezetéket alacsonyra húzhatják, de magasra nem. Minden jelvezetéknek kell, hogy legyen egy felhúzó ellenállása arra az esetre, ha egyetlen eszköz sem használja azt, akkor a jelszint magas állapotba kerüljön "magától".

Az ökölszabály szerint a felhúzóellenállások mindig 4.7k-ok, de ez nem minden esetben válik be. Az I²C egy meglehetősen robusztus protokoll, de jellemzően csak rövid vezetékekkel (2-3m) használható. Hosszabb vezetékek esetén az alkalmazott ellenállások értékét érdemes csökkenteni.

Jelszintek Az I²C jelszintjei jellemzően 5V, vagy 3,3V, amik, ha a TTL logikai szintjeik még összeegyeztethetőek, lehetővé teszik, hogy különböző jelszintű eszközöket is közvetlenül egy I²C hálózatba illesszünk. Ha a jelszintkülönbségek túl nagynak bizonyulnának, a kritikus részek közé jelszintváltót kell beiktatni.

I²C forgalmazás

Normál, 7 bites címzésű telegramváltás alt=

Lépések jellépésleírás1StartInduláskor a master először az SDA-t, majd az SCL-t is alacsonyra húzza. Ez jelzés az összes hálózati résztvevő felé a forgalmazás indítására. Több jelenlevő master esetén az kommunikálhat, amelyik először húzza le az SDA-t. Összeakadás esetén a műveletet ismételni kell.2Címkeret (A6..A0)A 7 bites címzés esetén ez a tartalom megy ki először. Az MSB az első bit.3R/WA nyolcadik bit azt jelzi, hogy olvasási vagy írási művelet következik. (1: olvasás, 0: írás)4NACK / ACKA 9. bit Ennél a bitnél a master a címzett egység "reakcióját" várja. Ha az megkapta a telegram eddigi tartalmát, a 9. óraimpulzus előtt le kell húznia az SDA vonalat. Ha ezt nem teszi meg, a master arra fog következtetni, hogy az egység nem érhető el, folytatja a forgalmazást más egységekkel.5Adatkeret fogadásaAz adatkeret hossza a protokoll által nincs szabályozva. Sok esetben a slave-ek, ha nagyobb adatmennyiséget kell forgalmazniuk, az egymást követő telegramokban más-más regiszterek tartalmát küldik el.6STOPElőször az SCL, majd az SDA is magas állapotba lesz "eresztve" a master oldaláról.

10 bites címzésű telegramváltás alt=

Lépések jellépésleírás1StartMegegyezik a 7 bites címzéssel; induláskor a master először az SDA-t, majd az SCL-t is alacsonyra húzza.21. Címkeret (b11110xyz)Az első címkeret első 4 bitje "1". Az x lesz a cím 0. (MSB) bitje, az y az 1. címbit, a z pedig az R/W bit (1: olvasás, 0: írás).32. CímkeretEbben a keretben a master kiadja a további címbiteket is.4ACKA 2. címkeret utolsó (ACK) bitpozíciójában kell reagálnia a slave-nek, csakúgy, mint a 7 bites változatban.5A további forgalmazás - a kompatibilitás okán - megegyezik a 7 bites változattal.

Speciális funkciókra fenntartott címek

0000000 0Általános hívás0000000 1Start bájt0000001 XCBUS címek0000010 XKülönféle buszok számára fenntartott címek0000011 XJövőbeli fejlesztésekre fenntartva00001XX Xnagysebességű "master" kód11110XX X10 bites "slave" cím11111XX XJövőbeli fejlesztésekre fenntartva

Ismétlődő indulási feltételek Néha fontos, hogy egy master sorozatban egyszerre több üzenetet is cserélhessen, anélkül, hogy a buszon lévő többi master belezavarna ebbe a forgalmazásba. Ilyenkor a kell a master-nek az "ismétlődő indulási feltételek"-et alkalmaznia.

A megismételt indítás érdekében az SDA-nak magasnak kell lennie, míg az SCL alacsony. Ezután az SCL-nek magasba vált, majd az SDA újra alacsonyra kerül, miközben az SCL magas.

Fordítás

Források

Kategória:Buszrendszerek Kategória:Ipari kommunikáció