I²C(發音:I方C,在內核文檔中寫成I2C)是由Philips開發的協議。它是一個慢的兩線協議(變速,高達400khz),具有高速擴展(3.4 MHz)。它提供了一種廉價的總線,用於連接不頻繁或低帶寬通信需求的許多類型的設備。I2C廣泛應用於嵌入式系統。有些系統使用的變體不符合品牌要求,因此不被宣傳為I2C,而是在不同的名稱下,例如TWI(雙線接口)、IIC。
官方的I2C規范是NXP Semiconductors發布的“I2C總線規范和用戶手冊”(UM10204)。
SMBus (System Management Bus)基於I2C協議,主要是I2C協議和信令的子集。許多I2C設備將在SMBus上工作,但一些SMBus協議添加了超出I2C協議所需的語義。現代PC主板依賴於SMBus。最常見的通過SMBus連接的設備是使用I2C eeprom配置的RAM模塊和硬件監控芯片。
因為SMBus主要是通用I2C總線的子集,所以我們可以在許多I2C系統上使用它的協議。然而,有些系統不滿足SMBus和I2C電氣約束;以及其他系統不能實現所有通用SMBus協議語義或消息的協議。
術語
使用官方文檔中的術語,I2C總線連接一個或多個主芯片和一個或多個從芯片。
簡單的I2C總線
master 芯片是開始與從芯片通信的節點。在Linux內核實現中,它被稱為 adapter 或總線。適配器驅動程序位於drivers/i2c/busses/子目錄中。
algorithm 包含可用於實現整個I2C適配器(adapters)類的通用代碼。每個特定的適配器驅動程序要么依賴於drivers/i2c/algos/子目錄中的算法驅動程序,要么包含它自己的實現。
slave 芯片是在主芯片尋址時響應通信的節點。在Linux中,它被稱為 client(客戶端)。客戶端驅動程序被保存在一個特定於它們所提供的特性的目錄中,例如用於gpio擴展程序的drivers/media/gpio/以及用於視頻相關芯片的drivers/media/i2c/。
對於圖中的示例配置,您將需要I2C適配器的驅動程序 和 I2C設備的驅動程序(通常每個設備有一個驅動程序)。