I2C, eli Inter-Integrated Circuit, on laajalti käytetty sarjallinen viestintäprotokolla, joka mahdollistaa usean laitteen kommunikoinnin keskenään kaksijohtimisella liitännällä. Sitä käytetään yleisesti kytkemään matalan nopeuden oheislaitteita emolevyihin, sulautettuihin järjestelmiin tai mikro-ohjaimiin.
I2C käyttää master-slave-arkkitehtuuria, jossa yksi laite toimii masterina ja aloittaa viestinnän, kun taas muut laitteet toimivat slaveina ja vastaavat masterin pyyntöihin. Protokolla tukee multi-master-konfiguraatioita, mikä tarkoittaa, että useat laitteet voidaan kytkeä samaan väylään, jolloin ne voivat kommunikoida keskenään.
Kaksi olennaista johtoa I2C-väylässä ovat:
I2C-viestintää voidaan suorittaa eri nopeuksilla, joita kutsutaan yleisesti I2C-väylän nopeuksiksi. Yleisimmät väylänopeudet ovat vakionopeus (jopa 100 kbit/s), nopea tila (jopa 400 kbit/s), ja nopea tila (jopa 3,4 Mbit/s).
I2C-protokolla käyttää aloitus-pysäytysmekanismia masterin ja slave-laitteiden viestinnän luomiseen. Aloitusehto osoittaa tiedonsiirron alkamisen, kun taas pysäytysehto merkitsee loppua. Viestintäprosessi sisältää seuraavat vaiheet:
Aloitusehto: Master-laite aloittaa viestinnän lähettämällä aloitusehdon. Se vetää SDA-linjan alas, kun SCL-linja pysyy ylhäällä.
Osoitus: Aloitusehdon jälkeen master lähettää 7-bittisen osoitteen slave-laitteelle, jonka kanssa se haluaa kommunikoida, sekä luku- tai kirjoitusbitin. Luku-bitti osoittaa, että master haluaa lukea dataa slavelta, kun taas kirjoitusbitti osoittaa, että master haluaa kirjoittaa dataa slavelta. Jokaisella väylän slave-laitteella on oma ainutlaatuinen osoite.
Kuittaus: Kun slave, jolla on määritelty osoite, vastaanottaa osoitebitit, se vastaa kuittausbitillä (ACK). ACK on slave-laitteen vetämä alasveto SDA-linjalle.
Tiedonsiirto: Osoittamisprosessin jälkeen master ja slave voivat siirtää dataa keskenään. Data lähetetään 8-bittisinä segmentteinä, ja jokaisen segmentin jälkeen vastaanottava laite antaa ACK:n. Tämä prosessi jatkuu, kunnes master päättää lopettaa viestinnän.
Pysäytysehto: Master-laite luo pysäytysehdon vetämällä SDA-linjan ylös, kun SCL-linja pysyy ylhäällä. Pysäytysehto ilmoittaa slaveille, että viestintä on päättynyt.
On tärkeää huomata, että tiedonsiirron aikana SDA-linja voi muuttua vain, kun SCL-linja on matalalla. Tämä varmistaa synkronoidun viestinnän masterin ja slavelaiteiden välillä.
I2C:tä käytetään laajasti eri elektronisissa järjestelmissä integroituja pi irilevyjä välisessä kommunikaatiossa. Joitakin yleisiä I2C:n sovelluksia ovat:
I2C:tä käytetään yleisesti monien erilaisten antureiden, kuten lämpötila-antureiden, kosteudenanturi, ja kiihtyvyysantureiden viestintään. Nämä anturit voivat tarjota tietoja niihin liittyvistä parametreista, jolloin kytketyt laitteet voivat tehdä harkittuja päätöksiä vastaanotettujen tietojen perusteella.
Monet näyttömoduulit, kuten LCD- ja OLED-näytöt, voidaan liittää I2C:n avulla. Tämä yksinkertaistaa näyttöjen integrointia erilaisiin järjestelmiin, sillä I2C-protokolla mahdollistaa helpon viestinnän näyttömoduulin ja ohjauslaitteen välillä.
I2C:tä käytetään usein EEPROM (Electrically Erasable Programmable Read-Only Memory) -piirien ohjelmointiin ja lukemiseen. EEPROMit ovat haihtumatonta muistia, joita voidaan käyttää tietojen tallentamiseen, vaikka virta katkaistaan. I2C-protokolla helpottaa tehokasta tiedonsiirtoa ohjauslaitteen ja EEPROMin välillä.
I2C:tä käytetään reaaliaikakelloissa tarjoamaan tarkkoja ajanotto-ominaisuuksia erilaisissa laitteissa. Nämä kellot voivat ylläpitää tarkkaa aika- ja päivämääräinformaatiota ja niitä käytetään yleisesti sovelluksissa, kuten tiedonkeruussa, aikataulutuksessa ja aikaan sidotuissa toiminnoissa.
I2C (Inter-Integrated Circuit) on laajalti käytetty sarjallinen viestintäprotokolla, joka mahdollistaa laitteiden kommunikoinnin keskenään kaksijohtimisella liitännällä. Sillä on suoraviivainen arkkitehtuuri ja se tukee multi-master-konfiguraatioita, mahdollistaen monien laitteiden liittämisen samaan väylään joustavasti. I2C:tä käytetään yleisesti sovelluksissa, kuten antureiden liittämisessä, näyttömoduuleissa, EEPROM-ohjelmoinnissa ja reaaliaikakelloissa. Vaikka I2C:llä on omat rajoituksensa, se on edelleen suosittu valinta matalanopeuksiseen viestintään erilaisissa elektronisissa järjestelmissä.