有很多串行通信協(xié)議,但其中I2C和SPI非常有名。I2C 和 SPI 都是總線協(xié)議,允許用戶進行短距離的串行數(shù)據(jù)傳輸。I2C是飛利浦(現(xiàn)在是NXP)制造的兩線通信,而SPI是摩托羅拉制造的。
這兩種協(xié)議通常用于智能手機、電視和筆記本電腦等電子設(shè)備中,以控制電源管理芯片、存儲設(shè)備、輸入設(shè)備等外圍設(shè)備。
在本文中,我們討論一下I2C和SPI之間的區(qū)別。本文討論的目錄如下:
一:什么是I2C
I2C 是一種串行通信協(xié)議。它為慢速設(shè)備提供了很好的支持,例如EEPROM、ADC和RTC等。I2c不僅可以在單板使用,還可通過電纜與板連接的其他外部組件一起使用。
I2C是一種兩線通信協(xié)議。它僅使用兩根線進行通信。其中一根線用于數(shù)據(jù)(SDA),另一根線用于時鐘(SCL)。
在 I2C 中,兩條總線都是雙向的,這意味著主機能夠發(fā)送和接收來自從機的數(shù)據(jù)。時鐘總線由主機控制,但在某些情況下,從機也能夠抑制時鐘信號。

二:I2C協(xié)議的優(yōu)點
I2C 協(xié)議有很多優(yōu)點,使得用戶在很多應(yīng)用中不得不使用 I2C 協(xié)議。
它是同步通信協(xié)議,因此主從不需要精確的振蕩器。
它只需要兩根線,一根用于數(shù)據(jù) (SDA),另一根用于時鐘 (SCL)。
它為用戶提供了根據(jù)要求選擇傳輸速率的靈活性。
在 I2C 總線中,總線上的每個設(shè)備都是可獨立尋址的。
它遵循主從關(guān)系。
它能夠處理 I2C 總線上的多個主機和多個從機。
I2C 具有一些重要功能,例如仲裁、時鐘同步和時鐘延長。
I2C 提供 ACK/NACK(確認/未確認)功能,可幫助處理錯誤。
三:I2C總線的缺點
I2C 協(xié)議有很多優(yōu)勢,但除此之外,I2C也會存在缺點。
由于開漏拓撲,它比其他串行通信總線消耗的功率更多。
它只適用于短距離。
I2C 協(xié)議對從機的數(shù)量有一定的限制,從機的數(shù)量取決于 I2C 總線的電容。
它只提供一些有限的通信速度,如 100 kbit/s、400 kbit/s 等。
在 I2c 中,設(shè)備可以設(shè)置它們的通信速度,并且在運行時需要等待應(yīng)答信號等,運行速度較慢的設(shè)備可能會延遲速度較快的設(shè)備的運行。
四:什么是SPI?
SPI(serial peripheral interface)是基于四線的全雙工通信協(xié)議,這些線通常被稱為 MOSI(master out slave in)、MISO(master in slave out)、SCL(由 master 產(chǎn)生的串行時鐘)和 SS(slave 選擇線,用于在通信期間選擇特定從站)。

SPI 遵循主從架構(gòu),通信始終由主機啟動。與 I2C 一樣,它也是一種同步通信協(xié)議,因為時鐘由主機和從機共享。
SPI 僅支持多從機不支持多主機,從機由從機選擇信號選擇。在 SPI 中,通信期間數(shù)據(jù)從主機移出并通過移位寄存器移入從機,反之亦然。
五:SPI通信的優(yōu)點
總結(jié)的SPI通信協(xié)議的優(yōu)點如下:
沒有開始位和停止位,因此數(shù)據(jù)可以連續(xù)流式傳輸而不會中斷。
它支持全雙工。
從設(shè)備中不需要精密振蕩器,因為它使用主時鐘。
沒有像 I2C 這樣復(fù)雜的從機尋址系統(tǒng)。
比 I2C 更高的數(shù)據(jù)傳輸速率(幾乎快兩倍)。
MISO和MOSI線分開,可以同時發(fā)送和接收數(shù)據(jù)。
軟件實現(xiàn)比較簡單。
六:SPI通信的缺點
如果有多個從站進行通信,則接線會很復(fù)雜。
使用四根線(I2C 和 UART 使用兩根線)。
沒有確認數(shù)據(jù)已成功接收(I2C有)。
沒有像 UART 中的奇偶校驗位那樣的錯誤檢查形式。
它只允許一個主機。
七:SPI和I2C的區(qū)別
在嵌入式系統(tǒng)中,I2C和SPI都扮演著重要的角色。兩種通信協(xié)議都是同步通信的例子,但仍然有一些重要的區(qū)別。
在下表中,列出了SPI和I2C之間的一些常見差異。
| I2C | SPI |
|---|---|
| ????????I2C 可以是多主機和多從機,這意味著可以有多個主機和從機連接到 I2C 總線。 | SPI 可以支持多從機,不支持多主機,這意味著只能有一個主機連接到 SPI 總線 |
| I2C 是一種半雙工通信協(xié)議 | SPI 是一種全雙工通信協(xié)議 |
| I2C 具有時鐘延長的特性,這意味著如果從機無法以足夠快的速度發(fā)送快速數(shù)據(jù),則它會抑制時鐘以停止通信。 | SPI無始終延長特性 |
| I2C僅使用兩根線進行通信,一根用于數(shù)據(jù),另一根用于時鐘 | SPI 需要三線或四線進行通信(取決于要求):MOSI、MISO、SCL 和片選引腳 |
| 通信速度:I2C 比 SPI 慢 | 與 I2C 相比,SPI 更快 |
| I2C 比 SPI 消耗更多功率 | 與 I2C 相比,功耗更低 |
| I2C 比 SPI 更不易受噪聲影響 | SPI 比 I2C 更容易受到噪聲的影響 |
| I2C 比 SPI 通信協(xié)議實現(xiàn)起來更便宜 | 與 I2C 相比,成本較高 |
| I2C 工作在“線與”邏輯上,它有一個上拉電阻 | 在 SPI 的情況下不需要上拉電阻 |
| 在 I2C 通信中,我們在每個字節(jié)后得到確認位 | SPI 通信協(xié)議不支持確認位 |
| I2C 確保發(fā)送的數(shù)據(jù)被從設(shè)備接收 | SPI 不驗證數(shù)據(jù)是否正確接收 |
| I2C 是一種多主機通信協(xié)議,所以它具有仲裁功能 | SPI 不是多主機通信協(xié)議,因此它不具備仲裁屬性 |
| I2C 是基于地址的總線協(xié)議,通信前需要發(fā)送從機的地址 | 在 SPI 的情況下,您必須使用從機選擇引腳選擇從機進行通信 |
| 由于開始位和停止位,I2C 有一些額外的開銷 | SPI 沒有開始位和停止位 |
| I2C 支持同一總線上的多個設(shè)備,無需任何額外的選擇線(根據(jù)設(shè)備地址工作) | SPI 需要額外的信號(從選擇線)線來管理同一總線上的多個設(shè)備 |
| I2C更適合長距離 | SPI更適合短距離 |
| I2C 由 NXP 開發(fā) | SPI 由摩托羅拉開發(fā) |
審核編輯:劉清
-
EEPROM
+關(guān)注
關(guān)注
9文章
1135瀏覽量
85920 -
SPI協(xié)議
+關(guān)注
關(guān)注
0文章
24瀏覽量
8829 -
I2C協(xié)議
+關(guān)注
關(guān)注
0文章
29瀏覽量
9180
原文標(biāo)題:通過一張表區(qū)分I2C和SPI通信協(xié)議(都是串行通信,兩者有什么區(qū)別)
文章出處:【微信號:玩轉(zhuǎn)單片機與嵌入式,微信公眾號:玩轉(zhuǎn)單片機與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
i2c通信協(xié)議
SPI、I2C、UART串行總線協(xié)議
spi與i2c總線協(xié)議的對比分析
I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)
關(guān)于stm32通信協(xié)議:軟件模擬SPI、軟件模擬I2C的總結(jié)(fishing_8)
i2c和spi通信協(xié)議的概念與區(qū)別 I2C/SPI總線通信協(xié)議你搞懂沒有
I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus
SPI和I2C通信協(xié)議:應(yīng)用與區(qū)別
簡單認識I2C通信協(xié)議
SPI、I2C、I2S、UART:通信協(xié)議對比表
I2C和SPI通信協(xié)議的主要差異在哪?
評論