有很多串行通信協(xié)議,但其中I2C和SPI非常有名。I2C 和 SPI 都是總線協(xié)議,允許用戶進(jìn)行短距離的串行數(shù)據(jù)傳輸。I2C是飛利浦(現(xiàn)在是NXP)制造的兩線通信,而SPI是摩托羅拉制造的。
這兩種協(xié)議通常用于智能手機(jī)、電視和筆記本電腦等電子設(shè)備中,以控制電源管理芯片、存儲(chǔ)設(shè)備、輸入設(shè)備等外圍設(shè)備。
在本文中,我們討論一下I2C和SPI之間的區(qū)別。本文討論的目錄如下:
一:什么是I2C
I2C 是一種串行通信協(xié)議。它為慢速設(shè)備提供了很好的支持,例如EEPROM、ADC和RTC等。I2c不僅可以在單板使用,還可通過電纜與板連接的其他外部組件一起使用。
I2C是一種兩線通信協(xié)議。它僅使用兩根線進(jìn)行通信。其中一根線用于數(shù)據(jù)(SDA),另一根線用于時(shí)鐘(SCL)。
在 I2C 中,兩條總線都是雙向的,這意味著主機(jī)能夠發(fā)送和接收來自從機(jī)的數(shù)據(jù)。時(shí)鐘總線由主機(jī)控制,但在某些情況下,從機(jī)也能夠抑制時(shí)鐘信號(hào)。
二:I2C協(xié)議的優(yōu)點(diǎn)
I2C 協(xié)議有很多優(yōu)點(diǎn),使得用戶在很多應(yīng)用中不得不使用 I2C 協(xié)議。
它是同步通信協(xié)議,因此主從不需要精確的振蕩器。
它只需要兩根線,一根用于數(shù)據(jù) (SDA),另一根用于時(shí)鐘 (SCL)。
它為用戶提供了根據(jù)要求選擇傳輸速率的靈活性。
在 I2C 總線中,總線上的每個(gè)設(shè)備都是可獨(dú)立尋址的。
它遵循主從關(guān)系。
它能夠處理 I2C 總線上的多個(gè)主機(jī)和多個(gè)從機(jī)。
I2C 具有一些重要功能,例如仲裁、時(shí)鐘同步和時(shí)鐘延長。
I2C 提供 ACK/NACK(確認(rèn)/未確認(rèn))功能,可幫助處理錯(cuò)誤。
三:I2C總線的缺點(diǎn)
I2C 協(xié)議有很多優(yōu)勢,但除此之外,I2C也會(huì)存在缺點(diǎn)。
由于開漏拓?fù)?,它比其他串行通信總線消耗的功率更多。
它只適用于短距離。
I2C 協(xié)議對(duì)從機(jī)的數(shù)量有一定的限制,從機(jī)的數(shù)量取決于 I2C 總線的電容。
它只提供一些有限的通信速度,如 100 kbit/s、400 kbit/s 等。
在 I2c 中,設(shè)備可以設(shè)置它們的通信速度,并且在運(yùn)行時(shí)需要等待應(yīng)答信號(hào)等,運(yùn)行速度較慢的設(shè)備可能會(huì)延遲速度較快的設(shè)備的運(yùn)行。
四:什么是SPI?
SPI(serial peripheral interface)是基于四線的全雙工通信協(xié)議,這些線通常被稱為 MOSI(master out slave in)、MISO(master in slave out)、SCL(由 master 產(chǎn)生的串行時(shí)鐘)和 SS(slave 選擇線,用于在通信期間選擇特定從站)。
SPI 遵循主從架構(gòu),通信始終由主機(jī)啟動(dòng)。與 I2C 一樣,它也是一種同步通信協(xié)議,因?yàn)闀r(shí)鐘由主機(jī)和從機(jī)共享。
SPI 僅支持多從機(jī)不支持多主機(jī),從機(jī)由從機(jī)選擇信號(hào)選擇。在 SPI 中,通信期間數(shù)據(jù)從主機(jī)移出并通過移位寄存器移入從機(jī),反之亦然。
五:SPI通信的優(yōu)點(diǎn)
總結(jié)的SPI通信協(xié)議的優(yōu)點(diǎn)如下:
沒有開始位和停止位,因此數(shù)據(jù)可以連續(xù)流式傳輸而不會(huì)中斷。
它支持全雙工。
從設(shè)備中不需要精密振蕩器,因?yàn)樗褂弥鲿r(shí)鐘。
沒有像 I2C 這樣復(fù)雜的從機(jī)尋址系統(tǒng)。
比 I2C 更高的數(shù)據(jù)傳輸速率(幾乎快兩倍)。
MISO和MOSI線分開,可以同時(shí)發(fā)送和接收數(shù)據(jù)。
軟件實(shí)現(xiàn)比較簡單。
六:SPI通信的缺點(diǎn)
如果有多個(gè)從站進(jìn)行通信,則接線會(huì)很復(fù)雜。
使用四根線(I2C 和 UART 使用兩根線)。
沒有確認(rèn)數(shù)據(jù)已成功接收(I2C有)。
沒有像 UART 中的奇偶校驗(yàn)位那樣的錯(cuò)誤檢查形式。
它只允許一個(gè)主機(jī)。
七:SPI和I2C的區(qū)別
在嵌入式系統(tǒng)中,I2C和SPI都扮演著重要的角色。兩種通信協(xié)議都是同步通信的例子,但仍然有一些重要的區(qū)別。
在下表中,列出了SPI和I2C之間的一些常見差異。
I2C | SPI |
---|---|
????????I2C 可以是多主機(jī)和多從機(jī),這意味著可以有多個(gè)主機(jī)和從機(jī)連接到 I2C 總線。 | SPI 可以支持多從機(jī),不支持多主機(jī),這意味著只能有一個(gè)主機(jī)連接到 SPI 總線 |
I2C 是一種半雙工通信協(xié)議 | SPI 是一種全雙工通信協(xié)議 |
I2C 具有時(shí)鐘延長的特性,這意味著如果從機(jī)無法以足夠快的速度發(fā)送快速數(shù)據(jù),則它會(huì)抑制時(shí)鐘以停止通信。 | SPI無始終延長特性 |
I2C僅使用兩根線進(jìn)行通信,一根用于數(shù)據(jù),另一根用于時(shí)鐘 | SPI 需要三線或四線進(jìn)行通信(取決于要求):MOSI、MISO、SCL 和片選引腳 |
通信速度:I2C 比 SPI 慢 | 與 I2C 相比,SPI 更快 |
I2C 比 SPI 消耗更多功率 | 與 I2C 相比,功耗更低 |
I2C 比 SPI 更不易受噪聲影響 | SPI 比 I2C 更容易受到噪聲的影響 |
I2C 比 SPI 通信協(xié)議實(shí)現(xiàn)起來更便宜 | 與 I2C 相比,成本較高 |
I2C 工作在“線與”邏輯上,它有一個(gè)上拉電阻 | 在 SPI 的情況下不需要上拉電阻 |
在 I2C 通信中,我們在每個(gè)字節(jié)后得到確認(rèn)位 | SPI 通信協(xié)議不支持確認(rèn)位 |
I2C 確保發(fā)送的數(shù)據(jù)被從設(shè)備接收 | SPI 不驗(yàn)證數(shù)據(jù)是否正確接收 |
I2C 是一種多主機(jī)通信協(xié)議,所以它具有仲裁功能 | SPI 不是多主機(jī)通信協(xié)議,因此它不具備仲裁屬性 |
I2C 是基于地址的總線協(xié)議,通信前需要發(fā)送從機(jī)的地址 | 在 SPI 的情況下,您必須使用從機(jī)選擇引腳選擇從機(jī)進(jìn)行通信 |
由于開始位和停止位,I2C 有一些額外的開銷 | SPI 沒有開始位和停止位 |
I2C 支持同一總線上的多個(gè)設(shè)備,無需任何額外的選擇線(根據(jù)設(shè)備地址工作) | SPI 需要額外的信號(hào)(從選擇線)線來管理同一總線上的多個(gè)設(shè)備 |
I2C更適合長距離 | SPI更適合短距離 |
I2C 由 NXP 開發(fā) | SPI 由摩托羅拉開發(fā) |
審核編輯:劉清
-
EEPROM
+關(guān)注
關(guān)注
9文章
1019瀏覽量
81557 -
SPI協(xié)議
+關(guān)注
關(guān)注
0文章
18瀏覽量
8361 -
I2C協(xié)議
+關(guān)注
關(guān)注
0文章
26瀏覽量
8472
原文標(biāo)題:通過一張表區(qū)分I2C和SPI通信協(xié)議(都是串行通信,兩者有什么區(qū)別)
文章出處:【微信號(hào):玩轉(zhuǎn)單片機(jī)與嵌入式,微信公眾號(hào):玩轉(zhuǎn)單片機(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論