I2C協定
I2C(Inter-Integrated Circuit),唸做I-square-C,它是NXP(前身為飛利浦)開發的通訊協定,主要用來做為IC之間的通訊。
它的速度一般是100Kbit/s,有些是400Kbit/s,現在更有到1M bit/s與3.4Mbit/s,因此無法像Ethernet那麼快,所以不適合傳送大量資料。
但是它又比RS232快速,所以它非常適合拿來設定IC初始值,或是控制訊號的傳輸。由於I2C只用兩條線通訊SDA(data)/SCL(clock),因此空間超級省。
傳輸格式說明
- 傳輸內容 (啟始訊號之後) 的第一個 Byte 固定為晶片定址 (bit 7~1) 及讀寫命令 (bit 0).
- 讀寫命令: 0 為寫入, 1 為讀取.
- 晶片定址: 定址空間為 7 bits, 共 128 個地址, 但保留了 16 個地址作為系統擴充使用, 所以在一組 I2C 匯流排理論上可以連結多達 112 (128-16) 個節點. (可惜實際的情況不是這樣)
- 一般 I2C slave 晶片的地址是無法由使用者任意給定的, 而是每一種晶片的製造商經由向 Philips 註冊, 給定一個或者多個特定地址 (註冊是要錢的), 給定多組地址的晶片才可以經由晶片上的地址選擇接腳選定其中一個地址並可以連接多組晶片. 但是, 只給定一個地址的晶片在一組匯流排上就只能使用一組晶片, 想要連接多組這樣的晶片就必需要有多組 I2C 匯流排 (或者在匯流排加上 I2C Multiplexer/Switch 晶片)。