在與ECU或者嵌入式相關(guān)的工作中, 我們肯定會(huì)接觸到各種通信協(xié)議, 很多協(xié)議有很多類似的地方, 也容易混淆. 本文來(lái)介紹一下兩種常見的通信協(xié)議之間的區(qū)別.
I2C 和 SPI 都是允許用戶進(jìn)行短距離串行數(shù)據(jù)傳輸?shù)目偩€協(xié)議. I2C 是飛利浦(現(xiàn)在的 NXP)制定的兩線通信, 而 SPI 是由摩托羅拉制定的. 這兩種協(xié)議通常用于智能手機(jī)、電視和筆記本電腦等電子設(shè)備, 以控制電源管理芯片、存儲(chǔ)設(shè)備、輸入設(shè)備等外圍設(shè)備.
什么是I2C?
I2C 是一種串行通信協(xié)議. 它為慢速設(shè)備提供了良好的支持, 例如 EEPROM、ADC 和 RTC 等. I2c 不僅可以用于單板, 還可以用于其他通過電纜與板連接的外部組件.
I2C 基本上是一種兩線通信協(xié)議. 它僅使用兩線進(jìn)行通信. 其中一根線用于數(shù)據(jù)(SDA), 另一根線用于時(shí)鐘(SCL).
在 I2C 中, 兩條總線都是雙向的, 這意味著主機(jī)能夠發(fā)送和接收來(lái)自從機(jī)的數(shù)據(jù). 時(shí)鐘總線由主機(jī)控制, 但在某些情況下, 從機(jī)也能夠抑制時(shí)鐘信號(hào).
此外,I2C總線用于各種控制架構(gòu), 例如SMBus(系統(tǒng)管理總線)、PMBus(電源管理總線)、IPMI(智能平臺(tái)管理接口)等.
I2C通信協(xié)議的優(yōu)點(diǎn)
I2C協(xié)議有很多優(yōu)點(diǎn), 讓用戶在很多應(yīng)用中不得不使用I2C協(xié)議. 下面是I2C的主要優(yōu)點(diǎn):
- 它是同步通信協(xié)議, 因此主從不需要精確的振蕩器.
- 它只需要兩根線, 一根線用于數(shù)據(jù)(SDA), 另一根線用于時(shí)鐘(SCL).
- 它為用戶提供了根據(jù)要求選擇傳輸速率的靈活性.
- 在 I2C 總線中, 總線上的每個(gè)設(shè)備都可以獨(dú)立尋址.
- 它遵循主從關(guān)系.
- 它能夠處理 I2C 總線上的多個(gè)主機(jī)和多個(gè)從機(jī).
- I2C 具有一些重要的特性, 例如仲裁、時(shí)鐘同步和時(shí)鐘延長(zhǎng).
- I2C 提供 ACK/NACK(確認(rèn)/不確認(rèn))功能, 可幫助處理錯(cuò)誤.
I2C 通信協(xié)議的缺點(diǎn)
I2C 協(xié)議有很多優(yōu)點(diǎn), 但除此之外, I2C 也有一些限制:
- 由于開漏拓?fù)? 它比其他串行通信總線消耗更多的功率.
- 它僅適用于短距離.
- I2C 協(xié)議對(duì)從機(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)生的串行時(shí)鐘)和 SS(從 選擇線, 用于在通信過程中選擇特定的從站).
SPI 遵循主從架構(gòu), 通信始終由主機(jī)啟動(dòng). 與 I2C 一樣, 它也是一種同步通信協(xié)議, 因?yàn)闀r(shí)鐘由主從共享.
SPI 只支持多從機(jī), 不支持多主機(jī), 從機(jī)由從機(jī)選擇信號(hào)選擇. 在 SPI 通信期間, 數(shù)據(jù)通過移位寄存器從主機(jī)移出, 反之亦然.
SPI通訊協(xié)議的優(yōu)點(diǎn)
- 沒有起始位和停止位, 因此數(shù)據(jù)可以不間斷地連續(xù)流式傳輸.
- 它支持全雙工.
- 從設(shè)備中不需要精密振蕩器, 因?yàn)樗褂弥鲿r(shí)鐘.
- 沒有像 I2C 這樣復(fù)雜的從機(jī)尋址系統(tǒng).
- 比 I2C 更高的數(shù)據(jù)傳輸速率(幾乎是 I2C 的兩倍).
- 將 MISO 和 MOSI 線分開, 因此可以同時(shí)發(fā)送和接收數(shù)據(jù).
- 簡(jiǎn)單的軟件實(shí)現(xiàn).
SPI通訊協(xié)議的缺點(diǎn)
- 如果通信中的從站不止一個(gè), 那么接線會(huì)很復(fù)雜.
- 使用四根線(I2C 和 UART 使用兩根).
- 不確認(rèn)數(shù)據(jù)已成功接收(I2C 具有此功能).
- 沒有像 UART 中的奇偶校驗(yàn)位那樣的錯(cuò)誤檢查形式.
- 它只允許一個(gè)主機(jī).
在嵌入式系統(tǒng)中, I2C和SPI都扮演著重要的角色. 這兩種通信協(xié)議都是同步通信的例子, 但仍然有一些重要的區(qū)別. 在下表中, 我指出了 SPI 和I2C(SPI 與 I2C)之間的一些常見差異.
下表直觀的對(duì)I2C 和 SPI 進(jìn)行一個(gè)對(duì)比:
-
振蕩器
+關(guān)注
關(guān)注
28文章
3832瀏覽量
139099 -
電源管理
+關(guān)注
關(guān)注
115文章
6183瀏覽量
144510 -
SPI
+關(guān)注
關(guān)注
17文章
1706瀏覽量
91598 -
時(shí)鐘信號(hào)
+關(guān)注
關(guān)注
4文章
448瀏覽量
28568 -
I2C協(xié)議
+關(guān)注
關(guān)注
0文章
26瀏覽量
8475
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論