Å velge mellom I2C og SPI, de to viktigste serielle kommunikasjonsalternativene, kan være en ganske utfordring og ha en betydelig innvirkning på utformingen av et prosjekt, spesielt hvis feil kommunikasjonsprotokoll brukes. Både SPI og I2C gir sine egne fordeler og begrensninger som kommunikasjonsprotokoller som gjør at de passer hver for spesifikke applikasjoner.
SPI
SPI, eller Serial to Peripheral Interface, er et meget lavt strømforsyning, fire leders serielt kommunikasjonsgrensesnitt designet for IC-kontrollere og eksterne enheter for å kommunisere med hverandre. SPI-bussen er en full dupleksbuss, som tillater kommunikasjon til og fra hovedenheten samtidig med hastigheter på opptil 10 Mbps. Høyhastighetsoperasjonen til SPI begrenser det vanligvis fra å bli brukt til å kommunisere mellom komponenter på separate PCBer på grunn av økt kapasitans som lengre avstandskommunikasjon legger til signallinjene. PCB-kapasitans kan også begrense lengden på SPI-kommunikasjonslinjer.
Mens SPI er en etablert protokoll, er det ikke en offisiell standard som fører til flere varianter og SPI-tilpassinger som kan føre til kompatibilitetsproblemer. SPI-implementeringer bør alltid kontrolleres mellom mastercontrollers og slave peripherals for å sikre at kombinasjonen ikke har noen uventede kommunikasjonsproblemer som vil påvirke utviklingen av et produkt.
I2C
I2C er en offisiell standard seriell kommunikasjonsprotokoll som bare krever to signallinjer som var designet for kommunikasjon mellom sjetonger på en PCB. I2C ble opprinnelig utviklet for kommunikasjon på 100kbps, men raskere dataoverføringsmoduser har blitt utviklet gjennom årene for å oppnå hastigheter på opptil 3,4 Mbps. I2C-protokollen er etablert som en offisiell standard, noe som gir god kompatibilitet blant I2C-implementeringer og god bakoverkompatibilitet.
Velger mellom I2C og SPI
Valg mellom I2c og SPI, de to viktigste serielle kommunikasjonsprotokollene, krever en god forståelse av fordelene og begrensningene til I2C, SPI og din søknad. Hver kommunikasjonsprotokoll vil ha forskjellige fordeler som vil ha en tendens til å skille seg fra når det gjelder søknaden din. Hovedforskjellene mellom I2C og SPI er:
- I2C krever bare to ledninger, mens SPI krever tre eller fire
- SPI støtter høyere hastighet full dupleks kommunikasjon mens I2C er tregere
- I2C trekker mer strøm enn SPI
- I2C støtter flere enheter på samme buss uten flere valgsignallinjer via adressekommunikasjonsenhet adressering mens SPI krever flere signallinjer for å administrere flere enheter på samme buss
- I2C sikrer at sendte data mottas av slaveenheten mens SPI ikke bekrefter at dataene er mottatt riktig
- I2C kan låses opp av en enhet som ikke slipper kommunikasjonsbussen
- SPI kan ikke overføre PCB mens I2C kan, om enn ved lave dataoverføringshastigheter
- I2C er billigere å implementere enn SPI kommunikasjonsprotokollen
- SPI støtter bare en hovedenhet på bussen mens I2C støtter flere hovedenheter
- I2C er mindre utsatt for støy enn SPI
- SPI kan bare reise korte avstander og sjelden av PCB mens I2C kan overføre data over langt større avstander, men ved lave datahastigheter
- Mangelen på en formell standard har resultert i flere variasjoner av SPI-protokollen, variasjoner som i stor grad unngås med I2C-protokollen
Disse forskjellene mellom SPI og I2C bør gjøre det enklere å velge det beste kommunikasjonsalternativet for søknaden din. Både SPI og I2C er gode kommunikasjonsalternativer, men hver har noen få fordeler og foretrukne applikasjoner. Samlet sett er SPI bedre for høyhastighets og lavt strømforsyning, mens I2C er bedre egnet for kommunikasjon med et stort antall eksterne enheter og dynamisk endring av hovedenhetens rolle blant eksterne enheter på I2C-bussen. Både SPI og I2C er robuste, stabile kommunikasjonsprotokoller for innebygde applikasjoner som passer godt til den innebygde verden.