Blog o spletnem programiranju in elektroniki
💬 👤
back Nazaj na blog
Arduino & Elektronika

Kako deluje I2C komunikacijski protokol in zakaj je tako priljubljen pri Arduinu

Kadar na mikrokrmilnik (kot je Arduino ali ESP32) priključujemo več senzorjev, zaslonov ali modulov, hitro naletimo na težavo pomanjkanja prostih pinov. Tukaj nastopi komunikacijski protokol I2C (Inter-Integrated Circuit), znan tudi kot TWI (Two-Wire Interface). Ta protokol omogoča povezavo več deset naprav na mikrokrmilnik z uporabo zgolj dveh podatkovnih linij.

Dve liniji protokola I2C

I2C deluje prek dveh dvosmernih linij z odprtim kolektorjem, ki zahtevata dvižne (pull-up) upore na napajalno napetost.

Linija Polno ime Vloga pri prenosu podatkov
SDA Serial Data Linija za prenos podatkovnih bitov med napravami.
SCL Serial Clock Taktna linija (ura), ki jo generira glavna naprava za sinhronizacijo.

Glavne značilnosti in naslavljanje naprav

Komunikacija po protokolu I2C poteka po načelu Master-Slave (glavna in podrejene naprave) z uporabo unikatnih naslovov.

  1. 7-bitno naslavljanje: Vsaka podrejena naprava na vodilu ima svoj fiksni ali nastavljivi naslov (npr. 0x27 za LCD zaslon ali 0x68 za žiroskop).
  2. Več naprav na istem vodilu: Na isti dve žici (SDA in SCL) lahko vzporedno vežemo do 127 različnih naprav.
  3. Zmerna hitrost: Standardni načini delujejo pri 100 kHz (Standard mode) ali 400 kHz (Fast mode), kar povsem zadošča za senzorje in manjše zaslone.

Primer uporabe I2C v Arduino kodi (Knjižnica Wire)

V Arduino okolju za I2C komunikacijo uporabljamo standardno knjižnico Wire.h.

#include <Wire.h>

void setup() {
  Wire.begin(); // Vzpostavitev I2C vodila v vlogi Master naprave
  Serial.begin(9600);
}

void loop() {
  // Zahteva 2 bajtov podatkov od podrejene naprave z naslovom 0x68
  Wire.requestFrom(0x68, 2);

  while (Wire.available()) {
    byte podatek = Wire.read();
    Serial.print("Prejet bajt: ");
    Serial.println(podatek, HEX);
  }

  delay(1000);
}

Kdaj izbrati I2C protokol?

I2C je najboljša izbira, kadar želite prihraniti pine na mikrokrmilniku ter povezati več različnih senzorjev (temperatura, tlak, pospeškometer) ali znakovni LCD zaslon na kratkih razdaljah (znotraj istega ohišja ali tiskane ploščice).

back Nazaj na blog