Izbor između I2C i SPI, dve glavne opcije serijske komunikacije, mogu biti prilično izazov i imati značajan uticaj na dizajn projekta, pogotovo ako se koristi pogrešan komunikacijski protokol. I SPI i I2C donose svoje prednosti i ograničenja kao komunikacijski protokoli koji ih čine svima prilagođenim za određene aplikacije.
SPI
SPI ili Serial to Peripheral Interface je veoma niski, četverožični serijski komunikacijski interfejs dizajniran za IC kontrolere i periferne uređaje da komuniciraju jedni sa drugima. SPI bus je puno-dupleks bus, koji omogućava komunikaciju istosmjerno doći do i od glavnog uređaja sa brzinama do 10Mbps. Brza operacija SPI-a generalno ograničava to što se koristi za komuniciranje između komponenti na odvojenim PCB-ima zbog povećanja kapaciteta da komunikacija dužih daljina dodaje signalne linije. Kapacitet PCB-a takođe može ograničiti dužinu SPI komunikacionih linija.
Dok SPI je uspostavljen protokol, to nije zvanični standard koji vodi do nekoliko varijanti i SPI prilagođavanja koja mogu dovesti do problema sa kompatibilnošću. Implementacije SPI-a treba uvek biti proverene između glavnih kontrolera i robnih perifernih uređaja kako bi se osiguralo da kombinacija neće imati neočekivane probleme u komunikaciji koji će uticati na razvoj proizvoda.
I2C
I2C je zvanični standardni serijski komunikacijski protokol koji zahteva samo dve signalne linije koje su dizajnirane za komunikaciju između čipova na PCB-u. I2C je originalno dizajniran za komunikaciju od 100kbps, ali su brži modovi prenosa podataka razvijeni tokom godina kako bi se postigli brzini do 3,4Mbps. I2C protokol je uspostavljen kao zvanični standard, koji obezbeđuje dobru kompatibilnost između I2C implementacija i dobre kompatibilnosti za nazad.
Izbor između I2C i SPI
Izbor između I2c i SPI, dva glavna serijska komunikacijska protokola, zahteva dobro razumijevanje prednosti i ograničenja I2C, SPI i vaše aplikacije. Svaki komunikacijski protokol imaće određene prednosti koje će se naglašavati kako se odnosi na vašu aplikaciju. Ključne razlike između I2C i SPI su:
- I2C zahtijeva samo dvije žice, dok SPI zahtijeva tri ili četiri
- SPI podržava punu dupleks komunikaciju veće brzine dok je I2C sporiji
- I2C povlači više snage nego SPI
- I2C podržava više uređaja na istoj magistrali bez dodatnih linija za odabir signala putem adresiranja u komunikacijskom uređaju dok SPI zahtijeva dodatne linije signala za upravljanje više uređaja na istoj magistrali
- I2C osigurava da slanje podataka primi slave uređaj dok SPI ne provjerava da li su podaci ispravno primljeni
- I2C može da zaključava jedan uređaj koji ne oslobađa komunikacionu sabirnicu
- SPI ne može da emituje PCB dok I2C može, iako pri niskim brzinama prenosa podataka
- I2C je jeftiniji za implementaciju nego SPI komunikacijski protokol
- SPI podržava samo jedan glavni uređaj na autobusu dok I2C podržava više glavnih uređaja
- I2C je manje podložan buci nego SPI
- SPI može da putuje samo kratkim rastojanjima i retko izlazi iz PCB-a dok I2C može preneti podatke na mnogo većim rastojanjima, mada pri niskim brzinama prenosa podataka
- Nedostatak formalnog standarda rezultirao je nekoliko varijacija SPI protokola, varijacija koje su u velikoj mjeri izbjegnute sa I2C protokolom
Ove razlike između SPI i I2C bi trebalo da olakšaju odabir najbolje komunikacijske opcije za vašu aplikaciju. I SPI i I2C su dobre komunikacijske opcije, ali svaka ima nekoliko različitih prednosti i poželjnih aplikacija. Sve u svemu, SPI je bolji za aplikacije velikih brzina i niske snage dok je I2C bolji za komunikaciju sa velikim brojem perifernih uređaja i dinamičkom promjenom uloge glavnog uređaja među periferijama na I2C busu. I SPI i I2C su robustni, stabilni komunikacijski protokoli za ugrađene aplikacije koji su pogodni za ugrađeni svet.