I2C(Inter-Integrated Circuit),唸做 I-square-C,它是 NXP(前身為飛利浦)開發的通訊協定,主要用來作為 IC 之間的通訊。它的速度一般是 100 Kbit/s,也有些是 400 Kbit/s,現在更有到 1 Mbit/s 與 3.4 Mbit/s 的,但仍然無法像 Ethernet 那麼快,所以不適合用來傳送大量資料,不過非常適合拿來設定 IC 初始值,或是 IC 之間的控制訊號傳輸。
由於 I2C 只用兩條線通訊 SDA(data)/SCL(clock),因此空間超級省,那什麼東西最常用到 I2C 呢?一般就是小型 IC,例如 Serial EEPROM/ Tuner/ Demodulator/ MCU/ ADC 等。I2C 是 master/slave 架構,代表一個系統內通常只能有一個 master,其他裝置只能當 slave(這邊說「通常」是因為 spec 裡面有寫它可以 multimaster,但是實務上我遇到的都只有一個 master 配多個 slave,所以這邊只討論 single master)。
I2C 如何傳資料
I2C 是序列式的傳輸,只有兩條線,一條叫做 SDA, 專門用來送資料,另一條叫做 SCL,是用來傳 clock。資料格式如下圖,依序是由 start condition 開始、傳資料,最後 stop condition 結束(所謂 start condition 就是這兩條線某種狀態的組合可以拿來認定為傳輸的開始)。
I2C 的時序圖,依據 Start-Data-Stop 傳送資料(圖片來源:UM10204 I2C-bus specification and user manual)
上圖最左邊是 Start condition:SCL=high + SDA falling,最右邊是 Stop condition:SCL=high + SDA raising,至於中間的資料,它是以 8+1 bit 為一組來傳送的,意思是說 8 bit data 外加 1 bit 的 Acknowledge。ACK 是 slave 用來回應 master 用的,表示已經收到資料了,其中 clock 的 positive pulse 必須完整包含在 bit data 之內。
以上就是 I2C 在 physical layer 的資料傳送說明,那一般 IC 如何應用它呢?我們來看看下面的例子。
I2C protocol 應用實例說明
這是一顆 EEPROM 的 I2C 使用說明,敘述這顆 IC 如何利用 I2C 來與外界溝通:
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏