At vælge mellem I2C og SPI, de to vigtigste serielle kommunikationsindstillinger, kan være en ganske udfordring og have en væsentlig indflydelse på design af et projekt, især hvis den forkerte kommunikationsprotokol bruges. Både SPI og I2C bringer deres egne fordele og begrænsninger som kommunikationsprotokoller, som gør dem hver især egnet til specifikke applikationer.
SPI
SPI, eller Serial to Peripheral Interface, er en meget lav strøm, fire-wire seriel kommunikation interface designet til IC controllere og eksterne enheder til at kommunikere med hinanden. SPI-bussen er en fuld duplex bus, der tillader kommunikation til at strømme til og fra masterenheden samtidig med hastigheder på op til 10 Mbps. Den hurtige drift af SPI begrænser det generelt til at blive brugt til at kommunikere mellem komponenter på separate PCB'er på grund af den øgede kapacitans, som længere afstandskommunikation tilføjer til signallinjerne. PCB kapacitans kan også begrænse længden af SPI kommunikationslinjer.
Mens SPI er en etableret protokol, er det ikke en officiel standard, der fører til flere varianter og SPI-tilpasninger, der kan føre til kompatibilitetsproblemer. SPI implementeringer skal altid kontrolleres mellem master controllers og slave perifere enheder for at sikre, at kombinationen ikke har nogen uventede kommunikationsproblemer, der vil påvirke udviklingen af et produkt.
I2C
I2C er en officiel standard seriel kommunikationsprotokol, der kun kræver to signallinjer, der er designet til kommunikation mellem chips på et printkort. I2C blev oprindeligt designet til kommunikation med 100kbps, men hurtigere dataoverføringsformer er blevet udviklet gennem årene for at opnå hastigheder på op til 3,4 Mbps. I2C-protokollen er blevet oprettet som en officiel standard, der sikrer god kompatibilitet mellem I2C-implementeringer og god bagudkompatibilitet.
Valg mellem I2C og SPI
Valg mellem I2c og SPI, de to vigtigste serielle kommunikationsprotokoller kræver en god forståelse af fordelene og begrænsningerne af I2C, SPI og din applikation. Hver kommunikationsprotokol vil have forskellige fordele, som vil være tilbøjelige til at skelne sig selv, som det gælder for din ansøgning. Nøgleforskellene mellem I2C og SPI er:
- I2C kræver kun to ledninger, mens SPI kræver tre eller fire
- SPI understøtter højere hastighed fuld duplex kommunikation, mens I2C er langsommere
- I2C trækker mere strøm end SPI
- I2C understøtter flere enheder på den samme bus uden yderligere valgsignal linjer via adressekommunikationsenhed adressering, mens SPI kræver yderligere signal linjer til at styre flere enheder på samme bus
- I2C sikrer, at data sendt er modtaget af slaveenheden, mens SPI ikke verificerer, at dataene er modtaget korrekt
- I2C kan låses op af en enhed, der undlader at frigive kommunikationsbussen
- SPI kan ikke overføre PCB'en, mens I2C kan, omend ved lave dataoverførselshastigheder
- I2C er billigere at implementere end SPI-kommunikationsprotokollen
- SPI understøtter kun en masterenhed på bussen, mens I2C understøtter flere masterenheder
- I2C er mindre modtagelig for støj end SPI
- SPI kan kun rejse korte afstande og sjældent slukke for printkortet, mens I2C kan transmittere data over langt større afstande, selv om det ved lave datahastigheder
- Manglen på en formel standard har resulteret i flere variationer af SPI-protokollen, variationer, der i vid udstrækning er blevet undgået med I2C-protokollen
Disse sondringer mellem SPI og I2C bør gøre det lettere at vælge den bedste kommunikationsmulighed for din ansøgning. Både SPI og I2C er gode kommunikationsmuligheder, men hver har nogle få fordele og foretrukne applikationer. Generelt er SPI bedre til højhastigheds-applikationer med lav effekt, mens I2C er bedre egnet til kommunikation med et stort antal eksterne enheder og dynamisk ændring af hovedenhedens rolle blandt de eksterne enheder på I2C-bussen. Både SPI og I2C er robuste, stabile kommunikationsprotokoller til indlejrede applikationer, som er velegnede til den indlejrede verden.