Сериен периферен интерфейс (SPI) се използва за комуникация на къси разстояния, особено във вградени системи. По-често срещан сериен комуникационен протокол е I2C, който улеснява комуникацията между електронните компоненти, независимо дали компонентите са на една и съща печатна платка или са свързани с кабел.
Изборът между I2C и SPI, двата основни протокола за серийна комуникация, изисква солидно разбиране на предимствата и ограниченията на I2C, SPI и приложението. Всеки комуникационен протокол има различни предимства, които се отличават, когато се прилагат към вашето приложение.
- По-добро за приложения с висока скорост и ниска мощност.
- Не е официален стандарт – обикновено по-малко съвместим.
- По-добро за комуникация с няколко периферни устройства и промяна на ролята на основното устройство.
- Стандартизацията осигурява по-добра съвместимост.
SPI е по-добър за приложения с висока скорост и ниска мощност. I2C е по-подходящ за комуникация с голям брой периферни устройства. И SPI, и I2C са надеждни, стабилни комуникационни протоколи за вградени приложения, които са много подходящи за света на вградените устройства.
SPI плюсове и минуси
-
Поддържа високоскоростна пълнодуплексна комуникация.
- Много ниска мощност.
- Къси разстояния на трансфер, не може да комуникира между компоненти на отделни печатни платки.
- Няколко варианта и персонализации могат да създадат проблеми със съвместимостта.
- Изисква допълнителни сигнални линии за управление на множество устройства на една и съща шина.
- Не проверява дали данните са получени правилно.
- По-податливи на шум.
Serial to Peripheral Interface е четирипроводен сериен комуникационен интерфейс с много ниска мощност. Той е проектиран така, че IC контролерите и периферните устройства да могат да комуникират помежду си. SPI шината е пълна дуплексна шина, която позволява комуникацията да протича към и от основното устройство едновременно със скорости до 10 Mbps. Високоскоростната работа на SPI обикновено го ограничава да бъде използван за комуникация между компоненти на отделни печатни платки поради увеличаването на капацитета, което комуникацията на по-голямо разстояние добавя към сигналните линии. Капацитетът на PCB също може да ограничи дължината на SPI комуникационните линии.
Въпреки че SPI е установен протокол, той не е официален стандарт. SPI предлага няколко варианта и персонализации, които водят до проблеми със съвместимостта. Реализациите на SPI винаги трябва да се проверяват между първичните контролери и вторичните периферни устройства, за да се гарантира, че комбинацията няма да има неочаквани комуникационни проблеми, които да повлияят на разработването на продукт.
I2C плюсове и минуси
- Поддържа множество устройства на една и съща шина без допълнителни избрани сигнални линии чрез адресиране на комуникационно устройство.
- Официалният стандарт осигурява съвместимост между реализациите на I2C и обратна съвместимост.
- Гарантира, че изпратените данни се получават от вторичното устройство.
- Може да предава извън PCB, но при ниски скорости на предаване.
- По-евтино за внедряване от комуникационния протокол SPI.
- По-малко податлив на шум от SPI.
-
Предаване на данни на по-големи разстояния.
- По-ниски скорости на трансфер и данни.
- Може да бъде заключено от едно устройство, което не успява да освободи комуникационната шина.
- Извлича повече енергия от SPI.
I2C е официален стандартен сериен комуникационен протокол, който изисква само две сигнални линии, които са предназначени за комуникация между чипове на PCB. I2C първоначално е проектиран за 100 kbps комуникация. Въпреки това през годините са разработени по-бързи режими на предаване на данни за постигане на скорости до 3,4 Mbps. Протоколът I2C е установен като официален стандарт, осигуряващ добра съвместимост между реализациите на I2C и добра обратна съвместимост.
В допълнение към горния списък с плюсове и минуси, I2C изисква само два проводника. SPI изисква три или четири. Освен това SPI поддържа само едно основно устройство в шината, докато I2C поддържа множество първични устройства.
Избор между I2C и SPI
Като цяло, SPI е по-добър за приложения с висока скорост и ниска мощност, докато I2C е по-подходящ за комуникация с голям брой периферни устройства, както и в ситуации, включващи динамична промяна на основната роля на устройството сред периферните устройства в I2C автобус.