第一個區(qū)別當然是名字:
SPI(Serial Peripheral Interface:串行外設接口);
I2C(INTER IC BUS:意為IC之間總線)
UART(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)器)
SPI總線由三條信號線組成:串行時鐘(SCLK)、串行數(shù)據(jù)輸出(SDO)、串行數(shù)據(jù)輸入(SDI)。SPI總線可以實現(xiàn)多個SPI設備互相連接。提供SPI串行時鐘的SPI設備為SPI主機或主設備(Master),其他設備為SPI從機或從設備(Slave)。主從設備間可以實現(xiàn)全雙工通信,當有多個從設備時,還可以增加一條從設備選擇線。

如果用通用IO口模擬SPI總線,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口則視實現(xiàn)的設備類型而定,如果要實現(xiàn)主從設備,則需輸入輸出口,若只實現(xiàn)主設備,則需輸出口即可,若只實現(xiàn)從設備,則只需輸入口即可。
I2C總線是雙向、兩線(SCL、SDA)、串行、多主控(multi-master)接口標準,具有總線仲裁機制,非常適合在器件之間進行近距離、非經常性的數(shù)據(jù)通信。在它的協(xié)議體系中,傳輸數(shù)據(jù)時都會帶上目的設備的設備地址,因此可以實現(xiàn)設備組網(wǎng)。如果用通用IO口模擬I2C總線,并實現(xiàn)雙向傳輸,則需一個輸入輸出口(SDA),另外還需一個輸出口(SCL)。

UART總線是異步串口,因此一般比前兩種同步串口的結構要復雜很多,一般由波特率產生器(產生的波特率等于傳輸波特率的16倍)、UART接收器、UART發(fā)送器組成,硬件上由兩根線,一根用于發(fā)送,一根用于接收。
顯然,如果用通用IO口模擬UART總線,則需一個輸入口,一個輸出口。
第三,從第二點明顯可以看出,SPI和UART可以實現(xiàn)全雙工,但I2C不行;
總結:I2C線更少,比UART、SPI更為強大,但是技術上也更加麻煩些,因為I2C需要有雙向IO的支持,而且使用上拉電阻,抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠距離通信。SPI實現(xiàn)要簡單一些,UART需要固定的波特率,就是說兩位數(shù)據(jù)的間隔要相等,而SPI則無所謂,因為它是有時鐘的協(xié)議。
缺點:I2C的速度比SPI慢一點,協(xié)議比SPI復雜一點,但是連線也比標準的SPI要少。
審核編輯 黃昊宇
-
SPI
+關注
關注
17文章
1885瀏覽量
100874 -
I2C
+關注
關注
28文章
1555瀏覽量
131059 -
uart
+關注
關注
22文章
1313瀏覽量
106510
發(fā)布評論請先 登錄
I2C 為什么只要兩根線就能搞定通信?
I2C的缺點介紹
UART、SPI、I2C 實戰(zhàn)對比:哪個更適合你的項目?
SPI、I2C、UART三種串行總線的區(qū)別與對比
SPI、I2C、I2S、UART:通信協(xié)議解釋
SPI、I2C、I2S、UART:通信協(xié)議對比表
Diodes公司推出高性能I2C/SPI總線至雙通道UART網(wǎng)橋PI7C9X762Q
AT32F403A 移植RT-thread時SPI DMA和I2C DMA 沖突怎么解決?
深入剖析I2C協(xié)議
CYW20829全雙工UART和I2C Master同時工作導致UART log輸出異常怎么解決?
第十八章 I2C通信測試
【干貨】帶你了解各類串口:I2C、SPI、RS232、RS485、USB等
I2C,UART,SPI之間的區(qū)別是什么
評論