|

【實作實驗室】晶片溝通的橋樑 — I2C協定原理簡介

   
作者:實作派

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註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

StrongPiLab

Author: StrongPiLab

實作派電子實驗室(StrongPiLab)是一個著重知識與經驗的實作交流媒體,提供工程師們理論外的實務經驗,主要傳達電子產品與家電用品的正確操作概念與生活小常識、解說各種測試手法的技巧。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *