I2C vs SPI vs UART: koji komunikacijski protokol koristiti?

20.10.2026
I2C vs SPI vs UART: which communication protocol should you use?

Sadržaj

Sadržaj
Što su komunikacijski protokoli u elektronici?I2C vs SPI vs UART na prvi pogledŠto je I2C?Što je SPI?Što je UART?I2C vs SPI: Koja je razlika?UART vs I2C i SPIKoji protokol koristiti za senzore?Koji protokol koristiti za zaslone?I2C, SPI i UART s ArduinomI2C, SPI i UART s ESP32I2C, SPI i UART s Raspberry PiČeste pogreške pri odabiru I2C, SPI ili UART-aKratki vodič za odlukeZašto je Soldered sjajno mjesto za učenje komunikacijskih protokolaČesto postavljana pitanja

I2C, SPI i UART su tri načina na koja gotovo svaki senzor, zaslon i modul komunicira s mikrokontrolerom. Nijedan od njih nije najbolji. Svaki rješava drugačiji problem, a odabir pravoga svodi se na to koliko uređaja imate, kojom brzinom se podaci kreću i koliku udaljenost moraju prijeći.

Ukratko: koristite I2C za povezivanje nekoliko senzora pomoću dvije žice, SPI kada zaslon ili memorijska kartica trebaju brzinu, a UART za jednostavnu serijsku komunikaciju između dva uređaja.

Što su komunikacijski protokoli u elektronici?

Mikrokontroler treba način za razmjenu podataka s dijelovima oko sebe: očitavanje senzora, ispis na zaslon, spremanje na memorijsku karticu. Protokol je skup pravila za tu razmjenu. On određuje koja žica nosi što, tko govori kada i kako se bajt šalje bit po bit.

I2C, SPI i UART su tri s kojima ćete se prvo susresti. Svaka pločica kompatibilna s Arduinom, ESP32 i Raspberry Pi podržava sva tri, a gotovo svaka breakout pločica koristi jedan od njih. NULA Mini ESP32-C6 dobra je pločica za učenje: ima Qwiic konektor za I2C i slobodne pinove za SPI i UART. Zero to Hero komplet korak po korak vodi kroz I2C senzore i zaslone.

I2C vs SPI vs UART na prvi pogled

Protokol Glavne žice Najbolje za Prednost Ograničenje
I2C 2 signalne žice: SDA, SCL Senzore, RTC module, male zaslone, IO expandere Više uređaja na jednoj sabirnici Sporiji od SPI-a, kratke udaljenosti
SPI 4 ili više: MOSI, MISO, SCLK, CS Brze zaslone, SD kartice, memoriju, brze senzore Brzina Koristi više pinova
UART 2 signalne žice: TX, RX Debugiranje, GPS, komunikaciju dviju pločica Jednostavnost, svugdje podržan Obično samo dva uređaja

Sva tri trebaju i zajedničku masu (ground) između uređaja.

Što je I2C?

I2C (Inter-Integrated Circuit) koristi dvije signalne linije. SDA nosi podatke, a SCL nosi takt (clock). Svaki uređaj na sabirnici spojen je na iste dvije linije i svaki ima vlastitu adresu, tako da kontroler može komunicirati sa svakim pojedinačno.

  • Malo žica. Deset senzora i dalje treba samo SDA, SCL, napajanje i masu.
  • Adrese. Svaki uređaj ima 7-bitnu adresu, poput 0x3C za mali OLED. Dva uređaja s istom adresom ne mogu dijeliti sabirnicu bez promjene jedne od njih.
  • Brzina. Obično 100 kHz ili 400 kHz. Dovoljno za senzore, presporo za veliku grafiku.
  • Udaljenost. Namijenjeno vezama unutar jednog uređaja, ne dugim kabelima.

I2C je uobičajeni protokol za senzore, satove realnog vremena (RTC), znakovne LCD zaslone, IO expandere i male zaslone. Qwiic konektori nose I2C putem jednog kabela, tako da nema potrebe za lemljenjem. PCF85063A sat realnog vremena i 16x2 I2C LCD spajaju se na taj način.

Mali OLED zaslon koji prikazuje Hello World, spojen na NULA pločicu pomoću Qwiic kabela
I2C OLED na jednom Qwiic kabelu: SDA, SCL, napajanje i masa u jednom priključku

Naš vodič za I2C protokol detaljno opisuje adresiranje i pull-up otpornike.

Što je SPI?

SPI (Serial Peripheral Interface) je brzi protokol. Koristi zasebne linije za svaki smjer plus takt, tako da podaci teku u oba smjera istovremeno:

  • MOSI prenosi podatke od kontrolera do uređaja.
  • MISO prenosi podatke s uređaja natrag do kontrolera.
  • SCLK je takt kojim upravlja kontroler.
  • CS (chip select) odabire koji uređaj sluša.

SPI često radi na desetke MHz, mnogo puta brže od I2C-a. Zato pokreće grafičke zaslone, SD kartice, flash memoriju i brze senzore. Cijena su pinovi: uređaji dijele MOSI, MISO i SCLK, ali svaki treba vlastitu CS liniju.

Soldered microSD kartica spojena na NULA pločicu na breadboardu sa šest kratkospojnika
microSD na SPI-u: MOSI, MISO, SCLK i CS, plus napajanje i masa

Solderedov microSD breakout je odličan prvi SPI uređaj: Arduino SD biblioteka upravlja protokolom, a vi dobivate pohranu datoteka za zapisivanje podataka.

Što je UART?

UART (Universal Asynchronous Receiver-Transmitter) je najjednostavniji od trojice. Jedna žica šalje (TX), jedna prima (RX) i nema linije takta. Umjesto toga, oba uređaja unaprijed dogovaraju brzinu, koja se naziva baud rate, poput 9600 ili 115200.

  • Od točke do točke. UART obično povezuje točno dva uređaja.
  • Križanje žica. TX jednog uređaja ide na RX drugog, i obrnuto.
  • Svugdje. Serijski monitor, GPS moduli, Bluetooth moduli, USB-to-serial adapteri i veze između pločica koriste ga.

Arduino serijski monitor je UART: vaša pločica komunicira s računalom putem USB-to-serial čipa. Za pločicu bez njega, USB-UART CH340 pretvarač obavlja isti posao. Za uređaje čiji je UART skriven unutar USB-C priključka, USB-Cereal čita serijski izlaz bez otvaranja kućišta.

L86-M33 GNSS GPS breakout spojen na NULA pločicu na dva breadboarda s TX, RX, napajanjem i masom
GPS modul na UART-u: šalje podatke o lokaciji kao tekst, otprilike jednom u sekundi

GPS moduli su klasičan UART uređaj. L86-M33 GNSS breakout šalje svoju poziciju kao retke teksta pod nazivom NMEA rečenice, a vaš ih kod čita kao i svaki drugi serijski unos. Za duže kabele, RS485 prenosi iste UART podatke stotinama metara kroz primopredajnik. Naš RS485 vodič objašnjava kako.

I2C vs SPI: Koja je razlika?

Značajka I2C SPI
Žice 2 signalne žice 4 ili više signalnih žica
Brzina Obično 100 do 400 kHz Često desetke MHz
Više uređaja Po adresi, na iste dvije žice Po chip selectu, svaka linija CS
Smjer podataka Jedan smjer odjednom Oba smjera istovremeno
Najbolje za Senzore, RTC, IO expandere, male zaslone Zaslone, SD kartice, memoriju
Jednostavnost za početnike Lakše ožičenje Više žica, ali brži

Ako spajate senzore, počnite s I2C-om. Ako uređaj prenosi puno podataka, poput zaslona u boji ili SD kartice, to će obično biti SPI.

UART vs I2C i SPI

UART radi drugačije od ostala dva. I2C i SPI imaju liniju takta i jedan kontroler koji je glavni, a obično povezuju dijelove unutar jednog uređaja. UART nema takt: obje strane šalju kad god žele, uz dogovorenu baud brzinu. Obično povezuje jedan uređaj s drugim.

  • GPS modul koji šalje svoju lokaciju
  • pločica koja ispisuje poruke za debugiranje na serijski monitor
  • dvije pločice koje razmjenjuju poruke
  • RS485 primopredajnik koji prenosi serijske podatke preko dugog kabela

Koji protokol koristiti za senzore?

  • I2C za većinu početničkih projekata sa senzorima. Senzori temperature, vlage, svjetlosti, udaljenosti i tlaka gotovo svi govore ovaj jezik.
  • SPI kada senzor brzo generira podatke, poput nekih IMU-a i brzih ADC-a.
  • UART kada senzor šalje serijske podatke, poput GPS modula.
  • RS485 kada je senzor udaljen desetke ili stotine metara.

Neki senzori ne koriste ništa od ovoga. Vodootporni DS18B20 koristi 1-Wire, koji treba samo jednu podatkovnu liniju i omogućuje dijeljenje između više senzora.

Koji protokol koristiti za zaslone?

  • I2C za jednostavan tekst: 16x2 znakovni LCD ili mali monokromatski OLED.
  • SPI za brže grafičke zaslone i zaslone u boji, gdje se pun zaslon piksela mora brzo osvježiti.
  • Inkplate kada projekt treba uvijek vidljiv, energetski učinkovit dashboard. ESP32 unutar njega upravlja e-papir zaslonom umjesto vas, a njegov Qwiic priključak prima I2C senzore.

Prvo odaberite zaslon za posao, a onda protokol slijedi. 16x2 LCD prikazuje vrijednosti uživo. Inkplate 10 ili Inkplate 6FLICK cijeli dan prikazuju vremensku prognozu, kalendar ili natpis za prostoriju. Naš vodič za LCD zaslone uspoređuje opcije.

I2C, SPI i UART s Arduinom

Pločice kompatibilne s Arduinom podržavaju sva tri, svaki s ugrađenom bibliotekom:

Protokol Arduino biblioteka Tipična upotreba
I2C Wire Senzori, LCD-i, RTC moduli
SPI SPI SD kartice, zasloni
UART Serial Serijski monitor, GPS, druge pločice

Većina biblioteka za senzore i zaslone poziva ih umjesto vas, pa rijetko izravno radite s protokolom. Make your own NULA komplet omogućuje vam lemljenje Arduino-kompatibilne pločice, a zatim upotrebu sva tri.

I2C, SPI i UART s ESP32

ESP32 pločice podržavaju sva tri, a većina pinova može se dodijeliti u kodu, pa je ožičenje fleksibilno. Razlika od Arduina je Wi-Fi: ESP32 očita I2C senzor, spremi podatke na SPI karticu i pošalje ih na MQTT ili Home Assistant u istom kodu.

NULA Mini ESP32-C6 dobro funkcionira kao kontroler za projekte sa senzorima i zaslonima. Za projekte na baterije, NULA DeepSleep ESP32-S3 troši samo oko 16 µA u stanju mirovanja između očitanja. Naši ESP32 projekti za početnike koriste sva tri protokola.

I2C, SPI i UART s Raspberry Pi

Raspberry Pi ima sva tri na svom GPIO zaglavlju. Uključite svaki u raspi-config pod Interface Options, a zatim ih koristite iz Pythona ili bilo kojeg drugog jezika.

Pi je bolji izbor kada projekt treba Linux, bazu podataka, dashboard ili veću procesorsku snagu: zapisivač podataka koji čita I2C senzore, GPS tracker na UART-u ili zaslon na SPI-u. Model od 8 GB ostavlja prostora za zahtjevnije servise. Naše Raspberry Pi ideje za projekte sadrže više primjera.

Česte pogreške pri odabiru I2C, SPI ili UART-a

  • SPI tamo gdje je dovoljan I2C. Četiri nepotrebne žice za senzor temperature koji se osvježava jednom u sekundi.
  • I2C na dugim kabelima. Namijenjen je za kratke udaljenosti; za duge dionice koristite RS485.
  • Nepoznavanje I2C adrese. Pokrenite I2C skener kod da vidite što je na sabirnici.
  • Zamijenjeni SDA i SCL. Ništa ne odgovara, i nema poruke o pogrešci.
  • TX na TX. UART linije se križaju: TX na RX, RX na TX.
  • Neusklađene brzine prijenosa (baud rates). Serijski monitor prikazuje znakove koje nije moguće pročitati.
  • Nedostaje SPI chip select. Svaki SPI uređaj treba svoju CS liniju.
  • Dva I2C uređaja s istom adresom. Promijenite adresu jednog pomoću premosnika ili koristite drugu sabirnicu.
  • Odabir zaslona prema protokolu. Odaberite ga prema tome što treba prikazati.
  • UART preko zgrade. Za udaljenost koristite RS485.

Naš vodič za pull-up otpornike objašnjava još jedan čest uzrok tihe I2C sabirnice.

Kratki vodič za odluke

Potreba projekta Najbolji izbor
Nekoliko senzora s malo žica I2C
Jednostavan tekstualni LCD I2C
Brzi zaslon ili SD kartica SPI
GPS modul UART
Debugiranje kroz serijski monitor UART
Izravna komunikacija dviju pločica UART
Duga žičana mreža senzora RS485
Senzor za pametnu kuću s Wi-Fi vezom ESP32 s I2C senzorom
Dashboard s malom potrošnjom Inkplate
Raspberry Pi zapisivač podataka I2C, SPI ili UART, ovisno o modulu

Zašto je Soldered sjajno mjesto za učenje komunikacijskih protokola

Protokole ćete najbrže naučiti koristeći ih. Počnite s I2C LCD-om ili RTC-om na Qwiic kabelu, dodajte microSD karticu preko SPI-a, očitajte GPS modul preko UART-a i pošaljite sve na Wi-Fi s ESP32 pločice. Soldered proizvodi pločice, breakout module i zaslone za svaki korak, a svaki ima dokumentaciju s uputama za spajanje i primjerom koda.

Često postavljana pitanja

Koja je razlika između I2C, SPI i UART-a?
I2C povezuje mnogo senzora ili modula pomoću dvije signalne žice. SPI je brži i odgovara zaslonima, SD karticama i memoriji. UART je jednostavna serijska komunikacija između dva uređaja, često korištena za debugiranje.

Je li I2C bolji od SPI-a?
Za jednostavno ožičenje i puno uređaja na jednoj sabirnici, da. Za brzinu, poput brzih zaslona, SD kartica ili memorije, SPI je bolji.

Je li SPI brži od I2C-a?
Da, obično mnogo puta brži. Zato ga koriste uređaji koji zahtijevaju puno podataka.

Za što se koristi UART?
Jednostavna serijska komunikacija između dva uređaja: debugiranje, GPS moduli, serijski adapteri, Bluetooth moduli i veze između pločica.

Koji je protokol najbolji za Arduino senzore?
I2C. Treba samo dvije signalne žice i mnogi senzori ih mogu dijeliti.

Koji je protokol najbolji za zaslone?
Ovisi o zaslonu. Znakovni LCD-i i mali OLED-i koriste I2C, brži grafički zasloni koriste SPI, a Inkplate sam upravlja svojim e-papir panelom.

Može li ESP32 koristiti I2C, SPI i UART?
Da, sva tri, što ga čini dobrim kontrolerom za povezane senzore, zaslone, MQTT i Home Assistant projekte.

Može li Raspberry Pi koristiti I2C, SPI i UART?
Da, putem svojih GPIO pinova nakon što se svaki interfejs uključi u raspi-config.

Što znače SDA i SCL?
SDA je I2C podatkovna linija, a SCL je I2C linija takta.

Što znače MOSI, MISO i SCLK?
To su SPI linije. MOSI nosi podatke od kontrolera do uređaja, MISO nosi podatke natrag, a SCLK je takt.

Što znače TX i RX?
Transmit (odašiljanje) i Receive (primanje), dvije UART linije. TX jednog uređaja spaja se na RX drugog.

Kada koristiti RS485 umjesto njih?
Kada su uređaji udaljeni, u bučnom okruženju ili trebaju dijeliti jednu dugu žičanu mrežu. I2C, SPI i UART su za kratke veze.

Proizvodi u ovom članku