I 2 C 也經(jīng)常拼寫為 I2C,并且(很少)擴展為完整的“內(nèi)部集成電路”綽號,是飛利浦半導(dǎo)體(現(xiàn)為 NXP)于 1982 年發(fā)明的設(shè)備到設(shè)備通信協(xié)議。
從那時起,I2C 一直用于計算設(shè)備及其外圍設(shè)備之間的通信,并且自 2006 年 10 月 6 日起,它可以免費實施,無需支付任何許可費用。
該系統(tǒng)使用起來非常簡單,只需要兩個或多個設(shè)備之間的 SDA(串行數(shù)據(jù))和 SCL(串行)時鐘線,以及一個上拉電阻器以保持線路正常高電平。在最基本的用法中,您可能有一個 I2C 設(shè)備,例如 Arduino 板,充當主設(shè)備(控制器),而單個從設(shè)備(外圍設(shè)備)設(shè)置為在發(fā)出請求時發(fā)出信號甚至發(fā)回數(shù)據(jù)。
我已經(jīng)在許多設(shè)置中使用此接口進行基本的一對一通信——例如我的JC Pro Macro 計算機輸入設(shè)備上的顯示——但實際上大量設(shè)備可以使用單個總線來傳遞消息。 該協(xié)議包括一個尋址字節(jié),隨后傳輸附加數(shù)據(jù)。128 個設(shè)備通常可以通過 7 個尋址位來訪問,因為第 8 位用于指示是否要啟動讀取或?qū)懭氩僮鳌?/p>
這是對協(xié)議工作原理的非常詳細的介紹,如果您想深入了解,TI 在此處更深入地解釋了詳細信息。通過 i2c-bus.org還可以獲得大量信息。從概念的角度來看,這是一項有趣的技術(shù),但如果您只是想讓事情正常運行,好消息是使用它的許多細節(jié)都可以通過預(yù)先編寫的庫來處理。
為什么選擇 I2C?
如前所述,I2C 的最大優(yōu)勢在于其接線簡單,同時仍允許在多個設(shè)備之間進行通信。另一種選擇是 SPI,它速度更快,能夠進行一對多傳輸,但需要四根線。RS-232 就其本身而言,甚至比 I2C 更簡單,因為它不需要上拉電阻,但只能進行一對一通信。值得注意的是,許多 I2C 設(shè)備已經(jīng)包含上拉電阻,因此在這種情況下,您甚至不必添加額外的組件。
人們可能還聽說過TWI(雙線接口)和SMBus(系統(tǒng)管理總線)這兩個術(shù)語,它們都是 I2C 的子集。I2C 橫幅中還有多種樣式,具有不同的功能,包括 8 位和 10 位尋址方案以及從 100kbit/s 到 3.2Mbit/s 的時鐘速度。好消息是,經(jīng)過 39 年的開發(fā)和標準化,如果你有一個類似 I2C 的設(shè)備,并且你把它扔到總線上,它很有可能會工作。在基于 Arduino 的系統(tǒng)的上下文中,傳輸是通過預(yù)定義引腳上的Wire 庫處理的,這使得這更加簡單。
Arduino I2C 示例
如上圖所示,JC Pro Macro 2可以在其 I2C 引腳上安裝 OLED 顯示器以獲取用戶反饋,這些引腳從其“Arduino” Pro 微控制器上的引腳 2 (SDA) 和 3 (SCL) 斷開。此處的設(shè)置主要是從 Adafruit ssd1306 庫示例中復(fù)制/粘貼的。我設(shè)計了這個設(shè)備,我必須做的一個更改是將第 36 行從 0x3D 更改為 0x3C,因為我使用的 eBay 購買的屏幕地址與Adafruit 銷售的不同。
在研究本文時,我將 Adafruit 示例代碼(地址更改)直接加載到控制我的鍵盤的 Pro Micro 上。沒有任何進一步的修改,它開始在屏幕上顯示 Adafruit 示例。請注意,上面顯示的代碼中的第 35 行不是問題,即使我沒有連接復(fù)位引腳。不管是不是這個結(jié)果,在開發(fā)板重置后似乎確實需要一段時間才能重新開始工作,但這通常不是什么大問題。如前所述,如果您的地址正確,一切似乎都可以正常工作。
I2C 掃描儀:輕松獲取正確的 I2C 地址
如果您沒有正確的地址,一切都不會丟失,并且您不必在在線論壇上閑逛和/或猜測。使用這款 Arduino I2C 掃描儀實際上很容易找到。要安裝,只需在 Arduino IDE 庫管理器中搜索i2c 掃描儀。將執(zhí)行示例代碼加載到您的開發(fā)板上并打開您的串行監(jiān)視器。如果您有任何 I2C 設(shè)備連接到您的 Arduino,它們的地址將通過串行監(jiān)視器顯示。這是一個肯定可以節(jié)省大量挫敗感的工具!
可以用了!
雖然這個簡短的概述應(yīng)該讓您開始您的 I2C 之旅,但仍有大量的設(shè)備和技術(shù)可供探索。I2C 是一種在設(shè)備與設(shè)備之間以合理速度進行通信的好方法,適用于許多應(yīng)用程序,同時使用最少的 GPIO 引腳。
審核編輯:郭婷
-
顯示器
+關(guān)注
關(guān)注
21文章
5018瀏覽量
140475 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5139瀏覽量
98369 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187996
發(fā)布評論請先 登錄
相關(guān)推薦
請問ADS1247和單片機接口最少可以用幾根線完成?
多設(shè)備協(xié)議采集平臺加網(wǎng)關(guān)如何打造物聯(lián)網(wǎng)系統(tǒng)
多線示波器的原理和應(yīng)用領(lǐng)域
ADS129x無法與設(shè)備正確通信的原因?
串口通信設(shè)備連接方法 串口通信在嵌入式開發(fā)中的應(yīng)用
輸出電壓諧波含量最少的是什么電路
mipi顯示器接口多少引腳
多播通信的核心技術(shù)和IP地址管理
PLC如何與其他設(shè)備進行通信
北斗通信指揮終端設(shè)備
![北斗<b class='flag-5'>通信</b>指揮終端<b class='flag-5'>設(shè)備</b>](https://file1.elecfans.com/web2/M00/C6/47/wKgaomX85ceACr8GAAA0CnvmW7A763.png)
![](https://file1.elecfans.com/web2/M00/E8/8E/wKgaomZMWXmAK_a_AARg1x3blAE050.png)
USB轉(zhuǎn)多協(xié)議串口通信
![USB轉(zhuǎn)<b class='flag-5'>多</b>協(xié)議串口<b class='flag-5'>通信</b>](https://file1.elecfans.com/web2/M00/DE/62/wKgZomYvWMyAaAIGAAIBUb1ByTE086.jpg)
評論