在與ECU或者嵌入式相關(guān)的工作中, 我們肯定會接觸到各種通信協(xié)議, 很多協(xié)議有很多類似的地方, 也容易混淆. 本文來介紹一下兩種常見的通信協(xié)議之間的區(qū)別.
I2C 和 SPI 都是允許用戶進(jìn)行短距離串行數(shù)據(jù)傳輸?shù)目偩€協(xié)議. I2C 是飛利浦(現(xiàn)在的 NXP)制定的兩線通信, 而 SPI 是由摩托羅拉制定的. 這兩種協(xié)議通常用于智能手機(jī)、電視和筆記本電腦等電子設(shè)備, 以控制電源管理芯片、存儲設(shè)備、輸入設(shè)備等外圍設(shè)備.
什么是I2C?
I2C 是一種串行通信協(xié)議. 它為慢速設(shè)備提供了良好的支持, 例如 EEPROM、ADC 和 RTC 等. I2c 不僅可以用于單板, 還可以用于其他通過電纜與板連接的外部組件.
I2C 基本上是一種兩線通信協(xié)議. 它僅使用兩線進(jìn)行通信. 其中一根線用于數(shù)據(jù)(SDA), 另一根線用于時鐘(SCL).
在 I2C 中, 兩條總線都是雙向的, 這意味著主機(jī)能夠發(fā)送和接收來自從機(jī)的數(shù)據(jù). 時鐘總線由主機(jī)控制, 但在某些情況下, 從機(jī)也能夠抑制時鐘信號.
此外,I2C總線用于各種控制架構(gòu), 例如SMBus(系統(tǒng)管理總線)、PMBus(電源管理總線)、IPMI(智能平臺管理接口)等.
I2C通信協(xié)議的優(yōu)點
I2C協(xié)議有很多優(yōu)點, 讓用戶在很多應(yīng)用中不得不使用I2C協(xié)議. 下面是I2C的主要優(yōu)點:
- 它是同步通信協(xié)議, 因此主從不需要精確的振蕩器.
- 它只需要兩根線, 一根線用于數(shù)據(jù)(SDA), 另一根線用于時鐘(SCL).
- 它為用戶提供了根據(jù)要求選擇傳輸速率的靈活性.
- 在 I2C 總線中, 總線上的每個設(shè)備都可以獨(dú)立尋址.
- 它遵循主從關(guān)系.
- 它能夠處理 I2C 總線上的多個主機(jī)和多個從機(jī).
- I2C 具有一些重要的特性, 例如仲裁、時鐘同步和時鐘延長.
- I2C 提供 ACK/NACK(確認(rèn)/不確認(rèn))功能, 可幫助處理錯誤.
I2C 通信協(xié)議的缺點
I2C 協(xié)議有很多優(yōu)點, 但除此之外, I2C 也有一些限制:
- 由于開漏拓?fù)? 它比其他串行通信總線消耗更多的功率.
- 它僅適用于短距離.
- I2C 協(xié)議對從機(jī)的數(shù)量有一定的限制, 從機(jī)的數(shù)量取決于 I2C 總線的電容.
- 它只提供一些有限的通信速度, 如 100 kbit/s、400 kbit/s 等.
- 在 I2c 中, 設(shè)備可以設(shè)置它們的通信速度, 運(yùn)行速度較慢的設(shè)備可以延遲速度較快的設(shè)備的運(yùn)行.
什么是SPI?
串行外設(shè)接口是基于四線的全雙工通信協(xié)議, 這些線通常稱為 MOSI(主出從入)、MISO(主進(jìn)從出)、SCL(由主產(chǎn)生的串行時鐘)和 SS(從 選擇線, 用于在通信過程中選擇特定的從站).
SPI 遵循主從架構(gòu), 通信始終由主機(jī)啟動. 與 I2C 一樣, 它也是一種同步通信協(xié)議, 因為時鐘由主從共享.
SPI 只支持多從機(jī), 不支持多主機(jī), 從機(jī)由從機(jī)選擇信號選擇. 在 SPI 通信期間, 數(shù)據(jù)通過移位寄存器從主機(jī)移出, 反之亦然.
SPI通訊協(xié)議的優(yōu)點
- 沒有起始位和停止位, 因此數(shù)據(jù)可以不間斷地連續(xù)流式傳輸.
- 它支持全雙工.
- 從設(shè)備中不需要精密振蕩器, 因為它使用主時鐘.
- 沒有像 I2C 這樣復(fù)雜的從機(jī)尋址系統(tǒng).
- 比 I2C 更高的數(shù)據(jù)傳輸速率(幾乎是 I2C 的兩倍).
- 將 MISO 和 MOSI 線分開, 因此可以同時發(fā)送和接收數(shù)據(jù).
- 簡單的軟件實現(xiàn).
SPI通訊協(xié)議的缺點
- 如果通信中的從站不止一個, 那么接線會很復(fù)雜.
- 使用四根線(I2C 和 UART 使用兩根).
- 不確認(rèn)數(shù)據(jù)已成功接收(I2C 具有此功能).
- 沒有像 UART 中的奇偶校驗位那樣的錯誤檢查形式.
- 它只允許一個主機(jī).
在嵌入式系統(tǒng)中, I2C和SPI都扮演著重要的角色. 這兩種通信協(xié)議都是同步通信的例子, 但仍然有一些重要的區(qū)別. 在下表中, 我指出了 SPI 和I2C(SPI 與 I2C)之間的一些常見差異.
下表直觀的對I2C 和 SPI 進(jìn)行一個對比:
-
振蕩器
+關(guān)注
關(guān)注
28文章
3847瀏覽量
139364 -
電源管理
+關(guān)注
關(guān)注
115文章
6193瀏覽量
144952 -
SPI
+關(guān)注
關(guān)注
17文章
1722瀏覽量
92129 -
時鐘信號
+關(guān)注
關(guān)注
4文章
453瀏覽量
28666 -
I2C協(xié)議
+關(guān)注
關(guān)注
0文章
26瀏覽量
8528
發(fā)布評論請先 登錄
相關(guān)推薦
i2c通信協(xié)議
SPI、I2C、UART串行總線協(xié)議
spi與i2c總線協(xié)議的對比分析
I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)
![<b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>應(yīng)該如何學(xué)習(xí)](https://file.elecfans.com/web1/M00/BB/37/o4YBAF6n8-eAKCBVAABu7nGwVZk852.png)
分享一個單片機(jī)的I2C和SPI通信
![分享<b class='flag-5'>一</b>個單片機(jī)的<b class='flag-5'>I2C</b>和<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
i2c和spi通信協(xié)議的概念與區(qū)別 I2C/SPI總線通信協(xié)議你搞懂沒有
簡述UART、SPI、I2C協(xié)議區(qū)別
![簡述UART、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>區(qū)別</b>](https://file.elecfans.com/web2/M00/92/5C/pYYBAGPu6xeAeUHaAAAm-yGxSgI975.jpg)
一文搞懂UART、I2C、SPI協(xié)議
I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus
![<b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus](https://file1.elecfans.com/web2/M00/89/C6/wKgZomSKvsWAdY77AAA276SHfaM213.png)
評論