Oldalforrás megtekintése Korábbi változatok Hivatkozások Exportálás PDF-be Share on ... Google+ Twitter LinkedIn Facebook Pinterest Telegram Tartalomjegyzék I²C Az I²C verziói I²C technikai jellemzők I²C a hardveres szinten Jelszintek I²C forgalmazás Normál, 7 bites címzésű telegramváltás 10 bites címzésű telegramváltás Speciális funkciókra fenntartott címek Ismétlődő indulási feltételek Példák az I²C alkalmazására Források I²C busz, i2c Az I²C (Inter-Integrated Circuit) egy multi-master, multi-slave, csomagkapcsolt szerial busz, melyet a Philips Semiconductor (ma NXP Semiconductors) feljesztett 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 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: Mód Sebesség Alacsony sebességű üzemmód10 kbit / sec szabványos üzemmód100 kbit / sec gyors mód (FM) 400 kbit / sec gyors mód plusz (FM+) 1 Mbit / sec nagysebessé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ömbsé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 jellépésleírás 1StartIndulá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 jellépésleírás 1StartMegegyezik 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ímkeret Ebben 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. 5 A további forgalmazás - a kompatibilitás okán - megegyezik a 7 bites változattal. A 10 és 7 bites címzés egy hálózaton, egyidejűleg is bonyolódhat, mivel a 7 bites címzésben nem létezhet a vezető "11110" címsorozat. Speciális funkciókra fenntartott címek 0000000 0Általános hívás 0000000 1Start bájt 0000001 XCBUS címek 0000010 XKülönféle buszok számára fenntartott címek 0000011 XJövőbeli fejlesztésekre fenntartva 00001XX Xnagysebességű "master" kód 11110XX X10 bites "slave" cím 11111XX 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. Példák az I²C alkalmazására Arduino kommunikációs megoldások / példák NodeMCU I²C kommunikáció Források https://learn.sparkfun.com/tutorials/i2c